【问题标题】:How to add header file to /usr/include in Yocto如何在 Yocto 中将头文件添加到 /usr/include
【发布时间】:2021-10-01 16:03:34
【问题描述】:

我正在使用由 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中。

您知道为什么我不能在 rootfs 中将 .h 文件添加到 /usr/include 吗?提前感谢您的帮助。

【问题讨论】:

    标签: linux embedded-linux yocto bitbake


    【解决方案1】:

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

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

    请注意,FILES_${PN} += "${incldir}/*" 行无效,因为$includedir(即FILES_${PN}-dev)中的文件在处理FILES_${PN} 之前已被拆分。顺序在变量PACKAGES (check the official documentation)中定义。

    顺便说一句,食谱中有一些小东西可以更新(不过与你的问题无关):

    • 您可以在各个变量bindirincludedir 等中使用标准系统路径的位置。
    • install 优于 do_install 中的 cp
    • FILESEXTRAPATHS_prepend := "${THISDIR}/files/:" 行仅在 bbappends 中需要。配方目录中的 files 目录位于文件的标准搜索路径中(在 ${PN} 等其他路径中)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 2014-11-24
      • 2013-12-05
      • 2012-07-26
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      相关资源
      最近更新 更多