手臂gcc工具如手臂精灵或臂无 - EABI,有什么区别?

问题描述 投票:41回答:4

当你建立一个gcc工具有建造它的手臂精灵或手臂 - 无 - EABI的可能性,但有什么区别?

我今天用EABI,但那只是因为其他人似乎这样做...但由于这是一个非常糟糕的说法,这将是非常好的理解上的差异。

注意:此工具链将crosscompile基于Cortex-M3的MCU代码:S类似的STM32。

谢谢


一些链接:

EABI:

ELF:

gcc arm elf cortex-m3 eabi
4个回答
37
投票

每个建筑或建筑/ OS夫妇有一个ABI。该ABI(应用程序二进制接口)描述功能如何被调用,系统调用号,参数传递,哪些寄存器可用于...

ABI的描述编译器应该如何生成汇编。

如果你只使用汇编你不需要关心ABI。

手臂精灵和手臂 - 无 - EABI只使用ARM ABI的两个版本。该EABI工具链采用了较新的版本,但也可以被称为臂精灵EABI,因为它会产生小精灵了。


35
投票

Here是一个很好的解释。

工具链,遵循宽松的命名约定:弓[-vendor] [-os] -eabi

  arch    refers to target architecture (which in our case is ARM)
  vendor  refers to toolchain supplier
  os      refers to the target operating system
  eabi    refers to Embedded Application Binary Interface

一些例子:

手臂 - 无 - EABI:此工具链针对ARM架构,没有供应商,不针对任何操作系统,并与ARM EABI的规定。

手臂-NONE-Linux的gnueabi:此工具链针对ARM架构,没有供应商,创建一个Linux操作系统上运行的二进制文件,并使用GNU EABI。它是用来针对基于ARM-Linux系统。


34
投票

我所知:

臂精灵工具链一些OS支持执行elf格式(例如在linux ABI)生成OBJ代码。 OS将控制程序的执行。

臂-NONE-EABI工具链产生用于微控制器或微处理器(对于裸金属,这将是EABI - 嵌入式ABI)OBJ代码。这段代码被下载到干净MC的闪光灯和MC的核心启动电源后执行它。没有OS,扩展命令集,不可能用于与共享的模块连接。


4
投票

该ARM EABI是由ARM创建了一个标准,允许不同的工具链创建兼容的对象。举例来说,这样一个工具链可以连接另一个工具链创建的对象。

© www.soinside.com 2019 - 2024. All rights reserved.