命名规则:
交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi]
- arch - 体系架构,如ARM,MIPS
- verdor - 工具链提供商
- os - 目标操作系统
- eabi - 嵌入式应用二进制接口
根据对操作系统的支持与否,ARM GCC可分为支持和不支持操作系统,如
- arm-none-eabi:这个是没有操作系统的,自然不可能支持那些跟操作系统关系密切的函数,比如fork(2)。他使用的是newlib这个专用于嵌
入式系统的C库。
- arm-none-linux-eabi:用于Linux的,使用Glibc
简单的说搭建交叉编译环境就是安装相应的gcc + binutils + C运行库(如、glibc、uclibc或eglibc)。下面来看看具体工具主要完成编译过程的哪些任务:
1)gcc(gnu collect compiler):是一组编译工具的总称。它主要完成的工作任务是“预处理”和“编译”,以及提供了与编译器紧密相关的运行库的支持,如libgcc_s.so、libstdc++.so等。
2 )binutils: 提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(as)、连接(ld)、静态库归档(ar)、反汇编(objdump)、elf结构分析工具(readelf)、无效调试信息和符号的工具(strip)等。通常,binutils与gcc是紧密相集成的,没有binutils的话,gcc是不能正常工作的。
3)C 运行库:glibc = GNU C Library 实现的 C语言标准库(C standard library)是 Linux系统中最底层的API,几乎其它任何的运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现,其实现了常见的C库的函数,支持很多种系统平台,功能很全,但是也相对比较臃肿和庞大;因此在嵌入式开发环境通常采用的是uclibc等小型的C运行库;而 eglibc 是 glibc的一种变体,目标是与glibc兼容,模块化、降低资源和内存的消耗将glibc用于嵌入式系统;
那所谓的交叉编译工具链就是将相关的gcc,binutils、glibc等工具按照先编译后链接等内在逻辑串起来;而由交叉编译工具链组成的综合开发环境就是交叉编译环境;
参考:
 
CentOS 7 搭建交叉编译环境:等您坐沙发呢!