如何在包含目录yocto中安装文件

How to install file in include directory yocto

我正在尝试安装从 tar 文件中提取的文件,但我的文件没有安装在 target board 上的 usr/include 目录下,但我看到我的文件处于临时状态/work/aarch64/recipedir/image/usr/include/mydir/ 和 include/myfile.h。构建时我没有遇到任何错误。

do_install() {
     
     install -d ${D}${includedir}
     mkdir   -p ${D}${includedir}/mydir
     install -m 0644 ${S}/include/myfile.h ${D}${includedir}
     install -m 0644 ${S}/include/mydir/*.h ${D}${includedir}/mydir/
}
FILES_${PN} += "${includedir}/mydir

默认情况下 ${includedir} 中的所有内容都放入 ${PN}-dev

c.f.: https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/conf/bitbake.conf#n316

你要记住一个文件只能在一个包里。要确定文件将在哪个包中生成,非常简单。从 PACKAGES 中最左边的包开始,文件与 FILES_<pkg> 中任何路径匹配的第一个包将包含文件。

默认情况下,${PN}-dev 出现在 PACKAGES 中的 ${PN} 之前。

c.f.: http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/conf/bitbake.conf#n294

您可以通过 运行 oe-pkgdata-util find-path '/usr/include/mydir'.

检查哪个包中有您的文件,而无需对整个文件进行“逆向工程”

如果你真的想在你的系统中使用这个头文件(为什么?),你可以将 ${PN}-dev 添加到你的映像中或修改一些东西(从 PACKAGES 中删除 -dev 包或移动 ${PN}${PN}-dev 之前,如果你在 ${includedir} 中只有一个文件,等等)。