限制库进入最终图像



我正在构建一个Yocto图像。有一些仅在构建时需要的GPLv3库。我已经把GPLv3作为INCOMPATIBLE_LICENSE,并将构建时所需的库列入白名单。但是这些库会进入最终的图像。如何将它们限制在最终映像中,并仅在构建时使用它们?

如果我们考虑一下Yocto的基础知识,我们知道最终图像中的所有内容都是提供包的食谱集合,这些包被收集在一个根文件系统中。

那么,是什么让recipe进入最终的rootfs呢?

  • 通过IMAGE_INSTALL添加。
  • 被设置为另一个配方的RDEPENDS

你需要深入分析,找出什么进入了你最终的rootfs。

同样,您可能会发现IMAGE_INSTALL的内容不明显,运行:

bitbake -e <your_image_recipe> | grep ^IMAGE_INSTALL= 

但是,您可能会看到一些packagegroups被运送。packagegroup是一个在其他食谱列表上RDEPENDS的组。

因此,您需要仔细分析它们(如果找到的话),看看是什么提供了您想要从rootfs中禁止的lib。

packagegroups通常通过IMAGE_FEATURES变量动态发送。

所以,这些是最重要的点,负责将配方发送到根节点。所以,分析你想要的配方。

  • 这是另一个配方的RDEPENDS吗?
  • 查找它被调用的确切位置。

从do_install任务中删除lib的安装,通过在配方中添加类似的东西,例如gdb,如您所说

do_install:append()
{
#删除不希望加载到image中的lib
}

并确保相同的库没有添加到recipe

中的FILES var中。

e。文件:${PN} += "<"自由",

PACKAGE_EXCLUDE对我有效。如果PACKAGE_EXCLUDE下列出的包正在进入最终映像,那么这将引发一个错误。此外,如果任何其他包在运行时依赖于PACKAGE_EXCLUDE下列出的包,那么这也会引发错误。

引用:https://docs.yoctoproject.org/ref-manual/variables.html#term-PACKAGE_EXCLUDEhttps://git.yoctoproject.org/poky/tree/meta/conf/documentation.conf n313

相关内容

  • 没有找到相关文章

最新更新