Posted on 2009-01-07 22:28
buf 阅读(2188)
评论(1) 编辑 收藏 引用 所属分类:
Embedded
arm-elf-*和arm-linux-*都是ARM嵌入式系统开发中常常用到的交叉编译工具链,两者的主要区别在于使用不同的C函数库。arm-linux-*使用PC上比较常见的GLibc,而arm-elf-*使用在一定程度上兼容GLibc但更轻量级的uC-libc或uClibc。
uC-libc和uClibc虽然名称非常相似,但却是两个不同的C函数库。uC-libc最初被作为uClinux的C函数库,它是在Linux-8086 C函数库的基础上发展起来的,目前依然稳定支持m68k、coldfire和ARM(non-MMU)架构的处理器。由于uC-libc的主要目标为保持小的体积和轻量级,而不是遵循某种C函数库标准,因此和GLibc的兼容性并不是很好。
uClibc是在uC-libc的基础之上发展起来的,其主要目标就是为了解决uC-libc的兼容性问题,因此应用程序能够很容易地从GLibc移植到uClibc。uC-libc支持更多的处理器架构,包括m68k, Coldfire, ARM, MIPS, v850, x86, i960, Sparc, SuperH, Alpha, PowerPC……随着uClibc的发展,这个列表依然在不断扩展中。uClinux套件的配置系统允许开发者在uC-libc和uClibc之间进行选择,如果使用了m68k或coldfire架构的处理器,建议使用uC-libc。
www.uclinux.org和ftp.snapgear.org都提供arm-elf-*工具链的下载,不过都是基于gcc v2.95.3版本的,所使用的uClibc也比较旧。ELDK也有基于uClibc的版本。或者,也可以使用buildroot手工编译一个工具链。
参考:
What is the difference between uC-libc and uClibc
GLibc vs uClibc