2

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

来源如你所料:


#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
}

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

4

1 回答 1

6

好吧,您似乎成功地构建了 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 了解详情。

希望这可以帮助。

于 2014-04-03T22:26:11.477 回答