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

如何解决Yocto中添加预编译库时出现的ldflags错误

解决Yocto Recipe复制预编译库时的GNU_HASH QA错误

你的问题核心在于变量赋值被覆盖,导致你添加的ldflags跳过检查没有正确生效,另外还有一些细节需要调整,我帮你梳理一下:

问题根源

你在recipe里连续写了两行INSANE_SKIP_${PN}赋值:

INSANE_SKIP_${PN} = "dev-elf"
INSANE_SKIP_${PN} = "ldflags"

Yocto的变量赋值是覆盖式的,第二行直接把第一行的dev-elf给替换掉了——相当于最后只有ldflags的跳过设置生效,之前的dev-elf被丢弃,这不仅可能引发其他潜在QA问题,也会让你的ldflags跳过逻辑没有完全按预期工作。

修复方案

把需要跳过的QA检查项合并到同一行,用空格分隔,这样两个检查规则都会被正确应用:

修改后的完整sample.bb如下:

DESCRIPTION = "Adding binaries"
LICENSE = "CLOSED"
SRC_URI = "file://*"
S = "${WORKDIR}"

do_install(){
    install -d ${D}${libdir}
    cp ${S}/libnfc_nci_linux.so* ${D}${libdir}
}

# 合并跳过的QA检查项,避免变量覆盖
INSANE_SKIP_${PN} = "dev-elf ldflags"
FILES_${PN} += "${libdir}/libnfc_nci_linux.so*"

额外说明

  • 对于闭源预编译库来说,跳过ldflags(也就是GNU_HASH检查)是合理的,因为很多厂商提供的二进制可能没有添加这个段,但要确保你的库是针对目标硬件架构编译的,避免运行时兼容性问题。
  • FILES_${PN}的配置是正确的,它确保了库文件会被打包到rootfs里,如果你的库包含开发用的符号链接(比如libnfc_nci_linux.so指向libnfc_nci_linux.so.x.y.z),也不需要额外配置FILES_${PN}-dev,直接放在${PN}里即可(闭源库一般不需要单独拆分开发包)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:56:54