(转)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库是什么 。
不错{:sad:} 很好的普及文档, lz 是有心人. 简单易懂,这下明白了 原来如此,用了这么久一直没去了解过 我看ecos下面用的是arm-eabi-gcc,这又算是什么vender呢? 涨姿势,字数你妹啊你妹啊 Nexus 发表于 2015-8-12 16:32
我看ecos下面用的是arm-eabi-gcc,这又算是什么vender呢?
我想应该也是none了吧。 多谢楼主扫盲! spark51 发表于 2015-8-12 22:37
我想应该也是none了吧。
那我还有个问题,eCos提到工具链基于NewLib。这个我们一般使用有什么需要考虑的呢? 本帖最后由 imjacob 于 2015-8-13 19:01 编辑
文章不错,但好像没讲 none的意思啊arm-none-eabi-gcc 和 arm-eabi-gcc什么区别呢?
另外,这里讲的 arm-none-eabi-gcc 和我以前看到过的arm-elf-gcc 似乎是同一个东西,不知对否 总之,gcc的编译工具非常混乱,容易使人晕头转向。{:sad:} 能不能介绍下版本的问题
arm-none-linux-gnueabi-gcc
有2008,2009,q1,q3什么的什么意思? 不错,正想了解一些交叉编译的东西。
页:
[1]