无法使用 bitbake 将 C 文件添加到 Yocto 层

Cannot add C file to Yocto Layer using bitbake

我有一个 C 文件二进制文件要添加为 yocto 中的自定义层和 qemu 中的 运行。我使用 bitbake-layers create-layer meta-custLayer 创建图层并使用 bitbake-layers add-layer meta-custLayer 添加。 meta-custLayer 的文件树如下:

example_0.1.bb 文件具有以下内容:

SUMMARY = "bitbake-layers recipe"
DESCRIPTION = "Recipe created by bitbake-layers"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://threading.c"

S = "${WORKDIR}"
TARGET_CC_ARCH += "${LDFLAGS}"

do_compile(){
    $(CC) threading.c -o threads -lpthreads
}


do_install(){
    install -d ${D}${bindir}
    install -m 0755 threads
${D}${bindir}s
}

当执行命令bitbake example时,这是输出:

ERROR: example-0.1-r0 do_compile: Execution of '/home/sajil/edm_yocto/sources/poky/build/tmp/work/core2-64-poky-linux/example/0.1-r0/temp/run.do_compile.1806553' failed with exit code 127:
/home/sajil/edm_yocto/sources/poky/build/tmp/work/core2-64-poky-linux/example/0.1-r0/temp/run.do_compile.1806553: 99: CC: not found
/home/sajil/edm_yocto/sources/poky/build/tmp/work/core2-64-poky-linux/example/0.1-r0/temp/run.do_compile.1806553: 99: threading.c: not found
WARNING: exit code 127 from a shell command.

当执行 bitbake core-image-minimal 时,终端显示 threads 不可构建并且 运行s 进入错误:

ERROR: Nothing RPROVIDES 'threads' (but /home/sajil/edm_yocto/sources/poky/meta/recipes-core/images/core-image-minimal.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'threads' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['threads']
ERROR: Required build target 'core-image-minimal' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-minimal', 'threads']

我检查了自定义层目录的路径,是正确的。我对我面临的错误一无所知。

现在我的任务是 运行 QEMU 上的 C 文件(将其添加为一个层)。我无法构建相同的图像。

我希望得到一些帮助和见解!

你的食谱有多个问题:

  • 您的 do_compile 命令没有指明在哪里可以找到您的 .c 文件
  • 您应该使用 ${CC} 而不是 $(CC)
  • lpthread 不以 and s
  • 结尾
do_compile() {
    ${CC} ${S}/threading.c -o ${S}/threads -lpthread
}
  • 您的 do_install 没有提供正确的二进制文件路径:
do_install() {
    install -d ${D}${bindir}
    install -m 0755 ${WORKDIR}/threads ${D}${bindir}
}
  • 最后你应该填充包:
FILES_${PN} = "${bindir}"

编辑关于 threads 不可建造:

threads 无法构建,因为配方中没有提到包是 threads.

这里有一些选项:

  • 将您的食谱重命名为 threads_0.1.bb(我建议您使用一个不太通用的名称)
  • 在您的食谱中使用 PACKAGES 变量。您还需要修改 FILES_* 变量。 (如果你是 Yocto 的新手,有点复杂)
  • 使用当前配方名称,并将IMAGE_INSTALL += "threads"更改为IMAGE_INSTALL += "example"