Kit 译作套件,也就是开发编译环境套件,我们可以搭建不同平台的套件,以不同的套件
编译出不同平台的应用程序,也验证了 Qt 跨平台的特性!
这里我们需要在脚本里写入设置使能环境变量的指令,首先打开此脚本。(若安装时和编者
安装的目录一样则可以使用如下指令打开)
sudo vi /opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh
在 qtcreator.sh 里的第一行插入如下指令,如下图所示。
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
图 2.3 1 后台运行 Qt Creator
保存脚本文件。使用如下指令打开 Qt Creator。“&”的作用是后台运行。(推荐使用这种
方式打开 Qt Creator)
/opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh &
图 2.3 2 后台运行 Qt Creator
也可以在左上角的软件中心栏输入搜索出“Qt Creator”图标后再单击打开。(这里并不推
荐使用图标打开 Qt Creator,否则编译过程中引用到其他环境变量可能会出现编译报错)
图 2.3 3 从软件搜索栏打开 Qt Creator
打开 Tools(工具),打开 Options(选项)。
图 2.3 4 打开“选项”
配置 Qt Versions,点击添加,选择我们 1.1 小节安装的交叉编译器路径下的 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}。
图 2.3 5 配置 Qt Versions
点击添加,选择 C++。
图 2.3 6 添加 C++
配置编译器,编译器的路径为我们 1.1 小节安装的交叉编译器。路径为/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。
图 2.3 7 配置编译器
配置 Kits,将“名称”改为 ATK-I.MX6U。在 Qt mkspec 处写上“linux-oe-g++”。其他按下图
操作设置。不要漏了其中一项,否则可能编译错误。
图 2.3 8 配置 Kits
2.4 验证搭建的交叉编译 Kits
新建工程
图 2.4 1 新建项目
选择 Application 项目和 Qt Widgets Application 模板。
图 2.4 2 选择项目与模板
项目命名为 test,选择工程的位置,这里位置不要随便选择,建议放在家目录下(/home/用户名)。
图 2.4 3 项目命名为 test
默认使用 qmake,点击下一步。
图 2.4 4 默认构建系统
选择类模板,默认 QMainWindow 类即可。
图 2.4 5 选择类模板
是否选择文件翻译,默认无,点击下一步。
图 2.4 6 跳过文件翻译
选择套件,这里可以两个套件一起选,编译时切换选择 I.MX6U ARM 平台的套件,如下。
图 2.4 7 选择 Kits
默认,点击 Finish,完成。
图 2.4 8 跳过版本控制
如下图选择 ATK-I.MX6U Kit 编译,其中可以看到 Qt Creator 把程序中的类当作未识别的
类。这个可以不用理会。
图 2.4 9 切换 ATK-I.MX6U
想解决这个问题也有方法。因为高版本的 Qt creator 多了一个 ClangCodeModel 插件,把这
个插件去掉,重启 Qt creator 就不会有这个报错信息了。点击“帮助” -> “关于插件”,在 C
++栏找到“ClangCodeModel”,取消勾选即可。点击关闭,会提示是否要现在重启,点击 Now
即可重启生效。
图 2.4 10 取消勾选
开始编译,点击构建,不要点击运行!在 Ubuntu 平台上是运行不了用 ARM 编译器编译出来的
程序的!
图 2.4 11 编译 ARM 平台的应用程序成功
在 test 工程的同级目录下找到 build-test-ATK_I_MX6U-Debug 文件夹,查看编译出来的可执行
程序 test。我们拷贝到出厂文件系统目录下,在串口终端直接执行./test 就可以了。
cd build-test-ATK_I_MX6U-Debug/
ls
图 2.4 12 编译出来的 ARM 平台可执行程序