)
在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 --hostarm-linux-gnueabihf \ --prefix/opt/tslib \ --enable-inputyes \ --enable-staticno 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.confMAKEFILE_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) 21 | 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.94.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-gABI设置arm-linux-generic-elf-32bit构建套件(Kit)名称ARM-Qt5.12.9设备类型Generic Linux Device编译器选择刚配置的ARM GCCQt版本选择刚添加的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 rootarm-device:/home/root5. 常见问题解决方案5.1 C11兼容性问题若遇到C11相关编译错误需在.pro文件中添加QMAKE_CXXFLAGS -stdc11 CONFIG c115.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开发体验。实际项目中建议将环境配置过程脚本化方便团队共享和重复使用。