未在映像中安装Hello World Bitbake食谱

Gra*_*ral 1 openembedded bitbake

我正在使用OpenEmbedded用户手册中的“ Hello World”示例以及Yocto Project工具的Dora版本。bitbake构建工作正常,但是未在映像中安装可执行文件。基本上,我用两个配方创建了自己的meta层。一种是Autotools版本的“ Hello World”,它将自身构建并安装到映像中。第二个是“ Hello World”的Makefile版本。这就是我遇到的麻烦。

来源是您所期望的:


#include <stdio.h>

int main(int argc, char** argv)
{
    printf("Hello world 2!\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

还有一个README.txt文件:


Readme file for Hello World 2.
Run Code Online (Sandbox Code Playgroud)

配方如下:


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
}
Run Code Online (Sandbox Code Playgroud)

当我查看工作目录时,我看到可执行文件已生成并生成了打包文件。日志文件中没有任何内容指示(对我来说,是新手)为什么未进行安装。食谱有什么问题吗?或者我可以检查一下以解决问题吗?

cha*_*nan 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了解详细信息。

希望这可以帮助。