【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建

目录

1、安装出厂系统Qt交叉编译器

2、搭建 Qt Creator  交叉 编译 环境

2.1 下载Qt Creator

2.2 安装 Qt Creator

2.3 配置 Qt Creator Kits

2.4 验证搭建的交叉编译 Kits

2.5 远程调试 Qt  程序

3、Ubuntu  本机 Kits  编译 Qt 应用程序


所使用的环境:

Qt 5.12.9 LTS版本

正点原子出厂文件系统Qt

Ubuntu 16.04或18.04

Windows 10 64bits


1、安装出厂系统Qt交叉编译器

交叉编译器fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh 

执行下面指令修改脚本权限,修改权限后可以看到此脚本颜色(绿色)显示改变,说明修改成功。

chmod u+x 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 这个默认目录

./fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh 

使用方法也十分简单,根据上面打印出来的提示,直接使能环境变量就可以了。但是在不同终端或者切换用户时需要重新使能环境变量方可使用。

source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

使能环境变量后可以使用 env 指令查看生效的环境变量,下图为部分截图,可以看出使能了这个环境变量后 gcc 已经配置好编译时所用的参数,如硬浮点参数-mfpu=neon -mfloat-abi=hard。使用硬浮点交叉编译,可以使用 CPU 自带 FPU。

下图为环境变量部分截图。

env

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第1张图片

使用 arm-poky-linux-gnueabi-gcc -v 指令可以查看 gcc 版本,表明环境变量已经生效。

arm-poky-linux-gnueabi-gcc --version

2、搭建 Qt Creator  交叉 编译 环境

2.1 下载Qt Creator

在 Ubuntu 平台开发 Qt,那么必须要有相应的 IDE 环境,那么 Qt Creator 就是 Qt的 IDE(集成环境),我们就可以使用 Qt Creator 快速编程了。进入网址 http://download.qt.io/archive/qt/5.12/5.12.9/下载 Qt 5.12.9。Qt 官方已经把 Qt Creator 封装在下面这个

qt-opensource-linux-x64-5.12.9.run。我们需要下载这个 qt-opensource-linux-x64-5.12.9.run 直接在 Ubuntu 安装即可。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第2张图片

或用指令下载,复制上面的下载地址

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第3张图片

直接在 Ubuntu 终端使用 wget 指令下载

wget http://download.qt.io/archive/qt/5.12/5.12.9/qt-opensource-linux-x64-5.12.9.run

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第4张图片

2.2 安装 Qt Creator

下载完成得到 qt-opensource-linux-x64-5.12.9.run 这个文件。赋予该文件可执行权限,再执行安装。

chmod u+x qt-opensource-linux-x64-5.12.9.run
sudo ./qt-opensource-linux-x64-5.12.9.run // 建议加 sudo,否则安装在当前目录下。

如无意外,则弹出 Qt 5.12.9 欢迎安装界面。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第5张图片

这里需要填写 Qt 帐号,去 Qt 官网 https://www.qt.io/注册一个账号。填写后再点击 Next。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第6张图片

同意使用条款。按如下步骤操作。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第7张图片

欢迎安装界面,直接点击下一步。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第8张图片

选择安装目录,建议默认即可。会安装在/opt 目录下。点击下一步。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第9张图片

按需要安装,除了安卓选项我们都选择安装。点击下一步。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第10张图片

同意许可协议,点击下一步。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第11张图片

准备安装,点击安装

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第12张图片

安装完成,点击完成

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第13张图片

2.3 配置 Qt Creator Kits

Kit 译作套件,也就是开发编译环境套件,我们可以搭建不同平台的套件,以不同的套件编译出不同平台的应用程序,也验证了 Qt 跨平台的特性!

若安装时安装的目录一样则可以使用如下指令打开 Qt Creator。 “&”的作用是后台运行。

/opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh &

也可以在左上角的软件中心栏输入搜索出“Qt Creator”图标后再单击打开

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第14张图片

打开 Tools(工具),打开 Options(选项)。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第15张图片

配置 Qt Versions,点击添加,选择已安装的交叉编译器路径下的 qmake,路径为/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/qmake,用于生成 Makefile,以编译程序。

同时改版本名称为 ATK-I.MX6U Qt %{Qt:Version}。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第16张图片

点击添加,选择 C++。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第17张图片

配置编译器,编译器的路径为已安装的交叉编译器。路径为/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++。

将“名称”改为 ATK-I.MX6U-GCC。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第18张图片

配置 Kits,将“名称”改为 ATK-I.MX6U。在 Qt mkspec 处写上“linux-oe-g++”。其他按下图操作设置。不要漏了其中一项,否则可能编译错误。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第19张图片

2.4 验证搭建的交叉编译 Kits

新建工程

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第20张图片

选择 Application 项目和 Qt Widgets Application 模板。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第21张图片

项目命名为 test,选择工程的位置,这里位置不要随便选择,建议放在家目录下(/home/用户名)。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第22张图片

默认使用 qmake,点击下一步。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第23张图片

选择类模板,默认 QMainWindow 类即可。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第24张图片

是否选择文件翻译,默认无,点击下一步。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第25张图片

选择套件,这里可以两个套件一起选,编译时切换选择 I.MX6U ARM 平台的套件,如下。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第26张图片

默认,点击 Finish,完成。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第27张图片

如下图选择 ATK-I.MX6U Kit 编译,其中可以看到 Qt Creator 把程序中的类当作未识别的类,原因可能是 ARM 平台的 Qt 类未在 X86_64 的 Qt Creator 上识别,暂时不知道是不是 QtCreator 自身的问题,具体原因不去探究了。

不过对我们编写程序没影响,我们写程序时可以使用安装 Qt 时自带的编译器 Desktop Qt5.12.9 GCC 64bit 去编写和编译验证是否有语法错误。当想要编译 ARM 平台的应用程序时,我们再切换到 ATK-I.MX6U 去编译即可。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第28张图片

开始编译,点击构建,不要点击运行!在 Ubuntu 平台上是运行不了用 ARM 编译器编译出来的程序的!

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第29张图片

在 test 工程的同级目录下找到 build-test-ATK_I_MX6U-Debug 文件夹,查看编译出来的可执行程序 test。我们拷贝到出厂文件系统目录下,在串口终端直接执行./test 就可以了。

2.5 远程调试 Qt  程序

在 Qt Creator 中默认情况下,会使用 sftp 或 rsync 发送程序到板卡。由于正点原子 I.MX6U 出厂 Qt 文件系统里没有 sftp 或 rsync,所以我们需要换另外一种方法。原理很简单,就是使用 ssh 和 scp 把程序发送到板卡上再执行。

打开菜单栏的工具,打开选项。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第30张图片

点击设备处,把名称命名为“I.MX6U”。在第 6 步填写在开发板的 ip 地址。默认端口为 22。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第31张图片

将我们设置的“设备”,在 ATK-I.MX6U Kits 里选择设备类型为我们刚才设置的“I.MX6U”设备。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第32张图片

确保目前是选择 ATK-I.MX6U 套件 Debug 模式构建。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第33张图片

点击项目处,选择 ATK-I.MX6U 设备,选择 Run。删除通过 SFTP 上传文件,因为我们出厂文件系统没有 sftp,不能通过 sftp 上传。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第34张图片

添加 Depoloy 步骤,选择“Custom Process Step”。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第35张图片

添加 Command 为 ssh,Arguments:为-p %{Device:SshPort} %{Device:UserName}@%{Device:HostAddress} 'mkdir -p %{CurrentRun:Executable:Path}'。Working directory:默认为%{buildDir}。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第36张图片

再添加一个 Custom Process Step

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第37张图片

添加 Command 为 scp,Arguments:为-P %{Device:SshPort} %{CurrentRun:Executable:FileName}%{Device:UserName}@%{Device:HostAddress}:%{CurrentRun:Executable:FilePath}。Workingdirectory:默认为%{buildDir}。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第38张图片

返回到编辑,点击运行或按 F5 进入调试模式。下图为点击 32 步中的运行。可以看到已经把编译的程序发送到开发板上执行。开发板上的 LCD 屏也显示了一个空白的窗口。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第39张图片

3、Ubuntu  本机 Kits  编译 Qt 应用程序

我们在 test 工程里已经选择使用 ATK-I.MX6U Kit。那么别外一个就是 Qt Creator 安装时自带的 Kit,名字叫 Desktop Qt5.12.9 GCC 64bit。我们要在 Ubuntu 上运行,那么我们就选择此项,编译出的程序就可以在 Ubuntu 上运行啦!

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第40张图片

点击运行,可以看到程序执行时是显示一个空白的窗口。

【ARM嵌入式Linux】正点原子I.MX6U-ALPHA的QT交叉编译环境搭建_第41张图片

至此正点原子 I.MX6U 出厂系统 Qt 的交叉编译环境,已经搭建完成。

 

你可能感兴趣的:(QT,嵌入式Linux,linux,arm,ubuntu,qt5)