第4章 Qt开发环境搭建:从零开始构建嵌入式Qt王国
说实话,Qt开发环境搭建这件事,我见过太多人在这里栽跟头了。有的折腾两天装不上交叉编译器,有的编译Qt库时卡在某个错误提示前不知所措。我自己刚入行那会儿,也曾在Ubuntu和Windows之间反复横跳,最后发现——嗯,其实只要理清几个关键步骤,这事儿真没那么玄乎。
4.1 Qt Creator安装与配置
先说说IDE的选择。我个人习惯用Qt Creator,轻量、顺手,调试功能也够用。你可能会问:为什么不用VS Code?VS Code当然也行,但Qt Creator对qmake和CMake项目的支持更原生,尤其是信号槽的自动补全,用起来很舒服。
安装步骤其实很简单:
- 去Qt官网下载开源版本(记得选离线安装包,在线安装慢得让人抓狂)
- 安装时勾选你需要的组件——我建议至少选上Qt 5.15.2或6.5.x LTS版本
- 别忘了勾选「Sources」组件,后面编译Qt库时会用到
配置方面,打开Qt Creator后,进入「工具」→「选项」→「Kits」。这里要添加你的交叉编译工具链。别急着点「添加」,先确认你的交叉编译器已经装好了。
4.2 交叉编译工具链集成
交叉编译,说白了就是「在PC上编译,在ARM板上运行」。你想想看,嵌入式设备的CPU通常跑不动编译器,所以我们得在性能强劲的PC上生成目标代码。
我常用的交叉编译器是arm-linux-gnueabihf-gcc。安装方式有两种:
- 方法一: 直接用apt安装(适合Ubuntu)
sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf - 方法二: 从芯片厂商(如NXP、TI)下载预编译的工具链包
安装完成后,验证一下:
arm-linux-gnueabihf-gcc --version
# 输出类似:arm-linux-gnueabihf-gcc (Linaro GCC 7.5-2019.12) 7.5.0
然后在Qt Creator的「Kits」页面,点击「添加」,选择「Device Type」为「Generic Linux Device」,编译器选你刚装好的交叉编译器。这里有个坑——Qt Creator默认的qmake是PC版的,你得手动指定嵌入式版的qmake路径。
4.3 Qt库的编译与部署
这一步是很多人觉得最头疼的。其实核心就三个字:configure、make、make install。
先下载Qt源码包,解压后进入目录:
./configure -prefix /opt/qt5.15-arm \
-xplatform linux-arm-gnueabihf-g++ \
-opensource -confirm-license \
-nomake examples -nomake tests \
-skip qtwebengine # 这个模块编译特别慢,嵌入式一般用不到
配置参数说明:
| 参数 | 作用 |
|---|---|
| -prefix | 指定安装路径,我习惯放在/opt下 |
| -xplatform | 指定交叉编译平台,这个要和你的工具链对应 |
| -skip | 跳过不需要的模块,节省编译时间 |
然后就是漫长的等待:
make -j4 # 4核并行编译,根据你的CPU核心数调整
make install
编译时间取决于你的机器性能。我当年用一台i5笔记本编译Qt 5.12,整整跑了两个多小时。所以建议你泡杯咖啡,或者干脆下班前跑上,第二天早上来看结果。
export QT_QPA_PLATFORM=linuxfbexport LD_LIBRARY_PATH=/usr/local/qt5.15-arm/lib:$LD_LIBRARY_PATH
4.4 第一个Qt嵌入式程序:Hello World
环境搭好了,总得跑个程序验证一下。我习惯用最经典的Hello World来测试——不是因为它简单,而是因为如果连这个都跑不起来,后面复杂的项目就更别想了。
新建一个Qt Widgets Application,main.cpp里写:
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel label("Hello, Embedded World!");
label.setAlignment(Qt::AlignCenter);
label.resize(320, 240);
label.show();
return app.exec();
}
在Qt Creator里选择你刚才配置的交叉编译Kit,然后点击「构建」。如果一切顺利,会在build目录下生成一个可执行文件。
把它传到开发板上:
scp HelloWorld root@192.168.1.100:/root/
ssh root@192.168.1.100
./HelloWorld
如果屏幕上出现了一个居中的「Hello, Embedded World!」,恭喜你,环境搭建成功了!
嗯,到这里,Qt开发环境就搭建完毕了。你可能觉得步骤有点多,但相信我——一旦你完整走通一次,后面再搭建其他项目时就会轻车熟路。下一章我们会开始真正设计UI界面,到时候这些基础就派上用场了。