我正在尝试在目标映像上安装 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 处理未版本化的 .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}"