交叉编译工具链整理

  1. 免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译制作),第二是 Codesourcery,第三是Linora。

    收费版有ARM原厂提供的armcc、IAR提供的编译器等等,因为这些价格都比较昂贵,不适合学习用户使用,所以不做讲述。

  2. arm-none-linux-gnueabi-gcc:是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM(32位)系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。
  3. arm-linux-gnueabihf-gcc:是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM(32位)系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。
  4. arm-none-linux-gnueabi-gcc下载http://www.veryarm.com/arm-none-linux-gnueabi-gcc
  5. arm-linux-gnueabihf-gcc下载http://www.veryarm.com/arm-linux-gnueabihf-gcc
  6. aarch64-linux-gnu-gcc下载http://www.veryarm.com/aarch64-linux-gnu-gcc
  7. arm-none-elf-gcc下载http://www.veryarm.com/arm-none-elf-gcc
  8. arm-none-eabi-gcc下载http://www.veryarm.com/arm-none-eabi-gcc
    • aarch64-linux-gnu-gcc:是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARMv8 64位目标中的裸机程序、u-boot、Linux kernel、filesystem和App应用程序。
    • arm-none-elf-gcc:是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM MCU(32位)芯片,如ARM7、ARM9、Cortex-M/R芯片程序。
    • arm-none-eabi-gcc:是 GNU 推出的的ARM交叉编译工具。可用于交叉编译ARM MCU(32位)芯片,如ARM7、ARM9、Cortex-M/R芯片程序。

常用的交叉编译链工具:

arm-none-linux-gnueabi-gcc 

是一个交叉编译器(cross-compiler)的名称,用于在一种架构(如 x86_64 或 ARM)的计算机上编译出另一种架构(在这个例子中是 ARM)上运行的程序。这个命令名由几个部分组成,每个部分都有其特定的含义。下面是 arm-none-linux-gnueabi-gcc 的组成部分解释:

  1. arm: 这部分指定了目标架构(target architecture),即编译器生成的代码将要运行的处理器架构。在这个例子中,它是 ARM 架构,一种广泛使用的精简指令集(RISC)架构,特别是在移动设备和嵌入式系统中。

  2. none: 这个部分通常用于指定厂商或特定的ARM变种。在这个上下文中,none 表示这不是为特定的ARM厂商或变种定制的编译器,而是一个通用的ARM架构编译器。然而,这个部分的确切含义可能会根据编译器的不同而有所不同,有时它也可能被解释为不针对特定的操作系统版本或环境。

  3. linux: 这部分指定了目标操作系统(target operating system)。在这个例子中,它表明编译器是为在Linux操作系统上运行的程序生成的代码。这意呀着编译器将遵循Linux的系统调用和库接口等约定。

  4. gnueabi: 这部分比较复杂,但它通常包含了几个子部分,用于进一步描述目标环境。在这个例子中,gnu 表示GNU项目,它是一系列自由软件的集合,包括GCC编译器。eabi(Embedded ABI,嵌入式应用二进制接口)指的是嵌入式系统的应用二进制接口,它定义了如何在嵌入式环境中调用函数、传递参数等。gnu 和 eabi 结合在一起,表明这是一个遵循GNU项目和嵌入式ABI规范的编译器。

  5. gcc: 这部分指的是GNU编译器集合(GNU Compiler Collection)中的C编译器。GCC是一个开源的编译器套件,支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada和Go等。在这个命令中,gcc 指的是C语言的编译器。

综上所述,arm-none-linux-gnueabi-gcc 是一个用于在Linux系统上编译针对ARM架构的嵌入式系统的C语言程序的交叉编译器。这样的编译器允许开发者在一种类型的计算机上(比如x86_64的PC)为另一种类型的计算机(比如基于ARM的嵌入式设备)编译软件。

gcc-linaro-arm-linux-gnueabihf 

是一个针对 ARM 架构的交叉编译工具链的名称,通常用于在基于 x86 的系统(如个人电脑或服务器)上编译针对 ARM 架构的代码。下面是对这个名称每个部分的解释:

  1. gcc:表示这是一个 GCC(GNU Compiler Collection)编译器。GCC 是一个开源的编译器集合,支持多种编程语言,包括 C、C++、Java、Ada 和其他语言。它是 Linux 系统上最常用的编译器之一。

  2. linaro:表示这个 GCC 版本是由 Linaro 组织提供的。Linaro 是一个致力于开发开源软件在 ARM 架构上最佳运行的协作工程组织。

  3. arm:表示这个编译器是为 ARM 架构的目标系统编译代码的。ARM 是一种广泛使用的 RISC(精简指令集计算机)架构,特别是在移动设备(如智能手机和平板电脑)中。

  4. linux:表示目标操作系统是 Linux。这意味着编译出来的代码将在基于 Linux 的 ARM 系统上运行。

  5. gnueabihf:这是一个指定目标 ABI(应用程序二进制接口)的后缀,用于描述编译器的目标平台特性。

    • gnu:表示遵循 GNU 标准。
    • eabi:表示嵌入式应用程序二进制接口(Embedded ABI),这是一种针对嵌入式系统的标准化接口。
    • hf:表示硬浮点(Hard Float),这意味着浮点运算将由硬件直接支持,而不是通过软件模拟。

综上所述,gcc-linaro-arm-linux-gnueabihf 是一个针对 ARM 架构的 Linux 系统的交叉编译器,它遵循 GNU 标准,使用嵌入式应用程序二进制接口,并支持硬浮点运算。这样的编译器使得开发者可以在非 ARM 架构的系统上编译出能在 ARM 架构的 Linux 系统上运行的代码。

  • 29
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值