【问题标题】:Bitbake does not populate so symlinks to shared libariesBitbake 不填充共享库的符号链接
【发布时间】:2016-03-19 20:12:15
【问题描述】:

在我的 Yocto 层中,我有这样的 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 个文件 - 一个实际库和两个符号链接,如下所示:

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 上。

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

【问题讨论】:

    标签: yocto recipe bitbake qtgstreamer


    【解决方案1】:

    我的Qt应用播放视频依赖这些*.so

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

    您可以使用 INSANE_SKIP_${PN} += "dev-so" 使 QA 警告静音,但这不会改变错误可能存在于应用程序中的事实。

    当然,您也可以让您的应用程序依赖于 -dev 包。

    【讨论】:

    • 谢谢。现在我添加了 INSANE_SKIP_${PN} 但我将重新设计应用程序构建过程。
    • 需要 .so 并不总是错误的,也不仅仅是为了开发。 Java JNI 只查找 .so 并且不使用库加载系统。因此,如果 .so 的链接不存在,Java 应用程序将无法找到该库。顺便说一句,感谢 QA 禁用行。我也需要这个。
    • 有例外,这是真的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 2021-07-25
    相关资源
    最近更新 更多