yocto - Yocto 部署调试或发布预构建?
问题描述
我正在编写一个 bitbake 配方来部署第三方预构建工具,类似于此 wiki 页面:https ://wiki.yoctoproject.org/wiki/TipsAndTricks/Packaging_Prebuilt_Libraries
但是,我有该工具的发布和调试预构建版本,可用作 *.so 文件。如何在配方中区分我要部署的两种构建类型中的哪一种?
谢谢和问候,马丁
解决方案
您可以有两个不同的虚拟配方,每个都有自己的.so
文件。然后保证在配置文件中进行选择(带有PREFERRED_PROVIDER_virtual/my-recipe
),因此可以在机器或发行版配置文件中进行选择。如果您考虑拥有发布和调试发行版,这可能是首选。
第二种选择是将库安装在两个不同的路径中,在两个不同的路径中PACKAGES
(FILES_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
环境变量选择您想要的库,那么一个简单的配方(每个库位于不同位置的两个包)就足够了。
推荐阅读
- php - 无法使用 php 插入 MySQL 数据库
- angular - 如何更改角垫扩展面板方向
- electron - 如何检查电子中是否按下了某个键?
- reactjs - 无法使用 Formik 在 FieldArray 中设置FieldValue
- reactjs - 在 react-bootstrap 中验证 select 类型的输入
- javascript - 多个具有相同名称的命名捕获组
- dependency-injection - 使用 autofac 解决在不同项目中注册的组件的依赖关系
- oauth - In OAuth2, is the /introspect endpoint meant for the OAuth Client to call, or the OAuth Resource Server to call?
- python - 在生产环境中运行两个烧瓶 API 的 Python 应用程序
- c# - 使c#线程中的代码段不可中断