我一直在使用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: 重命名配方并删除版本字符串也可以解决问题。再一次,这似乎不是长期理想的。
答案 0 :(得分:1)
1.将您的食谱名称重命名为hello-0.1.bb至hello_0.1.bb
2.最后添加以下行:
FILES_${PN} = "${bindir}/*"
Abvoe line可帮助您将二进制文件复制到rootfs。
答案 1 :(得分:0)
好的,经过一些进一步的测试后,我发现这是配方的命名问题。
它被命名为helloworld-0.0.1.bb(与我一起编写的其他食谱相同的格式驱使我尝试这个简单的测试)。
如果有其他人遇到这个,只需更换' - '用' _'解决了这个问题。