Как добавить отсутствующую библиотеку (или исполняемый файл, или другой файл) в Yocto / bitbake - PullRequest
0 голосов
/ 28 февраля 2019

Для приложения, которое я запускаю, произошла ошибка во время выполнения, поскольку оно не может найти libwayland-client.so.0 общий объект.Как я знаю, какой пакет предоставляет это и где я могу добавить это.Я попытался, как показано ниже, но это дало мне ошибку Nothing PROVIDES.

CORE_IMAGE_EXTRA_INSTALL += "libwayland-client"

1 Ответ

0 голосов
/ 28 февраля 2019

Обычно вы не работаете с отдельными файлами при создании образов Yocto

В обратном порядке

  1. Вы устанавливаете пакеты в образ
  2. Вы создаете пакеты с помощьюиспользуя рецепт
  3. Вы находите (или, в крайнем случае, пишите) рецепты как часть слоев.

Обычно, когда чего-то не хватает, вы предпринимаете следующие шаги:

  1. Проверьте индекс слоя https://layers.openembedded.org/layerindex/branch/master/recipes/?q=wayland Он сообщает, что существует рецепт под названием waylandв слое openembedded-core
  2. Добавьте нужный слой.openembedded-core уже содержится в poky Yocto (прямо под именем 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
...