Ubuntu18.04下Yocto编译Zeus后无法在Qt5添加Zeus5.4工具链求助
咱们先把这个错误的本质说清楚:这个提示不一定是qmake文件真的找不到,绝大多数情况是qmake依赖的动态链接库缺失,或者工具链架构和当前Ubuntu系统不匹配,也可能是Qt Creator的环境配置没跟上。下面是一步步排查和解决的实操方案:
1. 先确认qmake的存在性与架构匹配度
首先找到你的Yocto Zeus工具链里qmake的实际路径,一般在/opt/poky/zeus/sysroots/<你的目标架构>/usr/bin/qmake这类路径下。打开终端执行:
ls -l <qmake的完整路径>
如果文件确实存在,再检查它的架构类型:
file <qmake的完整路径>
要是输出显示ELF 32-bit LSB executable...,而你的Ubuntu 18.04是64位系统,那问题就出在缺少32位运行依赖库,直接安装:
sudo apt-get install lib32z1 lib32ncurses5 lib32stdc++6
这三个是32位程序在64位Ubuntu上运行的基础依赖包。
2. 确保Yocto工具链的环境变量正确加载
Yocto工具链必须先加载对应的环境脚本才能正常工作,比如你的工具链目录下应该有environment-setup-<目标架构>-poky-linux这类脚本。终端里先执行:
source /opt/poky/zeus/environment-setup-<你的目标架构>-poky-linux
替换成你实际的脚本路径。加载完成后输入qmake -v,如果能正常输出版本信息,说明是Qt Creator没正确继承工具链的环境变量。
3. 调整Qt Creator的工具链配置
如果上面的测试没问题,那就是Qt Creator的配置出错了,按下面步骤调整:
- 打开Qt Creator,进入
Tools > Options > Kits - 先配置编译器:切换到
Compilers标签,添加GCC编译器,选择Yocto工具链里的arm-poky-linux-gnueabi-gcc(根据你的目标架构调整),设置正确路径 - 再配置调试器:切换到
Debuggers标签,添加对应工具链里的arm-poky-linux-gnueabi-gdb - 最后配置Qt版本:切换到
Qt Versions标签,点击Add,找到Yocto工具链里的qmake路径。如果还是报错,试试从终端加载环境脚本后启动Qt Creator:
source /opt/poky/zeus/environment-setup-<你的目标架构>-poky-linux qtcreator &
这样Qt Creator会继承终端的环境变量,就能正确识别qmake的依赖库了。
4. 检查qmake的依赖库完整性
如果前面的步骤都没用,用ldd命令排查qmake的依赖:
ldd <qmake的完整路径>
输出里如果有not found的库,就是缺少对应的文件。可以通过设置LD_LIBRARY_PATH指定Yocto sysroots的库路径:
export LD_LIBRARY_PATH=/opt/poky/zeus/sysroots/<你的目标架构>/usr/lib:$LD_LIBRARY_PATH
设置后再运行qmake测试,没问题的话就按这个方式配置Qt Creator的启动环境。
5. 确认Yocto编译时包含了Qt开发包
最后别忘了检查Yocto的local.conf配置文件,确保添加了Qt5的开发相关包:
IMAGE_INSTALL_append = " qtbase-dev qtbase-tools qtbase-mkspecs"
如果编译时没加这些包,工具链里的qmake可能不完整,导致Qt Creator无法识别。
内容的提问来源于stack exchange,提问作者Test pc

