我试图在我为静态库编写的图像中包含一个Yocto配方。
在我自己的层中创建了配方测试/静态文件夹。
已在此文件夹中创建“static_0.1.bb”文件
在“recipes test/static”文件夹中创建了“files”文件夹
复制了以下文件。
你好,c

char * hello (void)
{
  return "Hello";
}

世界c
char *world(void)
{
  return "World";
}

地狱世界
#ifndef HELLOWORLD_H
#define HELLOWORLD_H
char * hello (void);
char * world (void);
#endif

创建了包含以下内容的配方:
DESCRIPTION=“简单helloworld示例静态库”
LICENSE=“麻省理工学院”
LIC_FILES_CHKSUM=“文件://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302”
SRC_URI=“文件://hello.c\
文件://world.c\
文件://helloworld.h“
S = "${WORKDIR}"

do_compile() {
        ${CC} -c hello.c world.c
        ${AR} -cvq libhelloworld.a hello.o world.o
}

do_install() {
        install -d ${D}${includedir}
        install -d ${D}${libdir}
        install -m 0755 helloworld.h ${D}${includedir}
        install -m 0755 libhelloworld.a ${D}${libdir}
}

当我说bitbake static时,静态库是在tmp/work文件夹中创建的
当我将它包含在conf/local.conf文件中时:
IMAGE_INSTALL_append=“静态”
生成在根文件创建阶段失败,错误如下:
not found other for:
not found modules for:
not found deltainfo for:
not found updateinfo for:
oe-repo: using metadata from Tue 02 Jul 2019 03:54:50 AM UTC.
No module defaults found
No match for argument: static
Error: Unable to find a match

你能帮我解决这个错误吗
更新:在更改IMAGE_INSTALL_append=“static staticdev”之后,我得到以下错误:
No module defaults found
--> Starting dependency resolution
--> Finished dependency resolution
Error:
 Problem: package static-staticdev-0.1-r0.cortexa7t2hf_neon_vfpv4 requires static-dev = 0.1-r0, but none of the providers can be installed
  - conflicting requests
  - nothing provides static = 0.1-r0 needed by static-dev-0.1-r0.cortexa7t2hf_neon_vfpv4
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

最佳答案

Yocto将自动将${D}中安装的文件拆分为不同的包。在您的示例中,helloworld.h将进入${PN}-dev(在您的示例中,${PN}等于static,但我编写${PN}以避免混淆),libhelloworld.a将进入${PN}-staticdev,但由于没有其他文件,因此不会有名为${PN}的包,因为它将是空的。
如果您真的希望静态库最终出现在图像中,请使用IMAGE_INSTALL_append = "static-staticdev"
还有一个问题是,没有任何文件将包含在plain${PN}包中,使用默认设置意味着不会创建这样的包。这是一个问题,因为${PN}-dev包在运行时依赖于${PN}。这可以通过允许创建${PN}来解决,即使它是空的,也可以通过添加ALLOW_EMPTY_${PN} = "1"来启用它

关于linux - Yocto为静态库构建失败,并显示错误“找不到匹配项”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56845122/

10-11 01:15