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

基于i.MX6的Yocto构建SDK时nativesdk-qtbase出现QA未打包文件错误求助

问题:Yocto生成SDK时nativesdk-qtbase触发installed-vs-shipped QA错误

我正基于i.MX6,使用Yocto 4.14-sumo及QT5.12配方构建自定义Yocto发行版,嵌入式Yocto构建正常。但执行bitbake abl-image-qt5 -c populate_sdk生成SDK时,nativesdk-qtbase配方出现如下错误:

ERROR: nativesdk-qtbase-5.12.0+gitAUTOINC+13ed06640c-r0 do_package: QA Issue: nativesdk-qtbase: Files/directories were installed but not shipped in any package:
/opt/abl-imx-fb/4.14-sumo/sysroots/x86_64-ablsdk-linux/usr/share
/opt/abl-imx-fb/4.14-sumo/sysroots/x86_64-ablsdk-linux/usr/share/cmake
/opt/abl-imx-fb/4.14-sumo/sysroots/x86_64-ablsdk-linux/usr/share/cmake/OEToolchainConfig.cmake.d
/opt/abl-imx-fb/4.14-sumo/sysroots/x86_64-ablsdk-linux/usr/share/cmake/OEToolchainConfig.cmake.d/OEQt5Toolchain.cmake
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
nativesdk-qtbase: 4 installed and not shipped files. [installed-vs-shipped]
ERROR: nativesdk-qtbase-5.12.0+gitAUTOINC+13ed06640c-r0 do_package: Fatal QA errors found, failing task.
ERROR: nativesdk-qtbase-5.12.0+gitAUTOINC+13ed06640c-r0 do_package: Function failed: do_package
ERROR: Logfile of failure stored in: /home/pierre/repo/claas/build/tmp/work/x86_64-nativesdk-ablsdk-linux/nativesdk-qtbase/5.12.0+gitAUTOINC+13ed06640c-r0/temp/log.do_package.16550
ERROR: Task (/home/pierre/repo/claas/sources/meta-qt5/recipes-qt/qt5/nativesdk-qtbase_git.bb:do_package) failed with exit code '1'

恳请解释该问题出现的原因。


原因解释

这个错误是Yocto的包质量检查(QA)机制触发的,核心逻辑很直接:Yocto要求配方在do_install阶段安装到目标目录的所有文件/目录,必须明确被包含在配方的FILES变量中——也就是要被分配到某个具体的包(比如runtime包、开发包、文档包等)里,否则就会判定为"安装了但未打包"的冗余内容,进而抛出错误。

针对你的场景,具体原因拆解如下:

  • 你的nativesdk-qtbase配方在构建过程中,自动安装了Qt5的cmake工具链配置文件(OEQt5Toolchain.cmake)及其所在的目录结构,但配方的FILES变量并没有包含/usr/share/cmake/...这类路径。Yocto的QA检查发现这些文件存在,但没有被任何包声明要包含,所以触发了installed-vs-shipped错误。
  • 出现这种情况的常见诱因:Qt5.12版本的nativesdk配方在生成SDK工具链时,新增了cmake配置文件的安装逻辑,但配方本身没有同步更新FILES变量来覆盖这些路径;或者你的自定义Yocto配置(比如额外的cmake相关配置)触发了这些文件的生成,但原生配方没考虑到这种场景。
  • 需要注意的是,这不是代码编译错误——你的嵌入式构建正常说明Qt本身的编译没问题,只是Yocto的严格校验不允许"无主"文件出现在SDK里,确保SDK的所有内容都有明确的归属和用途。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 08:02:47