背景:由于最近项目需要做国产系统适配,很多软件需要重新编译以适配不同架构CPU。
环境:
1、主机win10 64bit vmware虚拟主机ubuntu1804 64bit
2、vmware虚拟主机已经安装了qt5.14.2及qt_create4.11.1
一、C/C++程序交叉编译
1、交叉编译环境搭建
①选定编译工具aarch64-linux-gnu
②安装交叉编译工具
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
安装后验证下是否ok,直接输aarch64- 加Tab键如果能自动补全aarch64-linux-gnu-gcc那就问题不大,查看版本信息:aarch64-linux-gnu-gcc -v,能查到如下图所示,说明安装完成。
aarch64-linux-gnu-gcc -v
2、编译源码
例如需要将test.c源码编译成arm64可执行文件,指令如下:
aarch64-linux-gnu-gcc -o test test.c
编译通过后通过file指令查看文件类型是否是ELF:64bit LSB shared object,ARM aarch64...如果是,则完成源码编译。
3、QT搭建arm64编译环境
①下载qt-everywhere-src-5.14.2.tar.xz,并通过xz命令解压出qt-everywhere-src-5.14.2.tar文件,再通过tar命令解压qt-everywhere-src-5.14.2.tar文件,得到文件夹:qt-everywhere-src-5.14.2
xz -d qt-everywhere-src-5.14.2.tar.xz
tar -xvf qt-everywhere-src-5.14.2.tar
查看qt-everywhere-src-5.14.2/qtbase/mkspecs里linux-aarch64-gnu-g++/qmake.conf配置文件内容里的编译器是否是aarch64-linux-gnu- 如果不是需要修改成对应的交叉编译工具名,如下所示:
②进入源码根目录:cd qt-everywhere-src-5.14.2
./configure -prefix /opt/Qt5.14.2/5.14.2/aarch64 -make libs -xplatform linux-aarch64-gnu-g++ -no-opengl -skip qtdeclarative
说明:
- no-opengl是因为之前已经安装过qt的界面版本
-skip qtdeclarative是编译有问题暂时略过
③编译make -j16 2>&1 | tee build.log,注意在编译的时候会输入些lisence选择,选择开源就行。
④安装
因为配置的时候指定的路径是/opt/Qt5.14.2/5.14.2/aarch64,所以需要先创建aarch64文件夹,然后再安装。安装完成后在/opt/Qt5.14.2/5.14.2/aarch64路径下会产生对应的文件夹。
sudo mkdir -p /opt/Qt5.14.2/5.14.2/aarch64
sudo make install
⑤QT配置选项修改
Compliers安装完交叉编译工具,系统能自动找到,如果找不到需要自己通过Add按钮添加
Qt Versions需要添加一个自定义的版本,qmake需要刚编译安装后的qmake
Kits需要选择好自己新添加的Qt Version
⑥工程建立及编译
以上准备工作就绪就可以打开或者创建新的QT项目。构建和运行选aarch64构建项目,编译即可获得arm64所需要的QT应用程序,提供导arm64主机,运行测试。
版权归原作者 weixin_30072103 所有, 如有侵权,请联系我们删除。