我正在使用OpenEmbedded User Manual中的“Hello World”示例和Yocto Project工具的Dora版本。 bitbake构建工作正常,但可执行文件未安装在映像中。基本上我用两个receipes创建了我自己的元图层。一个是Autotools版本的“Hello World”,它可以构建并安装到图像中。第二个是Makefile版本的“Hello World”。这就是我遇到的麻烦。
源代码正如您所料:
#include <stdio.h>
int main(int argc, char** argv)
{
printf("Hello world 2!\n");
return 0;
}
还有一个README.txt文件:
Readme file for Hello World 2.
配方如下:
DESCRIPTION = "Hello World 2 Program"
PR = "r0"
LICENSE = "CLOSED"
RM_WORK_EXCLUDE += "hello2"
SRC_URI = "file://hello2.c \
file://README.txt"
do_compile() {
${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/hello2.c -o hello2
}
do_install() {
install -m 0755 -d ${D}${bindir} ${D}${docdir}/hello2
install -m 0644 ${S}/hello2 ${D}${bindir}
install -m 0644 ${WORKDIR}/README.txt ${D}${docdir}/hello2
}
当我查看工作目录时,我看到已构建可执行文件以及生成的包文件。日志文件中没有任何内容表明(对我来说,新手)为什么安装没有发生。配方有什么问题,或者我可以检查一下这个问题吗?
答案 0 :(得分:5)
好吧,您似乎成功构建了hello world演示,并且正如您所指出的那样,您在WORKDIR中找到了这些文件。但这都是包装配方的确如此。它构建了一个包。您需要告诉您的图像配方在最终图像中包含新包。您可以“欺骗”并将这些指令放入local.conf文件中,使用类似:
IMAGE_INSTALL_append + =“你好”
但请注意,只有在使用基于image.bbclass的标准图像配方时,此技术才有效。
更好的是,修改您在自己创建的自定义图层中使用的图像配方,并在图像中添加包.bbappend。
例如,如果您使用的是core-image-base,请创建自己的自定义图层并在该图层中创建core-image-base.bbappend,并在该bbappend内添加新创建的“hello”的依赖项包。
元数据中有很多例子。查看core-image-base.bb和image.bbclass,了解如何创建图像的线索。查看任何packagegroup-core * .bb,了解如何将“hello”世界指定为运行时依赖项的示例,以便将包安装在映像中。
另请注意,Yocto项目有一个邮件列表,上面有很多友好的人,很乐意回答你的问题。 freenode.net上还有#yocto和#oe。查看yoctoproject.org了解具体信息。
希望这有帮助。