如何在Yocto中打包带符号链接的版本化与无版本化共享库?
解决Yocto打包版本化共享库的QA错误
问题原因
Yocto默认将不带版本号的.so符号链接(如libVersioned.so)归类为开发文件,应放在-dev包中。当主包(${PN})包含这类符号链接时,QA检查会触发错误。你的需求是将libUnversioned.so、libVersioned.so(符号链接)和libVersioned.so.1.0.0都放在主包中,因此需要调整配方配置绕过对应QA检查。
解决方案
修改Yocto配方的打包配置,添加INSANE_SKIP跳过主包的dev-so QA检查,同时确保文件路径配置正确:
SOLIBS = ".so" FILES_SOLIBSDEV = "" FILES:${PN}-dev += " \ ${includedir}/abc \ ${libdir}/cmake \ " FILES:${PN} += " \ ${libdir}/libUnversioned* \ ${libdir}/libVersioned* \ " # 跳过主包中包含dev类型.so文件的QA检查 INSANE_SKIP:${PN} += "dev-so"
说明
INSANE_SKIP:${PN} += "dev-so":禁用针对主包的dev-so检查项,允许主包包含原本属于开发包的.so符号链接。FILES_SOLIBSDEV = "":确保-dev包不会包含这些.so文件/符号链接,避免文件冲突。- 你的
FILES:${PN}配置已正确覆盖需要包含的三个文件,无需额外调整。
应用上述配置后重新构建配方,QA错误将被消除,主包会包含你需要的三个文件。
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

