【发布时间】:2016-11-01 21:12:13
【问题描述】:
我一直在使用 Yocto 为 ARM 板创建 Linux 版本。
我一直在手动交叉编译附加应用程序。现在我们需要一个很好的集成构建,所以我开始向 yocto 添加自定义食谱。
我一直在为 ARM 构建而苦苦挣扎(使用相同代码的 x86 构建似乎很好)。
即使是从开发手册中剪切和粘贴的基本“hello world”也不起作用 (http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#new-recipe-writing-a-new-recipe)
配方如下:
SUMMARY = "Simple helloworld application"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
RPROVIDES_${PN} = "helloworld"
FILES_${PN} += "${bindir}"
SRC_URI = "file://helloworld.c"
S = "${WORKDIR}"
do_compile() {
${CC} helloworld.c -o helloworld ${LDFLAGS}
}
do_install() {
install -d ${D}${bindir}
install -m 0755 helloworld ${D}${bindir}
}
这是错误:
ERROR: helloworld not found in the base feeds (smarc_samx6i cortexa9t2hf-vfp-neon-mx6qdl cortexa9hf-vfp-neon-mx6qdl cortexa9t2hf-vfp-neon cortexa9t2hf-vfp cortexa9hf-vfp-neon cortexa9hf-vfp armv7at2hf-vfp-neon armv7ahf-vfp-neon armv7at2hf-vfp armv7ahf-vfp armv6thf-vfp armv6hf-vfp armv5tehf-vfp armv5ehf-vfp armv5thf-vfp armv5hf-vfp noarch any all).
ERROR: Function failed: do_rootfs
关于什么会导致此错误的任何建议?
包确实构建正确;这个问题似乎与为 rootfs 找到它是孤立的。
谢谢!
编辑: 我有一个似乎可行的解决方案,尽管从长远来看它并不理想。
将 IMAGE_INSTALL 下的软件包名称从 helloworld 更改为 helloworld-0.0.1 可解决此问题。显然,我宁愿不在顶级配方中对每个包的版本进行硬编码,而其他包不需要这个,所以希望有另一种解决方案。
编辑 2: 重命名配方并删除版本字符串也可以解决问题。再一次,从长远来看,这似乎并不理想。
【问题讨论】:
-
你的食谱存储在哪里(哪个目录),它的文件名如何?
-
我在源代码中创建了一个“元测试”位置,并在其下创建了一个“食谱测试”位置。有一个用于元测试的 layers.conf。
-
您是否将
meta-test添加到 bblayers.conf 中? -
是的,它包含在 bblayers.conf 文件中。作为一个快速测试,如果它被删除,我得到一个错误,没有提供包。添加回来消除了这一点。
-
我应该指出我可以成功地将构建包安装到目标机器上。问题与构建图像无关。
标签: yocto