rootfs中的Yocto helloword食谱

时间:2019-07-17 09:31:47

标签: yocto

我在手册中创建了一个新的食谱“ helloworld”示例。 我正在使用imx6sx处理器,因此在meta-freescale-3rdparty文件夹中将其创建为recipes-helloword,并检查此层是否已添加到bblayer.conf中。可以使用bitbake helloworld进行编译,没有错误,并且它存在于rpm文件夹中。之后,该图像再次使用bitbake fsl-image-qt5-validation-imx进行编译,并生成了一个新的rootfs和sdcard文件。

但是,我在rootfs中找不到该应用程序。 rootfs中的应用程序在哪里? (该食谱已插入local.conf中:IMAGE_INSTALL_append =“ helloworld”)

./recipes-helloworld/
└── helloworld
    ├── helloworld
    │   ├── COPYING
    │   └── helloworld.c
    └── helloworld_0.0.bb

2 directories, 3 files

helloworld_0.0.bb

SUMMARY = "Hello World Cpp App Sources"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PV = "1.5"

TARGET_CC_ARCH += "${LDFLAGS}"
SRC_URI = "file://helloworld.c"

S= "${WORKDIR}"

do_compile() {
    ${CC} helloworld.c -o helloworld
}
do_install() {
    install -d ${D}${bindir}
    install -m 0755 helloworld ${D}${bindir}
}

2 个答案:

答案 0 :(得分:0)

您能否检查图像的构建清单以查看helloworld是否在其中:

{build_folder}/tmp/deploy/licenses/{image_name + last_timestamp}/package.manifest

如果在那里,您应该在/usr/bin/helloworld中找到helloworld

如果不是,则说明helloworld软件包未包含在图像中。

答案 1 :(得分:0)

可以检查“ helloword”程序包中的“ helloword”应用程序吗?表示它已构建并放在/ usr / bin中。如果它在映像目录中可用,则表示此二进制文件已作为helloword软件包的一部分安装到rootfs中。

(build_dir)/tmp/work/***/hello word/***/image/usr/bin

如果可用,则表示正在构建helloword软件包并创建二进制文件,并将其安装在/ usr / bin中并计划放入rootfs。

由于您已经将包作为IMAGE_INSTALL_append添加在local.conf中,因此应将其构建为目标的一部分。

如果仍然无法使用,请在食谱中添加以下行

FILES _ $ {PN} + =“ $ {bindir} / helloword”

然后尝试重建'helloword'和最终的traget,并检查rootfs中是否提供了二进制文件。