当前位置: 首页 > news >正文

在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 --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开发体验。实际项目中建议将环境配置过程脚本化方便团队共享和重复使用。
http://www.rkmt.cn/news/1295085.html

相关文章:

  • 不只是点云:手把手教你用WLR-720激光雷达的IMU数据做机器人姿态估计
  • 旁路电容和去耦电容,到底有什么区别?
  • Python 开发者五分钟接入 Taotoken 调用 GPT 与 Claude 模型指南
  • 极简fastapi框架
  • 终极指南:G-Helper如何轻松解决笔记本电脑过热问题
  • 射影直线上交比不变性的两种证明
  • 3步掌握MegSpot:免费跨平台图片视频对比工具的终极指南
  • 使用 Python 快速将现有应用接入 Taotoken 的多模型服务
  • 终极指南:在Linux系统上构建完整高效的微信小程序开发环境
  • 【从合规压力到安心交付:SAST工具如何助力车企穿越软件安全风暴】
  • 手把手教你用hashcat和rar2john破解RAR5压缩包密码(保姆级图文教程)
  • 《世毫九本原论》导读版研究报告(科普教育)
  • 免费又好用!FanControl风扇控制软件终极设置指南,3分钟告别电脑噪音烦恼
  • 为什么OpenBoardView成为硬件工程师必备的免费PCB查看器?
  • 国产化项目验收测评,如何才算真正过关?
  • 面向对象设计与构造——第一单元总结
  • 【原理探析】SAR与雷达核心概念:从模糊到聚焦的成像逻辑
  • 【实战解析】基于74LS148与CD4511的智能病房呼叫系统设计与Multisim仿真
  • 蜜度校对通AI智能校对平台:赋能企业宣发物料精准表达与高效传播
  • 自建个人数字图书馆:基于Go+Vue+SQLite的Alexandria部署与优化指南
  • 3步搭建个人数字图书馆:fanqienovel-downloader如何让你随时随地畅读番茄小说?
  • ctfshow——web8
  • 你的思考深度,决定了AI的能力上限:与顶级编程AI高效协作的深度实践
  • m4s-converter终极指南:如何将B站缓存视频转换为通用MP4格式
  • realme GT Root 解BL锁 刷入ROOT
  • 避坑指南:用TimeGAN生成时间序列数据时,如何避免模式崩溃和过拟合?
  • 解决ClaudeCode访问不稳定问题将其接入Taotoken聚合通道
  • 问题求解葡萄酒
  • 别再只画拓扑了!用eNSP深度仿真医院网络:业务隔离、高可用与安全接入实战解析
  • Cadence IC617实战:用gm/id法搞定五管OTA运放设计,附完整参数计算与仿真避坑