2015-12-14 768 views
2

在我Yocto层我有Qt的的Gstreamer库,bitbake的食谱:BitBake的不填充这样的符号连接到共享libaries

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.0libQt5GStreamer-1.0.so.1.2.0但没有libQt5GStreamer-1.0.so

另一方面,我有这个文件包含在包${PN}-dev

我尝试用FILES_${PN}复制这个文件包中$ {PN}但后来我得到,我不能在非开发包,以便符号链接QA错误。

我的用于播放视频的Qt应用程序取决于这些* .so文件,所以我需要将它们放在我的目标rootfs上。

如何将这些文件添加到图像?

回答

2

我的Qt应用程序来播放视频取决于这些*。所以

这可能是你应该解决的问题:。所以不应该由应用程序运行时需要。 Yocto安装库和符号链接的方式非常标准:您会在Ubuntu和其他发行版中找到相同的部门。

您可以用INSANE_SKIP_${PN} += "dev-so"来消除质量保证警告,但这并不会改变错误可能出现在应用程序中的事实。

另外,你可以让你的应用程序依赖于-dev包。

+0

谢谢。现在我添加了INSANE_SKIP _ $ {PN},但我将重新构建应用程序构建过程。 – lewiatan

+0

需要一个.so并不总是错,也不只是为了发展。 Java JNI只查找.so并且不使用库加载系统。因此,如果到.so的链接不存在,Java应用程序将无法找到该库。谢谢,顺便提一下QA禁用行。我也需要这个。 – AllenKll

+0

也有例外,那是真的。 – jku