保姆级教程:在Ubuntu 20.04上为ARM开发板配置QtCreator 4.14(含gcc/g++编译器避坑指南)
刚接触嵌入式开发的工程师们,是否曾被QtCreator与ARM工具链的配置折磨得焦头烂额?当你在Ubuntu系统上反复尝试却始终遭遇"Path or permissions wrong"的报错时,是否想过放弃?本文将用最接地气的方式,带你一步步完成这个看似复杂的过程。不同于网络上零散的教程,我会把每个环节的细节和可能遇到的坑都摊开来讲——毕竟,谁还没在编译器路径配置上栽过跟头呢?
1. 环境准备与基础工具安装
在开始配置之前,我们需要确保系统处于最佳起点。Ubuntu 20.04虽然已经预装了不少开发工具,但针对ARM交叉编译还需要一些特别的准备。先打开终端,执行以下命令更新软件源:
sudo apt update && sudo apt upgrade -y接下来安装基础编译工具链,这是后续工作的基石:
sudo apt install build-essential cmake git ninja-build -y注意:如果你之前尝试过配置但失败了,建议先清理残留文件。执行sudo apt autoremove --purge qtcreator可以彻底移除旧版本。
1.1 安装依赖库
ARM交叉编译需要特定的运行时库支持,这些依赖往往容易被忽略:
sudo apt install libgl1-mesa-dev libxkbcommon-x11-0 libncurses5-dev \ libssl-dev libicu-dev libclang-10-dev zlib1g-dev -y验证gcc版本是否满足要求(至少7.4以上):
gcc --version如果版本过低,可以通过以下命令安装新版:
sudo apt install gcc-9 g++-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 902. 获取QtCreator 4.14的正确姿势
2.1 官方下载与验证
直接从Qt官方仓库获取4.14版本(虽然较旧但稳定性经过验证):
wget https://download.qt.io/official_releases/qtcreator/4.14/4.14.0/qt-creator-opensource-linux-x86_64-4.14.0.run下载完成后务必验证文件完整性:
echo "a1e0d9242e951dde0d4d5a357a5a48be qt-creator-opensource-linux-x86_64-4.14.0.run" | md5sum -c2.2 安装与初次配置
赋予执行权限并启动安装:
chmod +x qt-creator-opensource-linux-x86_64-4.14.0.run ./qt-creator-opensource-linux-x86_64-4.14.0.run安装过程中有几个关键选项需要注意:
- 选择"Qt Creator 4.14.0"组件
- 勾选"Desktop GCC"(即使目标是ARM也需要本地编译器)
- 创建桌面快捷方式方便后续使用
安装完成后首次启动时,建议跳过初始向导,我们后续会手动配置更精确的环境。
3. ARM工具链的深度配置
3.1 获取ARM编译器
推荐使用Linaro提供的gcc-arm工具链,这是经过充分测试的稳定版本:
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解压到/opt目录并设置权限:
sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz -C /opt sudo chown -R $USER:$USER /opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf3.2 环境变量配置
在~/.bashrc末尾添加以下内容:
export ARM_GCC_PATH=/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin export PATH=$PATH:$ARM_GCC_PATH使配置立即生效:
source ~/.bashrc验证编译器是否可用:
arm-linux-gnueabihf-gcc --version如果看到版本信息输出,说明工具链配置成功。
4. QtCreator项目配置实战
4.1 工具链设置
启动QtCreator,按以下路径配置:
- 菜单栏选择"Tools" → "Options"
- 左侧选择"Kits" → "Compilers"
- 点击"Add" → "GCC" → "C"
- 在"Compiler path"中输入:
/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc - 相同方法添加C++编译器,选择对应的g++路径
4.2 构建套件(Kit)配置
创建一个新的构建套件:
- 名称:ARM Qt 5.12 GCC
- Device type:Generic Linux Device
- Compiler C:选择刚添加的ARM GCC
- Compiler C++:选择ARM G++
- Qt version:需要额外配置(见下一节)
- Debugger:自动检测
4.3 qmake的特殊配置
从开发板供应商处获取对应的Qt库,解压后找到qmake路径。在QtCreator中:
- "Tools" → "Options" → "Kits" → "Qt Versions"
- 点击"Add",选择开发板Qt库中的qmake
- 回到Kits界面,为之前创建的套件选择这个Qt版本
提示:如果开发板使用特殊文件系统(如yocto构建),可能需要额外配置sysroot路径。这通常在开发板SDK中有说明文档。
5. 常见问题与解决方案
5.1 权限错误处理
当遇到"Path or permissions wrong"错误时,按以下步骤排查:
- 检查编译器路径是否包含空格或特殊字符
- 确认当前用户对工具链目录有执行权限:
ls -l /opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin - 尝试在终端直接运行编译器命令,看是否报错
5.2 库文件缺失问题
交叉编译时常见的.so文件缺失,可以通过以下方式解决:
sudo apt install libc6-armhf-cross libstdc++6-armhf-cross5.3 调试配置技巧
在QtCreator中配置远程调试:
- 菜单栏选择"Projects" → "Run Settings"
- 在"Run configuration"中添加"Custom Executable"
- 设置可执行文件路径(开发板上的路径)
- 配置设备部署选项(需要提前设置好SSH连接)
6. 项目构建与部署优化
6.1 构建参数调整
在.pro文件中添加以下配置可优化ARM代码生成:
QMAKE_CFLAGS += -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard QMAKE_CXXFLAGS += $$QMAKE_CFLAGS6.2 自动化部署脚本
创建deploy.sh脚本实现一键部署:
#!/bin/bash scp ./your_app root@开发板IP:/usr/local/bin/ ssh root@开发板IP "chmod +x /usr/local/bin/your_app"6.3 性能监控配置
在开发板上安装perf工具进行性能分析:
sudo apt install linux-tools-generic perf stat -e cycles,instructions,cache-references your_app配置QtCreator与perf联动:
- "Analyze" → "Perf Profiler" → "Start Recording"
- 运行应用程序
- 停止记录后查看热点函数分析
7. 高级调试技巧
当程序在开发板上崩溃时,可以通过以下步骤获取有用信息:
在开发板上生成core dump:
ulimit -c unlimited echo "/tmp/core.%e.%p" > /proc/sys/kernel/core_pattern在QtCreator中配置远程调试:
- 安装gdb-multiarch:
sudo apt install gdb-multiarch - 在"Debugger"设置中选择gdb-multiarch
- 加载core文件时指定架构:
set architecture arm file your_app core-file /tmp/core.your_app.1234
- 安装gdb-multiarch:
使用QtCreator的调试控制台查看变量和调用栈
对于内存泄漏检测,可以在开发板上安装valgrind:
sudo apt install valgrind valgrind --leak-check=full ./your_app在QtCreator中配置自定义分析工具:
- "Analyze" → "Valgrind Memory Analyzer"
- 设置远程执行命令
- 配置符号查找路径
8. 实际项目经验分享
在最近的一个工业控制器项目中,我们发现当使用-O2优化级别时,某些浮点运算会出现精度问题。解决方案是在.pro文件中添加:
QMAKE_CFLAGS_RELEASE -= -O2 QMAKE_CFLAGS_RELEASE += -O1 -ffloat-store另一个常见问题是开发板与主机的时间不同步导致构建系统混乱。建议在部署脚本开头添加:
ssh root@开发板IP "date -s '$(date)'"对于需要频繁部署调试的场景,可以配置QtCreator的"Custom Process Step":
- 在"Projects" → "Build & Run" → "Custom Process Steps"
- 添加SCP命令自动上传可执行文件
- 设置SSH命令自动重启应用
当使用触摸屏设备时,可能需要调整Qt的环境变量:
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event1:rotate=90 export QT_QPA_PLATFORM=eglfs