2015-12-14 10 views
2

В моем слое Yocto у меня есть такой рецепт Bitbake для библиотек Qt Gstreamer:Bitbake не заполняют около того символических ссылок на общие найти библиотеки

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 файла для каждых совместно библиотека created- одну фактической библиотеки и две символических ссылок, как так:

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, что я не могу иметь символические ссылки в пакете non-dev.

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

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

ответ

2

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

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

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

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

+0

спасибо. На данный момент я добавил INSANE_SKIP _ $ {PN}, но я буду перерабатывать процесс создания приложения. – lewiatan

+0

Необходимость .so не всегда ошибается, и это не только для развития. Java JNI ищет только .so и не использует систему загрузки библиотеки. Поэтому, если ссылка на .so не существует, приложение Java не сможет найти библиотеку. Спасибо BTW, за линию отключения QA. Мне тоже это нужно. – AllenKll

+0

Есть исключения, это правда. – jku

 Смежные вопросы

  • Нет связанных вопросов^_^