【问题标题】:How to add a missing library (or executable or other file) to Yocto/bitbake如何将缺少的库(或可执行文件或其他文件)添加到 Yocto/bitbake
【发布时间】:2019-02-28 13:45:55
【问题描述】:

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

CORE_IMAGE_EXTRA_INSTALL += "libwayland-client"

【问题讨论】:

    标签: yocto bitbake openembedded


    【解决方案1】:

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

    倒序

    1. 您将软件包安装到映像中
    2. 您使用配方构建软件包
    3. 您会发现(或作为最后手段编写)食谱作为层的一部分。

    通常当缺少某些东西时,您会采取以下步骤:

    1. 检查层索引https://layers.openembedded.org/layerindex/branch/master/recipes/?q=wayland 它告诉你在层openembedded-core 中有一个名为wayland 的配方
    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
    

    【讨论】:

      猜你喜欢
      • 2021-11-03
      • 2021-02-15
      • 2016-02-28
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多