EABI与关于通用计算机的ABI的主要区别是应用程序代码中允许使用特权指令,不需要动态链接(有时是禁止的),和更紧凑的堆栈帧组织用来节省内存。广泛使用EABI的有Power PC和ARM. 二. gnueabi相关的两个交叉编译器: gnueabi和gnueabihf 在debian源里这两个交叉编译器的定义如下: gcc-arm-linux-gnueabi – The GNU C com...
其实这两个交叉编译器只不过是gcc的选项-mfloat-abi的默认值不同. gcc的选项-mfloat-abi有三种值soft,softfp,hard(其中后两者都要求arm里有fpu浮点运算单元,soft与后两者是兼容的,但softfp和hard两种模式互不兼容): soft : 不用fpu进行浮点计算,即使有fpu浮点运算单元也不用,而是使用软件模式。 softfp : armel架...
gcc-arm-linux-gnueabihf – The GNU C compiler for armhf architecture 可见这两个交叉编译器适用于armel和armhf两个不同的架构, armel和armhf这两种架构在对待浮点运算采取了不同的策略(有fpu的arm才能支持这两种浮点运算策略)。
最后,arm-linux-gnueabi-gcc和arm-linux-gnueabihf-gcc是针对不同架构(armel和armhf)的交叉编译器。armel架构使用arm-linux-gnueabi-gcc,它采用softfp模式,即使有fpu也不使用,而是使用软件模式进行浮点计算。armhf架构使用arm-linux-gnueabihf-gcc,采用hard模式,使用fpu进行浮点计算,提供最佳性能,但中...
arm-linux-gnueabihf: 针对于目标平台是 Linux 系统,用于交叉编译ARM(32位)系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和 App 应用程序。 arm-eabi-gcc: 用于编译 ARM 架构的裸机系统,包括 ARM Linux 的 boot、kernel,不适用编译 Linux 应用 Application aarch64-elf: 用于编译 ARM v8...
arm-none-linux-gnueabi-gcc: 用于交叉编译ARM(32位)系统中所有环节的代码,包括裸机程序、u-boot、...
两者主要区别是,ABI是计算机上的,EABI是嵌入式平台上(如ARM,MIPS等)。 arm-linux-gnueabi-gcc 和 arm-linux-gnueabihf-gcc 两个交叉编译器分别适用于 armel 和 armhf 两个不同的架构,armel 和 armhf 这两种架构在对待浮点运算采取了不同的策略(有 fpu 的 arm 才能支持这两种浮点运算策略)。
在基于ARM的嵌入式系统开发中,常常用到交叉编译的GCC工具链有两种:arm-linux-*和 arm-elf-*,两者区别主要在于使用不同的C库文件。arm-linux-*使用 GNU的Glibc,而arm-elf-*一般使用 uClibc/uC-libc或者使用REDHAT专门为嵌入式系统 的开发的C库newlib.Glibc。uClibc/uC-libc以及 newlib都是C语言库...
EABI与关于通用计算机的ABI的主要区别是应用程序代码中允许使用特权指令,不需要动态链接(有时是禁止的),和更紧凑的堆栈帧组织用来节省内存。广泛使用EABI的有Power PC和ARM.二. gnueabi相关的两个交叉编译器: gnueabi和gnueabihf 在debian源里这两个交叉编译器的定义如下:gcc-arm-linux-gnueabi – The...