文章目录
- 实验环境介绍
- 一、确认Qt版本
- 二、确认交叉编译工具链
- 三、配置Qt
- 3.1、修改qmake.conf
- 3.2、创建autoConfig.sh配置文件
- 四、编译安装Qt
- 五、移植Qt安装目录
- 六、配置Qt creator
- 6.1、配置qmake
- 6.2、配置GCC编译器
- 6.3、配置G++编译器
- 6.4、配置编译器套件
- 6.5、创建应用
- 七、总结
实验环境介绍
硬件:韦东山T113工业开发板
软件:Tina5.0 SDK
一、确认Qt版本
无论在什么平台,第一件事先确认Qt版本,用哪个就下载哪个。比如项目需要使用Qt5.15.9,那么就下载Qt5.15.9的源码:
解压源码:
tar -xvf qt-everywhere-opensource-src-5.15.9.tar.xz
二、确认交叉编译工具链
交叉编译工具链的确认需要参考目标平台的架构和Qt的版本。比如,我的Qt程序是要放到arm开发板上运行,那就选择arm交叉编译工具链。然而,Qt5.15.9对gcc版本的要求是要大于5,那么所选的arm交叉编译工具链的gcc版本就要高于5。
所以此例中,我所使用的arm交叉编译工具链为gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi
,该工具链的gcc版本为7.2.1
:
交叉编译工具链下载好后,设置环境变量:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
export PATH=$PATH:/t113/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin/
三、配置Qt
3.1、修改qmake.conf
进入mkspecs目录:
cd qt-everywhere-src-5.15.9/qtbase/mkspecs
该目录包含了一系列与平台编译器设置相关的文件夹,我的目标平台是arm架构,那么就修改linux-arm-gnueabi-g++
目录下的qmake.conf:
vi linux-arm-gnueabi-g++/qmake.conf
这里将工具链前缀修改成我们所要用的工具链前缀:
3.2、创建autoConfig.sh配置文件
进入Qt源码根目录,创建配置文件autoConfig.sh:
cd qt-everywhere-src-5.15.9
vi autoConfig.sh
autoConfig.sh内容如下:
./configure \
-xplatform linux-arm-gnueabi-g++ \
-prefix /opt/qt/qtresource/qt5.15.9 \
-release \
-opensource \
-skip qtwayland \
-skip qtlocation \
-skip qtscript \
-make libs \
-optimized-qmake \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-pkg-config \
-no-separate-debug-info \
-pch \
-shared \
-qt-libjpeg \
-qt-zlib \
-qt-libpng
-xplatform linux-arm-gnueabi-g++
指定了目标平台和工具链。-prefix
指定安装目录。其它的都是一些关于Qt的配置选项。
最后执行配置文件进行配置:
./autoConfig.sh
四、编译安装Qt
配置完成后,开始编译:
make -j8
编译成功后,开始安装:
make install
安装路径即为上面所指定的/opt/qt/qtresource/qt5.15.9
。
五、移植Qt安装目录
本文主要讲述通用的Qt移植,以便以后在不同平台移植Qt。
1、在任意位置创建一个文件夹,这里命名为:Qt-5.15.9
,该文件夹将放置所有关于应用程序的支持,如动态库、插件、字体等。
mkdir Qt-5.15.9
2、将安装目录下的bin、lib、plugins目录复制到Qt-5.15.9:
cp -r /opt/qt/qtresource/qt5.15.9/bin Qt-5.15.9
cp -r /opt/qt/qtresource/qt5.15.9/lib Qt-5.15.9
cp -r /opt/qt/qtresource/qt5.15.9/plugins Qt-5.15.9
3、如果项目中有特殊的字体文件,也一并复制到该文件夹:
cp -r fonts Qt-5.15.9
4、想办法将Qt-5.15.9
文件夹弄到开发板,可以直接复制,或通过rootfs overlay的方式。位置随意,我放到了/usr/local/
目录:
5、编写用于设置Qt环境变量的开机自启脚本,内容可参考如下:
#!/bin/shexport QTDIR=/usr/local/Qt-5.15.9
export QT_ROOT=$QTDIRexport PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=$QT_ROOT/pluginsexport QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/fontsexport QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event5
六、配置Qt creator
6.1、配置qmake
6.2、配置GCC编译器
6.3、配置G++编译器
步骤同上。
6.4、配置编译器套件
6.5、创建应用
至此,配置结束。可以自行创建应用程序,编译应用,传到开发板进行验证。
七、总结
至此,Qt移植结束。
参考文章:自动驾驶开发入门(一)—交叉编译64位Qt5.15 (aarch64)