spark51 发表于 2015-8-12 10:22:19

(转)arm交叉编译器gnueabi、none-eabi等的区别

转自:http://www.veryarm.com/296.html

一直以为“arm-none-eabi-gcc” 里的none是not的意思, 就是说不支持EABE的GCC,看了文章后才发现有多么的自以为是,下面是转过来的一部分内容。分享给需要的童鞋:



命名规则交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi]

[*]arch - 体系架构,如ARM,MIPS
[*]vendor - 工具链提供商
[*]os - 目标操作系统
[*]eabi - 嵌入式应用二进制接口(Embedded Application Binary Interface)
根据对操作系统的支持与否,ARM GCC可分为支持和不支持操作系统,如

[*]arm-none-eabi:这个是没有操作系统的,自然不可能支持那些跟操作系统关系密切的函数,比如fork(2)。他使用的是newlib这个专用于嵌入式系统的C库。
[*]arm-none-linux-eabi:用于Linux的,使用Glibc

实例1、arm-none-eabi-gcc(ARM architecture,no vendor,not target an operating system,complies with the ARM EABI)
用于编译 ARM 架构的裸机系统(包括 ARM Linux 的 boot、kernel,不适用编译 Linux 应用 Application),一般适合 ARM7、Cortex-M 和 Cortex-R 内核的芯片使用,所以不支持那些跟操作系统关系密切的函数,比如fork(2),他使用的是 newlib 这个专用于嵌入式系统的C库。
2、arm-none-linux-gnueabi-gcc(ARM architecture, no vendor, creates binaries that run on the Linux operating system, and uses the GNU EABI)
主要用于基于ARM架构的Linux系统,可用于编译 ARM 架构的 u-boot、Linux内核、linux应用等。arm-none-linux-gnueabi基于GCC,使用Glibc库,经过 Codesourcery 公司优化过推出的编译器。arm-none-linux-gnueabi-xxx 交叉编译工具的浮点运算非常优秀。一般ARM9、ARM11、Cortex-A 内核,带有 Linux 操作系统的会用到。
3、arm-eabi-gccAndroid ARM 编译器。
4、armccARM 公司推出的编译工具,功能和 arm-none-eabi 类似,可以编译裸机程序(u-boot、kernel),但是不能编译 Linux 应用程序。armcc一般和ARM开发工具一起,Keil MDK、ADS、RVDS和DS-5中的编译器都是armcc,所以 armcc 编译器都是收费的(爱国版除外,呵呵~~)。
5、arm-none-uclinuxeabi-gcc 和 arm-none-symbianelf-gccarm-none-uclinuxeabi 用于uCLinux,使用Glibc。
arm-none-symbianelf 用于symbian,没用过,不知道C库是什么 。

zuokong2006 发表于 2015-8-12 11:06:24

不错{:sad:}

lkm_unication 发表于 2015-8-12 14:04:26

很好的普及文档, lz 是有心人.

dragonbbc 发表于 2015-8-12 14:06:32

简单易懂,这下明白了

菜包 发表于 2015-8-12 14:19:32

原来如此,用了这么久一直没去了解过

Nexus 发表于 2015-8-12 16:32:39

我看ecos下面用的是arm-eabi-gcc,这又算是什么vender呢?

macaroni 发表于 2015-8-12 16:52:54

涨姿势,字数你妹啊你妹啊

spark51 发表于 2015-8-12 22:37:54

Nexus 发表于 2015-8-12 16:32
我看ecos下面用的是arm-eabi-gcc,这又算是什么vender呢?

我想应该也是none了吧。

ljmdzyx 发表于 2015-8-12 23:48:59

多谢楼主扫盲!      

Nexus 发表于 2015-8-13 15:44:22

spark51 发表于 2015-8-12 22:37
我想应该也是none了吧。

那我还有个问题,eCos提到工具链基于NewLib。这个我们一般使用有什么需要考虑的呢?

imjacob 发表于 2015-8-13 18:59:42

本帖最后由 imjacob 于 2015-8-13 19:01 编辑

文章不错,但好像没讲 none的意思啊arm-none-eabi-gcc 和 arm-eabi-gcc什么区别呢?

另外,这里讲的 arm-none-eabi-gcc 和我以前看到过的arm-elf-gcc 似乎是同一个东西,不知对否

hexenzhou 发表于 2015-8-13 19:22:22

总之,gcc的编译工具非常混乱,容易使人晕头转向。{:sad:}

LQS1200 发表于 2015-9-14 14:25:29

能不能介绍下版本的问题

arm-none-linux-gnueabi-gcc

有2008,2009,q1,q3什么的什么意思?

kingqb 发表于 2016-2-23 11:02:56

不错,正想了解一些交叉编译的东西。
页: [1]
查看完整版本: (转)arm交叉编译器gnueabi、none-eabi等的区别