繁体   English   中英

如何在 Yocto 中将头文件添加到 /usr/include

[英]How to add header file to /usr/include in Yocto

我正在使用使用 Yocto 构建的 Linux。 我想将我的应用程序的图像添加到/bin并将一些头文件添加到/usr/include 我将应用程序添加到/bin没有问题,但我无法将头文件添加到我的 rootfs。 .h 文件被添加到适当的包中,但不会复制到 rootfs。

这是我的食谱:

bindir = "${localdir}/bin"
incldir = "${localdir}/usr/include"

FILESEXTRAPATHS_prepend := "${THISDIR}/files/:"
SRC_URI = "file://My_app_dir/* \
          \     
          "
S = "${WORKDIR}"

FILES_${PN} += "${incldir}/*"

do_compile() {

    cd My_app_dir/src
    make       
}

do_install() {
    install -d ${D}${bindir}
    cp "${S}/My_app_dir/src/my_app" "${D}${bindir}/my_app"

    install -d ${D}${incldir}
    cp "${S}/My_app_dir/some_lib.h" "${D}${incldir}/some_lib.h"
}

构建映像后,包含文件存在于/build/tmp/work/<machine>/<my_app>/image/usr/include

你知道为什么我不能将 .h 文件添加到 rootfs 中的/usr/include吗? 预先感谢您的任何帮助。

头文件(以及 pkgconfig 和共享库符号链接等其他文件)没有添加到主包(比如foo ),而是添加到开发包(例如foo-dev )。 这称为包拆分,您可以在官方文档包拆分中了解更多信息 默认情况下不安装开发包(顺便说一句,还有调试foo-dbg )。

但请注意,添加开发包可能会拉取其他依赖(因为各种运行时依赖)和文件(开发包中还有其他文件)。

请注意,您的行FILES_${PN} += "${incldir}/*"无效,因为$includedir的文件(即FILES_${PN}-dev )在FILES_${PN}之前被拆分处理。 顺序在变量PACKAGES定义(查看官方文档)

顺便说一句,您可以更新配方中的一些小东西(尽管与您的问题无关):

  • 您可以在相应的变量中使用的标准的系统路径位置bindirincludedir等。
  • install优于do_installcp
  • 仅在bbappends需要FILESEXTRAPATHS_prepend := "${THISDIR}/files/:" bbappends 配方目录中的files目录位于files的标准搜索路径中(在其他路径中,例如 ${PN} 等)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM