You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yocto构建中libft4222共享库符号链接未打包至根文件系统问题

解决Yocto Kirkstone中libft4222符号链接未安装到根文件系统的问题

你的问题核心在于Yocto的库打包规则和配方中的自定义配置冲突,导致libft4222.so符号链接未被纳入运行包。以下是具体分析和修复方案:

问题原因

  1. 自定义SOLIBS覆盖默认逻辑:你设置的SOLIBS = "${libdir}/libft4222.so.${PV}"替换了Yocto默认的版本化库处理规则,打乱了符号链接的归属判定。
  2. 符号链接默认归属开发包:Yocto默认将.so符号链接归类到${PN}-dev开发包(供编译阶段使用),而非${PN}运行包(供目标系统运行时使用)。因此仅安装libft4222时,符号链接不会被加入根文件系统。

修复方案

根据你的需求选择对应的处理方式:

方式1:仅在编译阶段使用符号链接(推荐)

如果你的应用仅在构建时需要libft4222.so符号链接,无需在目标镜像中保留,只需在应用配方中添加对libft4222-dev的依赖,同时调整libft4222配方如下:

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

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配置,恢复Yocto默认处理逻辑
# SOLIBS = "${libdir}/libft4222.so.${PV}"

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

此时libft4222-dev包会自动包含libft4222.so符号链接,应用构建时依赖该包即可。

方式2:将符号链接加入目标镜像运行包

如果确实需要在目标系统中保留libft4222.so,修改libft4222配方如下:

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

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配置
# SOLIBS = "${libdir}/libft4222.so.${PV}"

# 将符号链接加入运行包
FILES:${PN} += "${libdir}/libft4222.so"
# 从开发包中移除该符号链接,避免重复打包
FILES:${PN}-dev:remove = "${libdir}/libft4222.so"

验证

修改配方后,重新构建:

bitbake libft4222

检查根文件系统镜像或libft4222包内容,确认libft4222.so已被正确包含。

内容的提问来源于stack exchange,提问作者Klickmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 11:30:54