在Yocto中为i.MX6Q构建Qt6遇报错,如何禁用gbm?
解决Yocto添加Qt6时virtual/libgbm相关编译错误
问题原因
第一个错误是Qt6的qtbase依赖virtual/libgbm,但当前构建环境中没有提供该虚拟包;手动添加PROVIDES后,Qt的CMake配置发现实际找不到GBM的头文件或库(gbm_FOUND=FALSE),因为imx-gpu-viv配方并没有真正安装GBM相关文件,只是声明了提供虚拟包。
解决方案
方案一:禁用Qt6的GBM支持(快速解决)
如果你的硬件不需要GBM显示后端(比如使用fbdev、Wayland或其他替代方案),可以直接让Qt6编译时跳过GBM:
- 在
local.conf中添加以下配置:
添加后重新构建镜像或qtbase即可。# 方法1:通过QTBASE_CONFIG_FLAGS强制禁用 QTBASE_CONFIG_FLAGS:append = " -no-gbm" # 方法2:移除qtbase的gbm PACKAGECONFIG选项 PACKAGECONFIG:remove:pn-qtbase = "gbm"
方案二:正确提供virtual/libgbm(适合需要GBM的场景)
如果必须使用GBM,需要确保imx-gpu-viv真正提供GBM的库和头文件:
- 编辑
meta-freescale/recipes-graphics/imx-gpu-viv/imx-gpu-viv-6.inc,在添加PROVIDES += virtual/libgbm的基础上,增加文件安装规则:PROVIDES += "virtual/libgbm" # 确保安装GBM的头文件和库 FILES:${PN} += " ${libdir}/libgbm.so* ${includedir}/gbm/" - 清理之前的构建缓存并重新编译:
如果bitbake -c cleansstate imx-gpu-viv bitbake qtbaseimx-gpu-viv本身不包含GBM组件,可能需要切换到支持GBM的GPU驱动配方,比如使用meta-freescale-3rdparty中的对应驱动,或者单独添加libgbm配方。
内容的提问来源于stack exchange,提问作者ieio
相关产品推荐
相关产品推荐

