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



我正在使用使用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吗?提前感谢您的帮助。

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

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

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

顺便说一句,配方中有一些小的东西你可以更新(虽然与你的问题无关):

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

相关内容

最新更新