【问题标题】:How does Bitbake know to source conf/bitbake.confBitbake 如何知道来源 conf/bitbake.conf
【发布时间】:2017-04-04 14:42:49
【问题描述】:

我遇到了一个问题,我正在使用的配方不再定义变量 libdir。它似乎只有libdir_native

我正在使用的这个配方是 poco-1.7.5 for Morty from openembedded 所以我认为这个配方应该可以正常工作。

由于缺少 libdir 变量,没有任何已安装的文件被打包,这搞砸了我的构建。

在短期内,我已经能够通过创建一个 append 文件来解决这个问题,这使得 libdir = "${libdir_native} 但这似乎没有必要。

我唯一能想到的是Bitbake.conf 文件没有被Bitbake 正确获取(或者使用了错误的.conf)。

任何建议将不胜感激。

【问题讨论】:

  • 食谱看起来不错。您能否说明您是如何得出在 do_package 发生时未设置 libdir 的结论的? bitbake -e poco|grep ^FILES_ 会告诉你它试图打包什么。
  • 有趣!我运行了bitbake -e poco|grep ^libdir,它给了我:libdir_nativesdk="/usr/lib"libdir_native="/usr/lib" ```我以为这告诉我libdir 根本不存在。运行您粘贴的命令并列出所有软件包(谢谢!),它们都试图安装在/usr/lib64 中。但是,在运行 Poco 配方时,我得到:WARNING: poco-1.7.5-r0 do_package: QA Issue: poco: Files/directories were installed but not shipped in any package:,并且监听的文件前面带有 /usr/lib。所以libdir 设置为/usr/lib64?
  • 关于如何强制将软件包安装到/usr/lib 的任何建议?现在,我有一个用于 Poco 的 bbappend,它设置了 libdir = /usr/lib`,但我有兴趣找到一个更持久的解决方案。

标签: yocto bitbake


【解决方案1】:

根据 cmets,这似乎是问题所在:Poco 上游将库安装到 /usr/lib/ 中,但 yocto 打包期望它们位于 ${libdir} 中,这可能与 /usr/lib/ 不同。

最常见的原因(对于 cmake 配方)是上游项目不支持 CMAKE_INSTALL_LIBDIR。检查上游构建系统是否有其他指定 libdir 的方法——这在 cmake 项目中非常常见。如果没有,您可以在上游构建系统中添加对 CMAKE_INSTALL_LIBDIR 的支持(并向您的配方添加补丁)。

另一种 hack 方法是添加一个 do_install_append() 来检查 ${libdir} 是否不是 /usr/lib/,并将所有内容从 ${D}/usr/lib/ 移动到 ${D}${libdir } 在这种情况下。

【讨论】:

  • 我遇到的问题是跟踪 ${libdir} 设置为/usr/lib64 的位置。关于如何找到这个的任何建议?
  • 我想知道你为什么需要这样做? ${libdir} 允许有一个不是“/usr/lib”的值,配方应该能够忍受它......如果我没记错的话,最常见的原因是它是“/usr/lib64”是您的操作系统支持多库(例如 64 位系统上的 32 位应用程序)。在这种情况下,请参阅 meta/conf/multilib.conf 中的 baselib 变量。
  • 这是poco 配方迫使我担心将${libdir} 设置为/usr/lib。如果${libdir} 不是/usr/lib,它实际上不会打包库。我也很好奇这是为什么。大多数情况下,我只是想解决这个问题,这样我就不必修改食谱了。
  • 配方应该正确打包文件如果它们被安装在 ${libdir} 中,因为它们应该是:检查 $WORKDIR/image/ 目录以查看它们最终的位置(或阅读 $WORKDIR/temp7log.do_install)。我的回答列出了几种解决这种情况的方法,如果库确实不应该安装在 /usr/lib/ 中。
  • 感谢您的帮助!
猜你喜欢
  • 2021-12-14
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多