Bitbake не заполняет, поэтому символические ссылки на общие библиотеки

В моем слое Yocto у меня есть такой рецепт bitbake для библиотек Qt Gstreamer:

SUMMARY = "QtGStreamer libraries for Qt5"
DESCRIPTION = "QtGStreamer is a set of libraries and plugins providing C++ bindings for GStreamer with a Qt-style API plus some helper classes for integrating GStreamer better in Qt applications."
SECTION = "multimedia"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"

SRC_URI[md5sum] = "fd794045a828c184acc1794b08a463fd"
SRC_URI[sha256sum] = "9f3b492b74cad9be918e4c4db96df48dab9c012f2ae5667f438b64a4d92e8fd4"

SRC_URI = "http://gstreamer.freedesktop.org/src/qt-gstreamer/${PN}-${PV}.tar.xz"

RDEPENDS_${PN} = "libgstpbutils-1.0 \
                gstreamer1.0 \
                qtdeclarative \
                glib-2.0 \
                libgstvideo-1.0 \
                libgstapp-1.0 \
                libgstaudio-1.0 \
                qtbase \
"

inherit cmake_qt5

export EXTRA_OECMAKE = "-DQT_VERSION=5 \
                        -DHW_PLATFORM=imx6 \
                        -DOE_QMAKE_PATH_EXTERNAL_HOST_BINS=${STAGING_DIR_NATIVE}/usr/bin/qt5/ \
                        -DUSE_QT_PLUGIN_DIR=OFF \
                        -DCMAKE_SKIP_INSTALL_RPATH=YES \
                        -DCMAKE_SKIP_RPATH=YES \
                        -DCMAKE_INSTALL_PREFIX="/" \
"

FILES_${PN} += "\
    ${libdir}/gstreamer-1.0/* \
"

INSANE_SKIP_qt-gstreamer = "installed-vs-shipped"

EXTRA_OECONF += "--disable-rpath"

В результате этого рецепта во временном каталоге сборки у меня есть 3 файла для каждой созданной разделяемой библиотеки - одна фактическая библиотека и две символические ссылки, например:

libQt5GStreamer-1.0.so -> libQt5GStreamer-1.0.so.0
libQt5GStreamer-1.0.so.0 -> libQt5GStreamer-1.0.so.1.2.0
libQt5GStreamer-1.0.so.1.2.0

Теперь мне интересно, почему в пакете $ {PN} есть файлы libQt5GStreamer-1.0.so.0 и libQt5GStreamer-1.0.so.1.2.0, но нет libQt5GStreamer-1.0.so?

С другой стороны, у меня этот файл включен в пакет ${PN}-dev.

Я попытался скопировать этот файл в пакет $ {PN} с помощью FILES_${PN}, но затем я получил ошибку QA, из-за которой у меня не может быть символических ссылок в пакете, отличном от dev.

Мое приложение Qt для воспроизведения видео зависит от этих файлов * .so, поэтому мне нужно, чтобы они были в моих целевых rootfs.

Как добавить этот файл к изображению?


person lewiatan    schedule 14.12.2015    source источник


Ответы (1)


Мое приложение Qt для воспроизведения видео зависит от этих * .so

Вероятно, это проблема, которую вы должны решить: .so не должен быть нужен приложению во время выполнения. Yocto устанавливает библиотеки и символические ссылки стандартным способом: вы найдете такое же подразделение в Ubuntu и других дистрибутивах.

Вы можете отключить предупреждение QA с помощью INSANE_SKIP_${PN} += "dev-so", но это не изменит того факта, что ошибка, вероятно, находится в приложении.

В качестве альтернативы вы, конечно, можете сделать свое приложение зависимым от пакета -dev.

person Jussi Kukkonen    schedule 16.12.2015
comment
Спасибо. На данный момент я добавил INSANE_SKIP _ $ {PN}, но я переделаю процесс создания приложения. - person lewiatan; 16.12.2015
comment
Требовать .so не всегда неправильно, и это не только для разработки. Java JNI ищет только .so и не использует систему загрузки библиотек. Поэтому, если ссылки на .so нет, приложение Java не сможет найти библиотеку. Спасибо, кстати, за строку отключения QA. Мне это тоже было нужно. - person AllenKll; 18.02.2016
comment
Конечно, бывают исключения. - person Jussi Kukkonen; 18.02.2016