Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境

Ubuntu20.04.1X86_64Qt5.14.2配置ARM64交叉编译环境

 

已有环境:

PC Linux Ubuntu20.04.1 64位 X86架构

Qt 版本号5.14.2

交叉编译器:gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu

 

概述:由于习惯性偷懒,所以不论做什么,都喜欢找现成的工具做开发,最近需要开发Ubuntu系统的软件,所以选择Qt,做个简单的界面,但是在交叉编译环节却困难重重,网上的介绍有很多,但是简单有效的方案不多,因此写下这个文档记录一下。

 

需求:

在ARM64平台的Ubuntu18.0.*系统中(Xavier),内置硬件测试程序(HW_CIT),主要功能为自动测试各种硬件是否正常。

 

工具:Qt 源码 地址:http://download.qt.io/archive/qt/

Qt Ubuntu 版本安装包 地址:http://download.qt.io/archive/qt/

ARM64交叉编译工具 (由于之前编译RK3399,所以配置了gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu编译器,网上应该还有很多其他版本)

(可以直接网上搜,或者去官网下载,方法非常多!!!)

Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境_第1张图片

 

 

步骤:

 

1.下载Qt 源码

根据上述的地址,选取自己适用的版本下载即可,我用的是5.14.2,需要注意自己的已有环境,本人PC是Linux系统,我第一次却下载的qt-everywhere-src-5.14.2.zip,解压后,有很多识别不了的符号,编译总是出错,所以应该选择下载qt-everywhere-src-5.14.2.tar.xz

2.下载Linux Qt可运行程序,并安装(记住安装路径,后续有用)

下载qt-opensource-linux-x64-5.14.2.run后,修改权限 sudo chmod +x,然后运行,就会出现图形界面,按步骤一步步安装即可,现在的安装只是适配了,PC现有的编译环境,编译出来的程序只能在X86_64的机器上运行。

查看一下安装路径:(本人是根目录)

只有gcc_64.

在这里我们来描述一下,Qt中最重要的工具qmake,qmake -project 生成*.pro文件;qmake -makefile 生成Makefile文件;Qt除了本身的一些库文件外,最重要的应该就是qmake了,因此我们推断一下Qt的编译过程,build –> 选择相应的qmake --> 根据构建工程选择的配置,生成对应的Makefile –>make -->生成对应的*.o和TARGET out;从上述结论中,我们是不是可以根据qt的源码,编译出对应ARM 64的qmake工具,就可以实现交叉编译了???

3.安装ARM64编译器

sudo cp -rf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu /opt/

我是直接放在了opt下,然后在环境变量里/etc/profile添加全局变量

#borrieguo add arm aarch64

export PATH=$PATH:/opt/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin

然后source /etc/profile

查看配置是否成功 输入aarch64 +TAB是否出现提示:

这样就算配置成功了,要是不放心可以写个简单的Demo测试一下,此步骤省略(主要是我懒,抱拳!!!)

4.编译Qt源码(编译出对应的arm64平台工具链)

这里需要注意一下,编译源码会出现各种问题,遇到过的,没遇到过的,我的做事风格就是走一步看一步,出现什么问题就解决什么问题,但是好多时候就会直接翻车,如果项目时间紧迫,最好还是选取保险的方案比较好, 但是由于我的懒惰,我先选取了方案一,将Qt源码放到ARM64平台上的Linux下,直接编译,这样直接安装,不就可以直接在Xavier上运行了吗?但是理想很丰满,现实很骨干,源码确实不怎么大523M,但是解压编译后,却已经接近100G了,显然对于ROM只有32G的Xavier,是不适用的。方案二,在自己的PC上配置ARM64的编译环境,在PC上编译完成后,配置Qt交叉编译环境,然后再用Qt编译自己写的代码,最后copy到ARM平台上运行即可。

一.解压qt-everywhere-src-5.14.2.tar.xz

xz -d qt-everywhere-src-5.14.2.tar.xz

得到qt-everywhere-src-5.14.2.tar

tar xvf qt-everywhere-src-5.14.2.tar.xz

得到文件夹qt-everywhere-src-5.14.2

 

二.修改编译配置文件

源码中qt-everywhere-src-5.14.2/qtbase/mkspecs下,对应的是所有的编译平台,我们只需要修改自己需要的即可,不需要全部配置编译

vim linux-aarch64-gnu-g++/qmake.conf 修改如下:

Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境_第2张图片

这些工具需要和自己的交叉编译工具,保持一致,否则编译失败

三.开始编译,进入根目录cd qt-everywhere-src-5.14.2

source /etc/profile

./configure -prefix /home/borrieguo/Qt5.14.2/5.14.2/aarch64 -make libs -xplatform linux-aarch64-gnu-g++ -no-opengl -skip qtdeclarative

 

-prefix 代表你的安装文件夹

-xplatform 代表你所制定的编译器

no-opengl 跳过编译openGL(因为我已经安装了Qt,所以不需要界面)

-skip qtdeclarative 跳过 qtdeclarative(不跳过,编译出错,出错的原因不清楚)

如果有别的需求,可以./configure -help查看具体命令

 

make -j16 2>&1 | tee build.log(线程开到了最大,并把log存在了本地)我这样编译需要十几分钟,具体时间比较依赖自己PC的配置。

 

Mkdir -p Qt5.14.2/5.14.2/aarch64,创建安装文件夹

make install

 

四.查看结果:

安装成功!!

 

4.配置Qt,添加交叉编译环境

一.打开Qt

二.tools → options,打开面板

三.设置compilers,手动添加ARM64交叉编译器

add c

Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境_第3张图片

add c++

Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境_第4张图片

四.手动add qt version

Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境_第5张图片

Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境_第6张图片

五.手动add kits

Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境_第7张图片

 

六.新建工程&编译

选择刚刚手动添加的kits

Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境_第8张图片

编译:output如下

Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境_第9张图片

 

Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境_第10张图片

验证成功!!!

 

备注:这只是个人的配置记录,仅供参考!

 

你可能感兴趣的:(linux,ubuntu)