YOCTO bitbake打包QA报错:已加RDEPENDS仍找不到libzlog.so.1.2依赖
1. 错误点说明
你配方中的运行时依赖声明语法错误,RDEPENDS_{PN} = "zlog"的变量引用缺少$符号,正确写法为RDEPENDS_${PN} = "zlog"。
当前错误写法下{PN}不会被BitBake解析为当前配方名变量,实际生效的RDEPENDS_my-opt是空值,因此QA检查无法识别你声明的zlog依赖,才会抛出对应的错误提示。
2. 依赖检测逻辑
该检查由OpenEmbedded构建系统do_package_qa阶段的file-rdeps检查项实现,检测逻辑如下:
- 扫描当前打包路径下所有ELF格式的可执行文件、动态链接库,通过
objdump/readelf提取所有依赖的动态库soname - 从pkgdata数据库中拉取你在
RDEPENDS_${PN}中声明的所有依赖包提供的soname列表 - 若存在依赖的soname没有对应的提供包在RDEPENDS中,就会抛出你遇到的错误
你通过oe-pkgdata-util查询到zlog确实提供了libzlog.so.1.2,只是因为依赖声明未生效,才没有通过检查。
3. 关闭QA检查的方法
优先建议你修正RDEPENDS的语法即可解决问题。如果你确认依赖已经由镜像其他部分保证存在,不需要做该检查,可以通过以下方式屏蔽:
单包屏蔽(推荐)
在当前配方中添加配置,仅屏蔽当前包的file-rdeps检查:
INSANE_SKIP_${PN} = "file-rdeps" # 新版本BitBake也支持冒号写法:INSANE_SKIP:${PN} = "file-rdeps"
全局屏蔽(不推荐)
在build/conf/local.conf中添加配置,全局关闭所有包的运行时依赖检查,容易导致运行时缺失依赖的问题:
ERROR_QA:remove = "file-rdeps"
内容的提问来源于stack exchange,提问作者Arno
相关产品推荐
相关产品推荐

