首页 > 解决方案 > Yocto 部署调试或发布预构建?

问题描述

我正在编写一个 bitbake 配方来部署第三方预构建工具,类似于此 wiki 页面:https ://wiki.yoctoproject.org/wiki/TipsAndTricks/Packaging_Prebuilt_Libraries

但是,我有该工具的发布和调试预构建版本,可用作 *.so 文件。如何在配方中区分我要部署的两种构建类型中的哪一种?

谢谢和问候,马丁

标签: yoctobitbake

解决方案


您可以有两个不同的虚拟配方,每个都有自己的.so文件。然后保证在配置文件中进行选择(带有PREFERRED_PROVIDER_virtual/my-recipe),因此可以在机器或发行版配置文件中进行选择。如果您考虑拥有发布和调试发行版,这可能是首选。

第二种选择是将库安装在两个不同的路径中,在两个不同的路径中PACKAGESFILES_my-package用于该路径),并使它们RCONFLICTS_my-package相互连接,以确保它们不能都位于 rootfs 中。之后,您可以编写一个pkg_postinst_my-package()特定于每个包的任务,该任务实际上将库从“不同”路径移动到预期路径。这将在创建 rootfs 的构建时和第一次启动时在运行时运行,因此您需要确保排除一个或另一个(通常通过检查是否${D}存在来完成,这在构建时而不是运行时进行)。

参见:http ://docs.yoctoproject.org/dev-manual/dev-manual-common-tasks.html#post-installation-scripts

如果您可以设法将这两个库都安装在您的 rootfs 中,并使用LIBRARY_PATH环境变量选择您想要的库,那么一个简单的配方(每个库位于不同位置的两个包)就足够了。


推荐阅读