在Ubuntu 18.04上为ARM板搭建Qt Creator交叉编译环境(Qt5.12.9 + tslib)
在Ubuntu 18.04上构建ARM嵌入式Qt开发环境全指南
当开发者需要在资源受限的ARM嵌入式设备上部署Qt应用程序时,搭建高效的交叉编译环境成为关键挑战。本文将深入解析如何在Ubuntu 18.04桌面环境中,配置完整的Qt Creator IDE与ARM架构Qt SDK(含tslib触摸支持),建立从编码到部署的完整工作流。
1. 环境准备与工具链配置
在开始构建交叉编译环境前,需要确保开发主机具备以下基础条件:
- Ubuntu 18.04 LTS:相较于早期版本,18.04提供了更现代的GLIBC和工具链支持
- 至少50GB可用磁盘空间:Qt源码编译过程会产生大量中间文件
- 8GB以上内存:推荐配置以避免编译过程中出现内存不足错误
首先安装必要的依赖项:
sudo apt update sudo apt install -y gcc g++ make perl python git libgl1-mesa-dev \ libxcb-xinerama0-dev libxkbcommon-dev libxkbcommon-x11-dev \ libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev \ libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev \ libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev \ libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev \ libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev \ libxcb-render-util0-dev libxcb-util-dev对于ARM交叉编译器,推荐使用Linaro GCC 7.5.0版本:
wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz -C /opt配置环境变量:
echo 'export PATH=/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin:$PATH' >> ~/.bashrc source ~/.bashrc验证编译器安装:
arm-linux-gnueabihf-gcc --version # 应输出类似:gcc version 7.5.0 (Linaro GCC 7.5-2019.12)2. tslib触摸库的编译与配置
tslib为嵌入式系统提供了标准化的触摸输入处理层,是Qt触摸功能的基础依赖。编译过程需特别注意与目标设备的输入设备匹配。
获取最新tslib源码并编译:
git clone https://github.com/libts/tslib.git cd tslib ./autogen.sh ./configure --host=arm-linux-gnueabihf \ --prefix=/opt/tslib \ --enable-input=yes \ --enable-static=no make -j$(nproc) sudo make install关键配置参数说明:
| 参数 | 作用 | 推荐值 |
|---|---|---|
| --host | 指定交叉编译目标架构 | arm-linux-gnueabihf |
| --prefix | 安装目录 | /opt/tslib |
| --enable-input | 启用输入设备支持 | yes |
| --enable-static | 是否构建静态库 | no |
安装完成后,需要验证生成的库文件:
ls /opt/tslib/lib # 应看到libts.so等动态库文件3. Qt 5.12.9源码编译详解
Qt源码的交叉编译是环境搭建中最复杂的环节,需要特别注意平台特性配置。
3.1 源码获取与解压
wget https://download.qt.io/archive/qt/5.12/5.12.9/single/qt-everywhere-src-5.12.9.tar.xz tar -xvf qt-everywhere-src-5.12.9.tar.xz cd qt-everywhere-src-5.12.93.2 关键配置文件修改
编辑qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf:
MAKEFILE_GENERATOR = UNIX CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../common/linux.conf) include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf) # modifications to g++.conf QMAKE_CC = arm-linux-gnueabihf-gcc QMAKE_CXX = arm-linux-gnueabihf-g++ QMAKE_LINK = arm-linux-gnueabihf-g++ QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++ # modifications to linux.conf QMAKE_AR = arm-linux-gnueabihf-ar cqs QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy QMAKE_NM = arm-linux-gnueabihf-nm -P QMAKE_STRIP = arm-linux-gnueabihf-strip3.3 编译配置脚本
创建configure.sh配置脚本:
#!/bin/bash ./configure -prefix /opt/arm-qt5.12.9 \ -confirm-license \ -opensource \ -release \ -no-opengl \ -no-xcb \ -qt-libjpeg \ -qt-libpng \ -qt-zlib \ -qt-pcre \ -no-dbus \ -no-cups \ -no-glib \ -no-iconv \ -no-icu \ -no-eglfs \ -linuxfb \ -I/opt/tslib/include \ -L/opt/tslib/lib \ -tslib \ -nomake examples \ -nomake tests \ -skip qtvirtualkeyboard \ -xplatform linux-arm-gnueabi-g++赋予执行权限并运行:
chmod +x configure.sh ./configure.sh3.4 编译与安装
make -j$(nproc) 2>&1 | tee build.log sudo make install编译完成后验证安装:
ls /opt/arm-qt5.12.9/bin # 应看到qmake等关键工具4. Qt Creator集成开发环境配置
Qt Creator作为官方IDE,其交叉编译环境配置需要特别注意工具链的匹配。
4.1 Qt Creator安装
wget https://download.qt.io/archive/qt/5.12/5.12.9/qt-opensource-linux-x64-5.12.9.run chmod +x qt-opensource-linux-x64-5.12.9.run ./qt-opensource-linux-x64-5.12.9.run安装过程中需注意:
- 选择"Custom Installation"
- 确保勾选Qt Creator 4.11.0
- 安装路径建议保持默认
/opt/Qt5.12.9
4.2 交叉编译套件配置
打开Qt Creator后,按以下步骤配置:
添加Qt版本:
- 路径选择:
/opt/arm-qt5.12.9/bin/qmake - 版本应自动识别为Qt 5.12.9(arm)
- 路径选择:
配置编译器:
- C++编译器路径:
/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ - ABI设置:arm-linux-generic-elf-32bit
- C++编译器路径:
构建套件(Kit):
- 名称:ARM-Qt5.12.9
- 设备类型:Generic Linux Device
- 编译器:选择刚配置的ARM GCC
- Qt版本:选择刚添加的Qt 5.12.9(arm)
4.3 项目构建验证
创建测试项目时需注意:
- 项目类型选择"Qt Widgets Application"
- 构建套件选择"ARM-Qt5.12.9"
- 在.pro文件中添加tslib支持:
LIBS += -L/opt/tslib/lib -lts INCLUDEPATH += /opt/tslib/include构建成功后,将生成的可执行文件复制到目标设备验证:
scp application root@arm-device:/home/root5. 常见问题解决方案
5.1 C++11兼容性问题
若遇到C++11相关编译错误,需在.pro文件中添加:
QMAKE_CXXFLAGS += -std=c++11 CONFIG += c++115.2 触摸屏校准问题
在目标设备上创建/etc/pointercal校准文件:
export TSLIB_CALIBFILE=/etc/pointercal export TSLIB_CONFFILE=/etc/ts.conf export TSLIB_PLUGINDIR=/usr/lib/ts /usr/bin/ts_calibrate5.3 字体显示异常处理
将中文字体拷贝到目标设备:
mkdir -p /usr/share/fonts cp source-han-sans.ttf /usr/share/fonts/ fc-cache -fv在开发环境中,这些配置步骤虽然复杂,但一旦完成就能获得高效的ARM嵌入式Qt开发体验。实际项目中,建议将环境配置过程脚本化,方便团队共享和重复使用。
