我一直在使用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:重命名配方并删除版本字符串也解决了这个问题。再说一次,从长远来看,这似乎并不理想。
发布于 2017-04-06 14:12:00
1.将配方名称重命名为hello_0.1.bb
2.最后只添加下面一行:
FILES_${PN} = "${bindir}/*" Abvoe行帮助您将二进制文件复制到rootfs。
发布于 2016-11-03 04:38:16
好的,经过进一步的测试,我发现这是一个食谱的命名问题。
它被命名为helloworld-0.0.1.bb (与我放在一起的其他食谱的格式相同,促使我尝试这个简单的测试)。
如果其他任何人遇到此问题,只需将“-”替换为“_”即可解决此问题。
https://stackoverflow.com/questions/40368710
复制相似问题