1、安装Qt并下载对应源码
下载并安装Qt
下载对应的源码包,windows版本选择zip格式的源码包
Index of /archive/qt/5.14/5.14.2https://download.qt.io/archive/qt/5.14/5.14.2/链接https://download.qt.io/archive/qt/5.14/5.14.2/single/
2、下载ARM交叉编译工具
Arm GNU Toolchain Downloads – Arm DeveloperDownload the Arm GNU Toolchain, an open-source suite of tools for C, C++, and Assembly programming for the Arm architecture.https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloadsLinaro Releaseshttps://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/
ARM相关工具链发布主要有ARM、Linaro、Codesourcery。
命名规则
交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi]
- arch : 体系架构,如arm、aarch32(ARM32架构)、aarch64(ARM64架构)
- vendor : 工具链提供商,none。
- os : 目标操作系统,linux适用于Linux OS。
- eabi : 嵌入式应用二进制接口(Embedded Application Binary Interface)
-
abi : 二进制应用程序接口(Application Binary Interface (ABI) for the ARM Architecture)。在计算机中,应用二进制接口描述了应用程序(或者其他类型)和操作系统之间或其他应用程序的低级接口。
gnu/linux - 表示使用glibc运行库
配置交叉编译器
将压缩包解压到任意文件夹下,进入bin文件夹复制路径添加到环境变量中
3、安装需要的工具
1.安装Active Perl
2.安装python
4、交叉编译Qt源码
win+r输入cmd进入命令行控制终端,将路径切换到Qt源码目录下
cd /d D:\qt-everywhere-src-5.14.2
1.编译配置
configure.bat -release -static -opensource -prefix D:\aarch64-linux-gun-kit -nomake tests -nomake examples -no-opengl -skip qtvirtualkeyboard -platform win32-g++ -xplatform linux-aarch64-gnu-g++
-release | 编译release版本 |
-opensource | 表示开源许可 |
-prefix | 指定安装目录,根据自己喜好;安装后qmake程序默认就会根据这个目录路径去搜索头文件和库文件 |
-nomake | 表示不编译后面参数指定的模块 |
-no-opengl | 表示不编译OpenGL,这个我们用不着,也没有安装OpenGL环境,所以不编译,否则会出错 |
–skip qtvirtualkeyboard | 跳过qtvirtualkeyboard,没有相应库环境,不编译,否则编译和安装过程中可能会报错。 |
-xplatform linux-aarch64-gnu-g++ | 指定交叉编译器配置目录为linux-aarch64-gnu-g++,qmake会到当前目录下的qtbase/mkspecs/linux-aarch64-gnu-g++里读取qmake.conf文件,找到配置文件里的交叉编译工具来编译Qt动态库。 |
默认-shared | 编译动态库,这里设为静态库 |
默认-platform | win32-g++,指定本地编译器配置目录,到当前目录下的qtbase/mkspecs/win32-g++目录里读取qmake.conf文件,找到本地编译工具来编译qmake。 |
使帮助可以查看更多用法
.\configure.bat --help
配置或编译过程中如果出现如下错误
1、请检查环境配置是否正确,可以使用cmd命令行检查环境变量是否存在aarch64-linux-gnu-g++的可执行程序
2、根据configure脚本中的 -xplatform 参数选择的架构、环境及运行库的编译配置进入目录(D:\qt-everywhere-src-5.14.2\qtbase\mkspecs)找到相应文件夹里的qmake.conf文件,将里面指定的交叉编译工具改为本地环境变量配置里的编译工具
2.编译源码
mingw32-make -j8 V=s
mingw32-make | 使用当前系统下Qt的mingw编译器,同样在环境变量里配置 |
-j8 | 允许8个编译命令同时执行 |
V=s | 提供更详细的构建信息 |
3.安装工具
mingw32-make install -j8 V=s
如果在安装过程重出现 错误、缺失文件,通常是模块部署的问题,在不需要的情况下可以通过-skip参数重新配置编译
./configure.bat -release -static -opensource -prefix D:\CrossCompileToolChain\arrch64-linux-gun-kit -nomake tests -nomake examples -no-opengl -skip qtwebchannel -skip qtdeclarative -platform win32-g++ -xplatform linux-aarch64-gnu-g++