我正在尝试从源代码编译 qemu,以便亲身体验其开发过程。我从以下位置克隆了软件包:存储库。我提取了 tarball 并开始使用配置
./configure
当我收到以下错误时:
ERROR: DTC (libfdt) not present. Your options:
(1) Preferred: Install the DTC (libfdt) devel package
(2) Fetch the DTC submodule, using:
git submodule update --init dtc
我尝试使用安装 libfdt sudo apt-get install libfdt-dev
,但这并不能解决错误。
我曾经看到过类似的问题,但这也无法解决我遇到的错误:
我该如何修复此错误才能成功从源代码编译 qemu?
编辑:
当我仍在 qemu 包的目录中执行git submodule update --init dtc
时返回以下错误:
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
答案1
要修复此问题:
克隆自它的存储库并将 tarball 提取到
qemu/dtc/
。使用以下方法从源代码编译 dtc
make
./configure
在目录中使用时重新开始配置 qemuqemu
。
问题是 qemu 尝试在 中搜索 dtc 二进制文件qemu/dtc
。即使您已使用 安装了 dtc sudo apt-get install device-tree-compiler
,您仍会收到上述错误(问题中提到),因此您可能需要 中的二进制文件qemu/dtc
。
答案2
从错误中:
ERROR: DTC (libfdt) not present. Your options:
(1) Preferred: Install the DTC (libfdt) devel package
(2) Fetch the DTC submodule, using:
git submodule update --init dtc
参见项目 (2):使用 git submodule update --init dtc
尝试从 git 获取 qemu 源代码:
# git clone git://git.qemu.org/qemu.git
# cd qemu
# git submodule init
# git submodule update --recursive
# git submodule status --recursive
65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf dtc (v1.4.0)
87eea99e443b389c978cf37efc52788bf03a0ee0 pixman (pixman-0.32.6)
b4c93802a5b2c72f096649c497ec9ff5708e4456 roms/SLOF (qemu-slof-20141202-63-gb4c9380)
4e03af8ec2d497e725566a91fd5c19dd604c18a6 roms/ipxe (v1.0.0-2016-g4e03af8)
3caee1794ac3f742315823d8447d21f33ce019e9 roms/openbios (3caee17)
c559da7c8eec5e45ef1f67978827af6f0b9546f5 roms/openhackware (heads/master)
c87a92639b28ac42bc8f6c67443543b405dc479b roms/qemu-palcode (heads/master)
33fbe13a3e2a01e0ba1087a8feed801a0451db21 roms/seabios (rel-1.8.2)
23d474943dcd55d0550a3d20b3d30e9040a4f15b roms/sgabios (heads/master)
2072e7262965bb48d7fffb1e283101e6ed8b21a8 roms/u-boot (v2014.07-rc1-79-g2072e72)
19ea12c230ded95928ecaef0db47a82231c2e485 roms/vgabios (heads/master)
之后您可以调用./configure。