Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境Ubuntu20.04.1(X86_64)Qt5.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),主要功能为⾃动测试各种硬件是否正常。
mysql下载选x86还是arm
ARM64交叉编译⼯具 (由于之前编译RK3399,所以配置了gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu编译器,⽹上应该还有很多其他版本)
(可以直接⽹上搜,或者去官⽹下载,⽅法⾮常多)
步骤:
1.下载Qt 源码
根据上述的地址,选取⾃⼰适⽤的版本下载即可,我⽤的是5.14.2,需要注意⾃⼰的已有环境,本⼈PC是Linux系统,我第⼀次却下载的,解压后,有很多识别不了的符号,编译总是出错,所以应该选择下载
2.下载Linux Qt可运⾏程序,并安装(记住安装路径,后续有⽤)
下载后,修改权限 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平台上运⾏即可。
⼀.解压
xz -d
得到
tar xvf
得到⽂件夹
⼆.修改编译配置⽂件
源码中qt-everywhere-src-5.14.2/qtbase/mkspecs下,对应的是所有的编译平台,我们只需要修改⾃⼰需要的即可,不需要全部配置编译
vim linux-aarch64-gnu-g++/f 修改如下:
这些⼯具需要和⾃⼰的交叉编译⼯具,保持⼀致,否则编译失败
三.开始编译,进⼊根⽬录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
add c++
四.⼿动add qt version
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论