一、准备工作
0.1 为什么要用交叉编译器?
0.2 交叉编译工具
0.3分类和说明
从授权上,分为免费授权版和付费授权版。
0.4命名规则
-
实例
1、arm-none-eabi-gcc
(ARM architecture,no vendor,not target an operating system,complies with the ARM EABI)
用于编译 ARM 架构的裸机系统(包括 ARM Linux 的 boot、kernel,不适用编译 Linux 应用 Application),一般适合 ARM7、Cortex-M 和 Cortex-R 内核的芯片使用,所以不支持那些跟操作系统关系密切的函数,比如fork(2),他使用的是 newlib 这个专用于嵌入式系统的C库。2、arm-none-linux-gnueabi-gcc
(ARM architecture, no vendor, creates binaries that run on the Linux operating system, and uses the GNU EABI)主要用于基于ARM架构的Linux系统,可用于编译 ARM 架构的 u-boot、Linux内核、linux应用等。arm-none-linux-gnueabi基于GCC,使用Glibc库,经过 Codesourcery 公司优化过推出的编译器。arm-none-linux-gnueabi-xxx 交叉编译工具的浮点运算非常优秀。一般ARM9、ARM11、Cortex-A 内核,带有 Linux 操作系统的会用到。
3、arm-eabi-gcc
Android ARM 编译器。4、armcc
ARM 公司推出的编译工具,功能和 arm-none-eabi 类似,可以编译裸机程序(u-boot、kernel),但是不能编译 Linux 应用程序。armcc一般和ARM开发工具一起,Keil MDK、ADS、RVDS和DS-5中的编译器都是armcc,所以 armcc 编译器都是收费的(爱国版除外,呵呵~~)。5、arm-none-uclinuxeabi-gcc 和 arm-none-symbianelf-gcc
arm-none-uclinuxeabi 用于uCLinux,使用Glibc。arm-none-symbianelf 用于symbian,没用过,不知道C库是什么 。
0.5 Codesourcery
0.6 ABI 和 EABI
-
ABI:二进制应用程序接口(Application Binary Interface (ABI) for the ARM Architecture)。在计算机中,应用二进制接口描述了应用程序(或者其他类型)和操作系统之间或其他应用程序的低级接口。
-
EABI:嵌入式ABI。嵌入式应用二进制接口指定了文件格式、数据类型、寄存器使用、堆积组织优化和在一个嵌入式软件中的参数的标准约定。开发者使用自己的汇编语言也可以使用 EABI 作为与兼容的编译器生成的汇编语言的接口。
0.7 arm-linux-gnueabi-gcc 和 arm-linux-gnueabihf-gcc
0.8.arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
- http://www.veryarm.com/296.html
- 参考网友的说法:eabi标准的要好些,可能arm-linux-gcc就是arm-none-linux-gnueabi的一个链接
1.1编译环境
- linux系统 搭建交叉编译环境
2.交叉编译工具下载地址:
3.qt源码下载地址:
- windows系统搭建交叉编译环境
1.2 编译过程
1.安装交叉编译工具
2.解压qt源码
3.交叉编译配置:
4.开始编译
5.操作指令过程
1.3 编译参数解释
1.4 遇到的问题
- 问题一:
以上问题均是下载了.zip格式的包导致;
或者是下载了.tar.gz格式的包,解压又压缩放在windows系统上,又从windows系统上拿到linux系统上就会出现。其中的原因可能windows,linux解析换行符不同,导致configure脚本解析除了问题。重新下载源码编译即可。
问题二:未能生成qtuitools 和qtdesiner库;
这些库在tools模块下,需要编译需要指定 -make tools;默认是不会编译的
问题三: