openembedded - Hello World Bitbake 食谱未安装在镜像中

标签 openembedded bitbake

我正在使用 OpenEmbedded User Manual 中的“Hello World”示例以及 Yocto 项目工具的 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
}
<小时/>

当我查看工作目录时,我看到可执行文件已构建以及生成的包文件。日志文件中没有任何内容表明(对于我这个新手来说)安装没有发生的原因。食谱有问题吗?或者我可以检查一些东西来解决这个问题?

最佳答案

嗯,看来您成功构建了 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 了解具体信息。

希望这有帮助。

关于openembedded - Hello World Bitbake 食谱未安装在镜像中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22846384/

相关文章:

git - 如何从 BitBake 配方中克隆私有(private) git 仓库?

linux-kernel - yocto 项目中的 U-boot 源码

yocto - 当没有许可证文件时如何处理LICENSE字段?

c - 为 ARM 编译 Kernel-aodv 时出错

deb - 我可以在 BitBake 构建期间安装 .deb 吗?

linux - 在 Yocto 构建期间使用 Linux setcap 命令设置功能

yocto - Yocto 中的共享状态缓存如何工作?

git - 在 Ubuntu 16.04 中使用 bitbake 构建 yocto 时如何使用私有(private) git repo?

linux - Yocto - 尝试使用实时内核版本