搭建Qt嵌入式交叉编译环境,核心目标是让你的Ubuntu开发机(X86架构) 能够编译出在ARM开发板上运行的程序。这主要涉及三个要素:交叉编译链、为ARM编译的Qt库、以及Qt Creator的配置。
整个过程可以分为以下四个主要步骤:
第一步:准备工作
首先,你需要在你的Ubuntu开发机上准备好以下基础材料:
-
开发板交叉编译工具链 :由开发板厂商提供,例如针对ARM的
arm-linux-gnueabihf-g++等 -3。 -
Qt源码包 :从Qt官网下载与你目标板兼容的版本(如
qt-everywhere-src-5.11.3.tar.gz)。 -
可选依赖库 :如果你的程序需要触摸屏支持,还需要准备 tslib 源码 。
-
Qt Creator:在Ubuntu上安装好这个IDE,我们将配置它来调用交叉编译工具 。
第二步:交叉编译Qt库
这一步是为ARM开发板"量身定制"Qt库。你不能直接使用Ubuntu自带的Qt库,因为它们是为X86 CPU编译的。
-
设置交叉编译工具链的路径 :将厂商提供的工具链路径添加到环境变量
PATH中,让系统能找到它们 。 -
配置编译选项 :进入Qt源码目录,运行
./configure脚本。最关键的是通过-xplatform参数指定目标平台 ,例如linux-arm-gnueabi-g++,告诉编译脚本我们要为ARM平台生成代码。 -
编译依赖(如需触摸功能) :在编译Qt之前,先交叉编译
tslib,它会处理触摸屏输入的原始数据 。 -
编译并安装Qt :运行
make和make install。编译过程可能较长,最终产物(如库文件、qmake工具等)会安装到你指定的目录(如/opt/qt5.11.3-arm)。
第三步:配置Qt Creator
这是让你的IDE"理解"交叉编译环境的关键环节。你需要通过"Tools" -> "Options" -> "Build & Run"来手动添加几个组件 :
-
Compilers (编译器) :添加交叉编译工具链中的
g++(如arm-linux-gnueabihf-g++)。 -
Debuggers (调试器) :添加交叉编译工具链中的
gdb(如arm-linux-gnueabi-gdb)。 -
Qt Versions (Qt版本) :添加我们在第二步编译生成的
qmake工具(位于安装目录的bin文件夹下)。 -
Kits (构建套件):最后,创建一个新的"构建套件",将上面配置好的编译器、调试器和Qt版本组合在一起,并给它起个名字,比如"ARM-Dev-Kit" 。
完成配置后,你在Qt Creator里新建或打开项目时,就可以选择这个套件。当你点击"运行"按钮时,Qt Creator就会用你指定的交叉编译器去编译你的代码了。
第四步:部署与运行
-
部署Qt库到开发板 :将第二步编译好的整个Qt目录(如
/opt/qt5.11.3-arm)打包,拷贝到开发板的文件系统中(例如/usr/local/qt5.11.3)。 -
配置开发板环境 :在开发板上,修改
/etc/profile文件,添加环境变量。关键是要让系统知道Qt库的位置(LD_LIBRARY_PATH)、使用哪个帧缓冲设备(QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0)以及触摸屏插件(QT_QPA_FB_TSLIB=1)等信息 。 -
运行程序:通过NFS、U盘或scp等方式,把你用"ARM-Dev-Kit"编译好的程序传到开发板上,直接运行即可。
关键步骤总结
为了方便你操作,这里把核心环节和对应的命令/操作整理成一个表格:
| 步骤 | 核心任务 | 关键命令 / 操作 |
|---|---|---|
| Step 1 | 交叉编译Qt库 | ./configure -xplatform linux-arm-gnueabi-g++ -prefix /your/install/path make && make install |
| Step 2 | 在Qt Creator中添加编译器 | Tools -> Options -> Build & Run -> Compilers -> Add -> GCC,选择 arm-linux-gnueabihf-g++ |
| Step 3 | 在Qt Creator中添加Qt版本 | Tools -> Options -> Build & Run -> Qt Versions -> Add,选择刚才编译生成的 qmake 路径 |
| Step 4 | 在Qt Creator中创建构建套件 | Tools -> Options -> Build & Run -> Kits -> Add,将新加的编译器 和Qt版本组合起来 |
| Step 5 | 在开发板上设置环境 | 编辑 /etc/profile,添加 LD_LIBRARY_PATH、QT_QPA_PLATFORM、TSLIB_* 等变量 |
不同的开发板,其处理器架构、外设和厂商提供的工具链都可能不同。方便告诉我你使用的是哪款开发板吗?我可以针对你的具体型号,提供更精确的步骤指导,比如:
-
获取正确的交叉编译工具链:帮你找到官方下载或确认安装方式。
-
选择最佳的Qt版本:确保与你的板级支持包(BSP)兼容。
-
优化Qt Creator配置:针对你的板子进行更精准的设置。