文章目录
实验环境介绍
硬件:韦东山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/
需要注意的是,如果使用buildroot系统。编译buildroot和编译qt要用同一个工具链。
三、配置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、将qt安装目录下的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/sh
export qtdir=/usr/local/qt-5.15.9
export qt_root=$qtdir
export path=$qtdir/bin:$path
export ld_library_path=$qtdir/lib:$ld_library_path
export qt_plugin_path=$qt_root/plugins
export qt_qpa_platform=linuxfb:tty=/dev/fb0
export qt_qpa_fontdir=$qt_root/fonts
export 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)
发表评论