Yocto 未将符号链接打包到共享对象

问题描述 投票:0回答:1

我正在尝试在目标映像上安装 libft4222。 libft4222 是我用来将应用程序添加到目标图像的另一个配方的依赖项。

我从 yocto 手册中获取了版本库的示例,并相应地进行了调整以下载相关源:

SUMMARY = "FTDI FT4222H Library"
SECTION = "libs"
LICENSE_FLAGS = "ftdi"
LICENSE = "CLOSED"

# Sources available in a .tgz file in .zip archive
# at https://ftdichip.com/wp-content/uploads/2021/01/libft4222-linux-1.4.4.44.zip
# Found on https://ftdichip.com/software-examples/ft4222h-software-examples/

SRC_URI = "https://www.ftdichip.com/Support/SoftwareExamples/libft4222-linux-${PV}.tgz"
SRC_URI[sha256sum] = "b92ca18e4d8d6aafed31b5f74d0822fae071de7ac6b88e5fe9427e14e1dc9b11"

S = "${WORKDIR}"

ARCH_DIR:x86-64 = "build-x86_64"
ARCH_DIR:i586 = "build-i386"
ARCH_DIR:i686 = "build-i386"
ARCH_DIR:raspberrypi4 = "build-arm-v7-hf"

do_install () {
        install -m 0755 -d ${D}${libdir}
        oe_soinstall ${S}/${ARCH_DIR}/libft4222.so.${PV} ${D}${libdir}
        install -d ${D}${includedir}
        install -m 0755 ${S}/*.h ${D}${includedir}
}

SOLIBS = "${libdir}/libft4222.so.${PV}"
FILES:${PN} += "${libdir}/*.so ${libdir}/*.so.${PV}"

在我的应用程序配方中,我添加了 libft4222 作为

DEPENDS
以及
RDEPENDS
依赖项。我的应用程序正确构建并添加到映像 rootfs,但 libft4222 仅安装版本化的 .so 文件
libft4222.so.${PV}
并省略符号链接
libft4222.so

我还需要部署符号链接,我尝试手动安装库和符号链接而不是

oe_soinstall

install -m 0755 ${S}/${ARCH_DIR}/libft4222.so.${PV} ${D}${libdir}
ln -r -s ${D}${libdir}/libft4222.so.${PV} ${D}${libdir}/libft4222.so

但这会导致相同的行为。

在我的 local.conf 文件中,我将两个配方添加到构建中:

IMAGE_INSTALL:append = " libft4222 application-recipe"

在工作目录中,我看到两个文件都在

libft4222/${PV}/image/usr/lib/
下生成,但只有版本化文件添加到 rootfs 中。我在这里缺少什么?

我正在使用 yocto Kirkstone 和 libft4222 版本 1.4.4.44

yocto bitbake libftdi
1个回答
0
投票

通过此线程找到解决方案:

yocto 处理未版本化的 .so 文件,以便它们仅打包到 libft4222-dev 包中。为了将它们打包为非开发包,请跳过

dev-so
步骤:

SUMMARY = "FTDI FT4222H Library"
SECTION = "libs"
LICENSE_FLAGS = "ftdi"
LICENSE = "CLOSED"

# Sources available in a .tgz file in .zip archive
# at https://ftdichip.com/wp-content/uploads/2021/01/libft4222-linux-1.4.4.44.zip
# Found on https://ftdichip.com/software-examples/ft4222h-software-examples/

SRC_URI = "https://www.ftdichip.com/Support/SoftwareExamples/libft4222-linux-${PV}.tgz"
SRC_URI[sha256sum] = "b92ca18e4d8d6aafed31b5f74d0822fae071de7ac6b88e5fe9427e14e1dc9b11"

S = "${WORKDIR}"

ARCH_DIR:x86-64 = "build-x86_64"
ARCH_DIR:i586 = "build-i386"
ARCH_DIR:i686 = "build-i386"
ARCH_DIR:raspberrypi4 = "build-arm-v7-hf"

do_install () {
        install -m 0755 -d ${D}${libdir}
        oe_soinstall ${S}/${ARCH_DIR}/libft4222.so.${PV} ${D}${libdir}
        install -d ${D}${includedir}
        install -m 0755 ${S}/*.h ${D}${includedir}
}

# skip dev-so in order for the unversioned so file to be packaged as well
FILES_SOLIBSDEV = ""
INSANE_SKIP:${PN} += "dev-so"
FILES:${PN} += "${libdir}/libft4222.so ${libdir}/libft4222.so.${PV}"
© www.soinside.com 2019 - 2024. All rights reserved.