Hello World Bitbake Recipe未安装在图像中

时间:2014-04-03 18:49:36

标签: openembedded bitbake

我正在使用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
}

当我查看工作目录时,我看到已构建可执行文件以及生成的包文件。日志文件中没有任何内容表明(对我来说,新手)为什么安装没有发生。配方有什么问题,或者我可以检查一下这个问题吗?

1 个答案:

答案 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了解具体信息。

希望这有帮助。