CentOS 7 搭建交叉编译环境

命名规则:

交叉编译工具链的命名规则为: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等工具按照先编译后链接等内在逻辑串起来;而由交叉编译工具链组成的综合开发环境就是交叉编译环境

参考:

  1. CentOS 7 搭建交叉编译环境(上)
  2. CentOS 7 搭建交叉编译环境(下)
  3. ARM交叉编译器GNUEABI、NONE-EABI、ARM-EABI、GNUEABIHF等的区别
  4. 在CentOS 7上安装arm-linux-gcc-4.4.3交叉编译器
 
喜欢 0
分享