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

时间:2019-02-27 21:13:22

标签: yocto bitbake openembedded

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

CORE_IMAGE_EXTRA_INSTALL += "libwayland-client"

1 个答案:

答案 0 :(得分: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. 通过包名称将包添加到映像。具体如何执行取决于您创建的图像类型。问题中给定的变量名称适用于某些图像,但并非全部。在手册https://www.yoctoproject.org/docs/2.6.1/mega-manual/mega-manual.html中搜索IMAGE_INSTALL,以了解其他选项。

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

$ 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