文章目录
Linux版本
交叉编译环境搭建
交叉编译器安装
qt5.6.2配置
过程中出现的问题
出现错误Failed to load module "canberra-gtk-module"
出现错误No tool chain set from kit "Desktop Qt 5.6.2 GCC 64bit".
Windows版本
首先,我这里需要Qt5.6.2软件版本
下载速度比较慢,这里是下载Linux的版本,windows版本后面我也会说。
Linux版本
把qt软件安装包复制到虚拟机中,准备安装。
先修改该文件的权限,下面为qt opensource linux x64 5.5.1.run 添加可执行权限,再执行安装。
chmod +x qt-opensource-linux-x64-5.6.2.run
sudo ./qt-opensource-linux-x64-5.6.2.run
安装过程就不多说了,跟windows没啥区别,能安装的就都安装。
安装目录建议在
/opt/Qt5.6.2
交叉编译环境搭建
交叉编译器安装
我这里使用的fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0版本的交叉编译器
跟qt的安装类似,修改权限,然后执行交叉编译工具,直接执行脚本安装交叉编译工具,连续敲下两次回车键确认,再输入用户密码即可。本次安装的目录为脚本所指定的默认安装的目录,后面的内核编译环境的交叉编译都是按这个安装目录去操作,所以建议默认安装到 /opt/fsl-imx-x11/4.1.15-2.1.0 这个默认目录。
chmod u+x fsl fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0.sh
./fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0.sh
命令行会提示:
Enter target directory for SDK (default: /opt/fsl-imx-x11/4.1.15-2.1.0)
连续两次按下回车键,程序将会自动安装交叉编译器以及QT 相关的SDK
设置环境变量:
注意“.”后面的空格
. /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
检查编译器是否安装成功:
arm-poky-linux-gnueabi-gcc -v
正常情况下会打印出gcc 的版本信息:
gcc version 5.3.0 (GCC)
qt5.6.2配置
按如下的步骤添加GCC 编译器,(这里我啰嗦一下,我们配置的是 GCC 编译器, Windows下配置的编译器名称叫 MinGW Minimalist GNU on Windows ,实际上是将经典的开源 C/C++语言编译器 GCC 移植到了 Windows 平台下)。在选项中还有更多的编译器名称,这一步也是 Qt 为跨平台做的一步工作。浏览这个路径
/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++
找到我们第 1 节里安装的交叉编译器arm-poky-linux-gnueabi-g++ 。
(题外话这里为什么不是 arm poky linux gnueabi gcc 呢?gcc 是编译 c 语言的, g++可以编译 c 语言还包括 c++,我们 Qt 编程语言就是 c++)。
这里说明一下为什么要在Qt mkspec 填上 linux oe g++ 。实质这里指定了 …/mkspesc/linux-oe-g++ 下的 qmake.conf 文件 用于执行 qmake 时生成 Makefile)
要想正确使用安装的编译工具链 ,还需要向 Qt Creator 加入环境变量。在Qt creator 的启动脚本里使能环境变量,在 /opt/Qt5.5.1/Tools/QtCreator/bin/qtcreator.sh 的第一行插入使能交叉编译工具链的指令
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
(注意这里不能在##!!/bin/sh 以下行插入)。
sudo nano /opt/Qt5.6.2/Tools/QtCreator/bin/qtcreator.sh
保存退出后,先关闭当前的 Qt Creator 。再在终端使用指令启动 Qt Creator 。注意要想这个环境变量生效, 必需通过脚本来启动 Qt Creator ,这里很重要啊 没使能环境变量去使用imx6 kits 会出现“ make c ”之类的错误 。
/opt/Qt5.5.1/Tools/QtCreator/b in/qtcreator.sh &
通过脚本运行
打开后,找到一个例程,右键构建,这里是没有办法运行,因为使用的交叉编译器的ARM的。检查QT编译环境:
qmake -v
QMake version 3.0
Using Qt version 5.6.2 in /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib
修改QT配置文件:
sudo nano /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++/qmake.conf
删除 include(…/oe-device-extra.pri)
保存退出就可以了。
过程中出现的问题
出现错误Failed to load module “canberra-gtk-module”
出现错误No tool chain set from kit “Desktop Qt 5.6.2 GCC 64bit”.
打开Qt之后,选择项目,构建,右下角,红色
显示qmake之后,不能进行make操作
sudo apt-get installbuild-essential
sudo apt-get install libglu1-mesa-dev
安装完毕,可以正常构建
Windows版本
按照最初的设想,希望是在windows环境下进行QT的编辑,最后使用Linux的qt进行编译。windows版本也只是一个编写的过程,所以安装起来也没有像Linux中一样繁琐的过程。
把写好的工程复制到linux环境下
qmake
make
这个Qt教程感觉还是很不错的,至少有个入门。