1。什么是ABI
ABI,application binary interface (ABI),应用程序二进制接口。
既然是 接口,那就是某两种东西之间的沟通桥梁,此处有这些种情况:
A。应用程序 <-> 操作系统;
B。应用程序 <-> (应用程序所用到的)库
C 。应用程序各个组件之间
类似于API的作用是使得程序的代码间的兼容,ABI目的是使得程序的二进制(级别)的兼容。
2。什么是OABI 和 EABI
OABI中的O,表示“Old”,“Lagacy”,旧的,过时的,OABI就是旧的/老的ABI。
EABI中的E,表示“Embedded”,是一种新的ABI。
EABI有时候也叫做GNU EABI。
OABI和EABI都是专门针对ARM的CPU来说的。
3。EABI的好处 / 为何要用EABI
A。支持软件浮点和硬件实现浮点功能混用
B。系统调用的效率更高
C。后今后的工具更兼容
D。软件浮点的情况下,EABI的软件浮点的效率要比OABI高很多。
4。OABI和EABI的区别
两种ABI在如下方面有区别:
A。调用规则(包括参数如何传递及如何获得返回值)
B。系统调用的数目以及应用程序应该如何去做系统调用
C。目标文件的二进制格式,程序库等
D。结构体中的 填充(padding/packing)和对齐。
E。
OABI:
* ABI flags passed to binutils: -mabi=apcs-gnu -mfpu=fpa
* gcc -dumpmachine: arm-unknown-linux
* objdump -x for compiled binary:
private flags = 2: [APCS-32] [FPA float format] [has entry point]
* "file" on compiled Debian binary:
ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), for GNU/Linux 2.2.0, stripped
* "readelf -h | grep Flags""
Flags: 0x0
EABI:
* ABI flags passed by gcc to binutils: -mabi=aapcs-linux -mfloat-abi=soft -meabi=4
* gcc -dumpmachine: arm-unknown-linux-gnueabi
* objdump -x for compiled binary:
private flags = 4000002: [Version4 EABI] [has entry point]
* "file" on compiled binary (under Debian):
ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.4.17, dynamically linked (uses shared libs), for GNU/Linux 2.4.17, stripped
* "readelf -h | grep Flags""
Flags: 0x4000002, has entry point, Version4 EABI
[参考]
1。ABI/EABI/OABI
http://blog.csdn.net/hongjiujing/archive/2008/07/21/2686556.aspx
2。Why ARM's EABI Matters
http://www.chineselinuxuniversity.net/articles/1255.shtml
3.[PDF] The new arm ABI (EABI) and Debian armel port
下载此文件 (29 个页面)
4ArmEabiPort http://wiki.debian.org/ArmEabiPort
分享到:
相关推荐
《深入理解arm-none-eabi-gcc工具集合在MinGW环境中的应用》 在嵌入式系统开发领域,GCC(GNU Compiler Collection)是一个不可或缺的工具,它提供了编译、链接和其他必要的功能来创建软件。在MinGW(Minimalist ...
Android Toolchain 环境搭建是 Android 开发的必要步骤之一,本文将详细介绍如何在 WinXP 中搭建 Android Toolchain 环境。 一、安装 Cygwin 在开始搭建 Android Toolchain 环境之前,需要先安装 Cygwin。Cygwin ...
在开发嵌入式系统,尤其是无人机控制软件如PX4时,常常需要使用特定的交叉编译工具链。GCC(GNU Compiler Collection)是其中的关键部分,它允许开发者在宿主机上编写代码,然后针对目标硬件(如ARM架构的微控制器)...
标题 "gcc-arm-none-eabi-9-2020-q2-update.tar.gz" 提供了关于这个软件包的重要信息,它是一个GCC(GNU Compiler Collection)的版本,特别为ARM架构的嵌入式设备设计,名为“arm-none-eabi”,表明这是一套用于非...
在GCC ARM ToolChain中,它可能存储了一些库的头文件和Makefile模板,对于开发来说十分有用。 4. **lib**:这个目录包含了一系列的库文件,如静态库(.a)和动态库(.so)。这些库文件在链接过程中被用到,为开发者...
The GNU Embedded Toolchain for Arm is a ready-to-use, open source suite of tools for C, C++ and Assembly programming targeting Arm Cortex-M and Cortex-R family of processors. It includes the GNU ...
arm-gnu-toolchain-4.8.4.371-linux.any.x86_64.tar.gz 在CENTOS 6.5 64 下测试 ATMEL ST M3 M4 都OK,生成BIN要比KEIL大点
标题中的"gcc-arm-none-eabi-9-2019-q4-major-win32.zip"是一个针对Windows操作系统的GCC交叉编译工具链压缩包。这个工具链是专门为ARM架构的微控制器和嵌入式系统设计的,使得开发者可以在运行Windows的个人电脑上...
最新版本gcc-arm-none-eabi-7-2018-q2-update-win32windows安装包,官网下载太慢,分析一下
gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2(102.28 MB) GNU Embedded Toolchain for Arm是一个即用型开源工具套件,适用于针对Arm Cortex-M和Cortex-R系列处理器的C,C ++和汇编编程。它包括GNU编译(GCC)...
The GNU Embedded Toolchain for Arm is a ready-to-use, open source suite of tools for C, C++ and Assembly programming targeting Arm Cortex-M and Cortex-R family of processors. It includes the GNU ...
gcc-arm-11.2-2022.02-mingw-w64-i686-arm-none-eabi.exe
PX4.Windows.Cygwin.Toolchain 是一款在Windows操作系统上提供类Unix环境和工具的强大软件。其核心在于提供了一个在Windows平台上运行类Unix应用程序、Shell脚本和命令行工具的解决方案。 首先,Cygwin是这款软件的...
在开发过程中,为了充分利用其内置的VideoCore IV(简称VC4)图形处理器,我们需要特定的工具链——VC4 Toolchain。本文将详细讲解这个工具链的组成、用途以及如何在树莓派3B+上编译bootloader。 首先,让我们理解...
在嵌入式开发领域,STM32微控制器广泛应用于各种项目,而Keil uVision5是一款流行的开发环境,尤其适用于ARM架构的芯片。然而,有时开发者可能会选择使用GCC编译器,因为它开源、免费且跨平台。本篇将详细介绍如何在...
在介绍如何制作toolchain之前,我们先来了解一下什么是toolchain。Toolchain在软件开发中特指一系列交叉编译工具集,包含了编译器、链接器、调试器等编译和运行程序所需的一系列工具。对于嵌入式系统开发者来说,...
gcc-arm-none-eabi-9-2019-q4-major-win32 GNU Toolchain for the A-profile Architecture Version 9.2-2019.12 Released: December 19, 2019
在给定的“fsl-toolchain.rar”压缩包中,包含了针对这种处理器的工具链,这对于开发者来说是至关重要的,因为它允许他们在T1系列CPU上进行软件开发和编译。 工具链在编程世界中是一个术语,指的是用于将源代码转换...
riscv-toolchain的源码文件比较大(>3G),由于国内github下载速度限制,经常下载不下来,此文件提供toolchain的全部代码。(百度云链接) 注:如需编译riscv-tools,只需要git clone riscv-tools下载相应文件,先...