无法使用 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"
我有一个 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
不以 ands
结尾
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"