在生成根fs

时间:2016-11-01 21:12:13

标签: yocto

我一直在使用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: 重命名配方并删除版本字符串也可以解决问题。再一次,这似乎不是长期理想的。

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(与我一起编写的其他食谱相同的格式驱使我尝试这个简单的测试)。

如果有其他人遇到这个,只需更换' - '用' _'解决了这个问题。