赞
踩
下载并安装Qt
下载对应的源码包,Linux版本选择tar.gz格式的源码包
Index of /archive/qt/5.14/5.14.2
Arm GNU Toolchain Downloads – Arm Developer
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运行库
配置交叉编译器
由于ARM设备的系统环境是glibc2.23,这里选择linaro的6.5.0版本
将64位x86架构交叉编译器gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu.tar.xz下载并解压到目标路径下
将目标路径添加至当前用户的环境变量中,因为当前所使用的系统的shell是zsh,所以在~/.zshrc中进行添加,shell是bash则在~/.bashrc中添加
export PATH=$PATH:绝对路径:绝对路径
./configure -release -static -opensource -prefix ~/CrossCompileToolChain/aarch64-linux-gun-kit -nomake tests -nomake examples -no-opengl -skip qtvirtualkeyboard -platform linux-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 | 编译动态库,这里设为静态库(-static),动态库可移植(生成的工具编译时可选择生成静态或动态库),静态库仅用于编译时链接(生成的工具编译时不能生成动态库)。 |
默认-platform | win32-g++,指定本地编译器配置目录,到当前目录下的qtbase/mkspecs/win32-g++目录里读取qmake.conf文件,找到本地编译工具来编译qmake。 |
根据错误提示分别在两个头文件中包含limits头
接下来根据提示去完成编译和安装即可,加-j 8可以提升编译速度,V=s可以显示更详细的信息
gmake过程中出现报错
往上拉找到首次出现的错误信息,发现还是limit头
编译过程中再次出现错误信息Project ERROR: Unknown module(s) in QT: openglextensions,是由qtquick3d编译的过程中产生,此处无需该模块,重新./configure 加上-skip qtquick3d即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。