保姆级教程:在Ubuntu 18.04上为I.MX6U开发板配置Qt 5.12.9交叉编译环境(含远程调试)

张开发
2026/4/18 14:12:55 15 分钟阅读

分享文章

保姆级教程:在Ubuntu 18.04上为I.MX6U开发板配置Qt 5.12.9交叉编译环境(含远程调试)
保姆级教程在Ubuntu 18.04上为I.MX6U开发板配置Qt 5.12.9交叉编译环境含远程调试刚拿到正点原子I.MX6U开发板时最让人头疼的就是如何快速搭建一套能用的Qt开发环境。作为一款基于Cortex-A7架构的嵌入式平台I.MX6U的性能足以流畅运行Qt应用程序但跨平台编译的配置过程却让不少新手望而却步。本文将用最直白的语言带你一步步完成从工具链安装到远程调试的完整流程。我遇到过太多因为环境配置不当导致的编译失败问题——从工具链版本不匹配到库文件缺失从权限问题到网络连接异常。这些问题往往需要花费数小时甚至数天才能解决。本文特别注重这些坑点确保你能一次性配置成功。我们将使用官方推荐的Qt 5.12.9 LTS版本这是目前最稳定的长期支持版特别适合嵌入式开发。1. 准备工作与环境检查在开始之前我们需要确保基础环境符合要求。打开终端执行以下命令检查系统版本lsb_release -a确认你的Ubuntu版本是18.04建议使用LTS版本。虽然16.04也可以工作但18.04对Qt 5.12.9的支持更完善。接下来检查磁盘空间df -h提示整个工具链安装需要约5GB空间建议预留10GB以上空闲空间安装必要的依赖库sudo apt update sudo apt install -y build-essential libgl1-mesa-dev libxcb-xinerama0-dev这些库是Qt运行的基础依赖缺少它们可能导致编译或运行时出现奇怪的问题。特别要注意libgl1-mesa-dev它提供了OpenGL支持对Qt的图形界面至关重要。2. 安装交叉编译工具链正点原子官方提供了专为I.MX6U优化的工具链我们需要先下载并安装wget http://download.atomicpi.com/toolchain/fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh chmod x fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh sudo ./fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh安装过程中会提示安装路径建议保持默认的/opt/fsl-imx-x11/4.1.15-2.1.0。安装完成后需要设置环境变量source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi为了方便后续使用可以将这行命令添加到~/.bashrc文件中echo source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi ~/.bashrc source ~/.bashrc验证工具链是否安装成功arm-poky-linux-gnueabi-gcc --version如果看到类似下面的输出说明安装正确arm-poky-linux-gnueabi-gcc (GCC) 7.3.03. 安装配置Qt CreatorQt Creator是Qt官方推荐的集成开发环境我们需要下载并安装5.12.9版本wget http://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 sudo ./qt-opensource-linux-x64-5.12.9.run安装过程中需要注意几个关键点需要注册Qt账号免费选择安装组件时确保勾选Qt 5.12.9下的所有选项安装路径建议保持默认/opt/Qt5.12.9安装完成后我们需要配置Qt Creator以支持交叉编译。启动Qt Creator/opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh在Qt Creator中按以下步骤配置打开工具→选项→Kits添加新的Qt版本路径选择/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/qmake添加新的编译器选择/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g创建新的Kit配置如下名称I.MX6U-Qt5.12.9设备类型通用Linux设备编译器选择刚才添加的ARM编译器Qt版本选择刚才添加的Qt版本Qt mkspec填写linux-oe-g4. 创建并编译测试项目现在我们来创建一个简单的测试项目验证环境是否配置正确选择文件→新建文件或项目→Application→Qt Widgets Application项目名称填写HelloIMX6U在选择Kit步骤同时勾选桌面版和I.MX6U版其他选项保持默认完成项目创建修改mainwindow.cpp文件添加一个简单的按钮#include QPushButton MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { QPushButton *button new QPushButton(Hello I.MX6U, this); button-setGeometry(50, 50, 200, 50); }先使用桌面Kit编译运行确保代码没有语法错误。然后切换到I.MX6U Kit进行编译点击左下角的项目按钮选择I.MX6U-Qt5.12.9 Kit点击构建按钮不要点击运行编译成功后在项目目录下的build-HelloIMX6U-I.MX6U-Qt5.12.9-Release文件夹中可以找到生成的可执行文件。5. 远程部署与调试由于正点原子出厂系统没有sftp服务我们需要使用ssh/scp进行远程部署。首先确保开发板与电脑在同一网络并知道开发板的IP地址。在Qt Creator中配置远程设备打开工具→选项→设备→添加→通用Linux设备设备名称I.MX6U-Board主机地址开发板IP用户名root默认密码留空默认无密码配置项目的部署步骤打开项目→运行设置删除默认的通过SFTP上传步骤添加自定义处理步骤命令ssh参数-p %{Device:SshPort} %{Device:UserName}%{Device:HostAddress} mkdir -p %{CurrentRun:Executable:Path}再添加一个自定义处理步骤命令scp参数-P %{Device:SshPort} %{CurrentRun:Executable:FileName} %{Device:UserName}%{Device:HostAddress}:%{CurrentRun:Executable:FilePath}现在点击运行按钮Qt Creator会自动将程序上传到开发板并执行。如果一切正常你将在开发板的LCD屏上看到一个带有Hello I.MX6U按钮的窗口。6. 常见问题排查在实际操作中可能会遇到以下问题问题1编译时报错找不到库文件解决方案export LD_LIBRARY_PATH/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib问题2远程连接失败检查步骤确认开发板IP正确在终端测试是否能ping通开发板尝试手动ssh连接ssh root开发板IP问题3程序在开发板上运行时报段错误可能原因工具链版本不匹配使用了开发板不支持的Qt模块解决方案确认使用的工具链版本与开发板系统匹配在Qt Creator的项目设置中取消勾选不必要的Qt模块7. 性能优化建议为了让Qt程序在I.MX6U上运行更流畅可以考虑以下优化启用硬件加速 在main.cpp中添加QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);减少资源使用使用QWidget代替QML除非必须压缩图片资源避免使用透明效果编译优化 在pro文件中添加QMAKE_CXXFLAGS_RELEASE -O2 CONFIG release经过这些优化后即使是相对复杂的Qt界面也能在I.MX6U上流畅运行。

更多文章