yuenshome / yuenshome.github.io

https://yuenshome.github.io
MIT License
84 stars 15 forks source link

交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别 #65

Open ysh329 opened 5 years ago

ysh329 commented 5 years ago

交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别 - 左手牛奶,右手面包 - 博客园 https://www.cnblogs.com/xiaotlili/p/3306100.html

1. ABI和EABI

1.1 ABI:二进制应用程序接口(Application Binary Interface (ABI) for the ARM Architecture)

在计算机中,应用二进制接口描述了应用程序(或者其他类型)和操作系统之间或其他应用程序的低级接口。

ABI涵盖了各种细节,如:

一个完整的ABI,像Intel二进制兼容标准 (iBCS) ,允许支持它的操作系统上的程序不经修改在其他支持此ABI的操作体统上运行。 ABI不同于应用程序接口(API),API定义了源代码和库之间的接口,因此同样的代码可以在支持这个API的任何系统中编译,ABI允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行。

1.2 EABI: 嵌入式ABI

嵌入式应用二进制接口指定了文件格式、数据类型、寄存器使用、堆积组织优化和在一个嵌入式软件中的参数的标准约定。

开发者使用自己的汇编语言也可以使用EABI作为与兼容的编译器生成的汇编语言的接口。 支持EABI的编译器创建的目标文件可以和使用类似编译器产生的代码兼容,这样允许开发者链接一个由不同编译器产生的库。 EABI与关于通用计算机的ABI的主要区别是应用程序代码中允许使用特权指令,不需要动态链接(有时是禁止的),和更紧凑的堆栈帧组织用来节省内存。广泛使用EABI的有Power PC和ARM.

2.2 gnueabi相关的两个交叉编译器: gnueabi和gnueabihf