我正在尝试通过 yocto 启用对 am62xx-evm 机器的支持。这是我的食谱:
`SUMMARY = "QEMU for aarch64 architecture"
DESCRIPTION = "QEMU for emulating the aarch64 architecture, fetched from upstream Git."
LICENSE = "GPLv2 & LGPLv2.1"
LIC_FILES_CHKSUM = "file://LICENSE;md5=6541297aed25bfd5e8d893ea097e838c"
SRC_URI = "git://gitlab.com/qemu-project/qemu.git;protocol=https"
SRC_URI += "file:///home/jenkins/dev/mkonov/dtc/dtc"
SRCREV = "134b443512825bed401b6e141447b8cdc22d2efe"
DEPENDS = "flex-native bison-native meson pkgconfig pkgconfig-native glib-2.0 libftdi pixman zlib ninja-native"
S = "${WORKDIR}/git"
do_configure() {
./configure
}
do_compile() {
oe_runmake
}
do_install() {
install -d ${D}${bindir}
instal
l -m 0755 qemu-system-aarch64 ${D}${bindir}/qemu-system-aarch64
}`
如您所见,我希望它在 qemu 中运行配置脚本。
我得到的错误是在它完成执行子项目keycodemapdb之后,如下所示:
|执行子项目keycodemapdb | |键码映射数据库|项目名称:keycodemapdb |键码映射数据库|项目版本:未定义 |键码映射数据库|找到程序工具/keymap-gen:是(/home/jenkins/dev/yocto/poky/qemu_build/tmp/work/aarch64-poky-linux/qemu-system-aarch64-recipe/1.0-r0/git/subprojects/keycodemapdb /工具/键盘映射生成) |键码映射数据库|项目中的构建目标:349 |键码映射数据库|子项目keycodemapdb完成。 | |发现程序脚本/decodetree.py:是(/home/jenkins/dev/yocto/poky/qemu_build/tmp/work/aarch64-poky-linux/qemu-system-aarch64-recipe/1.0-r0/git/build/pyvenv /bin/python3 /home/jenkins/dev/yocto/poky/qemu_build/tmp/work/aarch64-poky-linux/qemu-system-aarch64-recipe/1.0-r0/git/scripts/decodetree.py) | | ../target/hexagon/meson.build:29:16:错误:“target/hexagon/gen_semantics.c”没有构建机器编译器 | |完整日志可以在 /home/jenkins/dev/yocto/poky/qemu_build/tmp/work/aarch64-poky-linux/qemu-system-aarch64-recipe/1.0-r0/git/build/meson-logs/ 找到介子日志.txt | |错误:介子设置失败 | |警告:从 shell 命令中退出代码 1。 错误:任务(/home/jenkins/dev/yocto/poky/meta-tisdk-qemu/recipes-core/qemu-system-aarch64-recipe/qemu-system-aarch64-recipe.bb:do_configure)失败,退出代码' 1'
我尝试将 gcc、g++、cmake、make、bison、flex 添加到依赖项中,但它没有任何改变。我找到了 gen_semantics.c 文件 - https://gricad-gitlab.univ-grenoble-alpes.fr/michelse/qemu/-/blob/master/target/hexagon/gen_semantics.c?ref_type=heads 但它没有给我任何信息
来自介子的错误信息是
No build machine compiler for 'target/hexagon/gen_semantics.c'
这意味着您构建 QEMU 的环境缺少针对该主机架构的 C 编译器(通常是 x86 编译器)。请注意,这与针对最终目标架构的 C 编译器(可能是交叉编译器)不同。
也就是说,错误消息是针对您似乎不关心的 QEMU 的一部分,您也可以通过告诉configure 仅构建您真正关心的内容来避免它,而不是默认的“构建一切可能”。
如果您只关心构建 qemu-system-aarch64 您可以通过配置选项
--target-list=aarch64-softmmu
。这将使其构建速度更快,因为它不会构建所有可能的来宾架构。特别是它不会尝试构建六边形,因此可能会避免您所看到的问题。