使用Petalinux构建特定应用时zynqRegs依赖警告求助
先搞懂警告到底在说什么
WARNING: zynqRegs-1.0-r0 do_package_qa: QA Issue: /usr/bin/zynqRegs contained in package zynqRegs requires libc.so.6()(64bit), but no providers found in RDEPENDS_zynqRegs? [file-rdeps]
这个警告的核心意思是:你的zynqRegs二进制程序依赖64位版本的libc.so.6库,但在你当前给zynqRegs包声明的依赖(RDEPENDS_zynqRegs)里,找不到能提供这个库的包。Yocto/Petalinux的QA检查会验证每个二进制文件的依赖都有对应的包声明,避免最终镜像里出现缺失库的情况。
你之前加的RDEPENDS_${PN} += "libc.so.6"之所以没用,是因为**RDEPENDS需要的是包名,不是具体的库文件名**——libc.so.6是库文件,而提供它的包是glibc,这才是你应该声明的依赖。
具体解决步骤
修正依赖声明:打开你的
zynqRegs.bb文件,把之前错误的依赖语句替换成:RDEPENDS_${PN} += "glibc"因为在Yocto/Petalinux的包体系里,64位的
libc.so.6就是由glibc包提供的,架构相关的细节会由构建系统自动处理,不用你手动指定64位后缀。验证依赖关系(可选但推荐):你可以先确认
zynqRegs确实依赖这个库,在构建环境里执行:readelf -d /path/to/build/tmp/work/.../zynqRegs/usr/bin/zynqRegs | grep NEEDED输出里应该能看到
libc.so.6的条目,确认依赖没问题。清理缓存重新构建:有时候旧的构建缓存会导致依赖声明不生效,先清理
zynqRegs的构建产物:petalinux-build -c zynqRegs -x cleanall然后重新构建这个包:
petalinux-build -c zynqRegs这时候QA警告应该就消失了。
内容的提问来源于stack exchange,提问作者Ali

