如何将缺少的库(或可执行文件或其他文件)添加到Yocto / bitbake

问题描述 投票:0回答:1

对于我正在运行的应用程序,有一个运行时错误,因为它找不到libwayland-client.so.0共享对象。我如何知道哪个包提供它以及我在哪里添加它。我尝试如下所示,但它给了我一个Nothing PROVIDES错误。

CORE_IMAGE_EXTRA_INSTALL += "libwayland-client"

yocto bitbake openembedded
1个回答
1
投票

在构建Yocto图像时,通常不使用单个文件

以相反的顺序

  1. 您将包安装到映像
  2. 您可以使用配方构建包
  3. 您可以找到(或作为最后的手段)食谱作为图层的一部分。

通常,当缺少某些内容时,请执行以下步骤:

  1. 检查layerindex https://layers.openembedded.org/layerindex/branch/master/recipes/?q=wayland它告诉你在层wayland中有一个名为openembedded-core的配方
  2. 添加有问题的图层。 openembedded-core已经包含在Yocto的poky中(直接名为meta,只是为了让新人混淆......),所以在这个例子中没有什么可以补充的
  3. 创建相关配方的环境列表,bitbake -e wayland >wayland.env
  4. 检查有问题的食谱创建grep ^PACKAGES= wayland.env的包。在这种情况下它很容易,因为实际上只有一个包wayland-debug-dev等是不包含库的特殊用途)
  5. 通过包名添加包到图像。如何做到这完全取决于您创建的图像类型。问题中给出的变量名称适用于某些图像,但不是全部。在IMAGE_INSTALL手册中搜索https://www.yoctoproject.org/docs/2.6.1/mega-manual/mega-manual.html以获取其他选项。

一旦您构建了有问题的配方,您还可以检查包中包含的文件(在这种情况下,配方名称和包名称是相同的,但情况并非总是如此。有些配方构建了多个适合安装的包,显然他们需要使用不同的名称)

$ oe-pkgdata-util list-pkg-files wayland
wayland:
        /usr/lib/libwayland-client.so.0
        /usr/lib/libwayland-client.so.0.3.0
        /usr/lib/libwayland-cursor.so.0
        /usr/lib/libwayland-cursor.so.0.0.0
        /usr/lib/libwayland-server.so.0
        /usr/lib/libwayland-server.so.0.1.0
© www.soinside.com 2019 - 2024. All rights reserved.