uclibc与uc-libc的区别
公西国发
2023-12-01
uClinux有两个经常使用的libc库:uC-libc和uClibc.虽然两者名字很相似,其实
有很大的不同,下面就简单的介绍一下二者的不同之处.
uC-libc是最早为uClinux开发的库.它基于Linux-8086 C库的源码,而Linux-8086
C库是Jeff Dionne和Kenneth Albanowski为EKLs项目支持m68000添加的.uC-libc
是一个完全的libc实现,但是,其中有一些api是非标准的,有些libc的标准也没有
实现.现在,uC-libc稳定地支持m68000,ColdFire和ARM(没有MMU)架构.它的首要
设计目标是小,"轻".它尝试着和所有的标准一致,虽然它的API和很多libc都相容,
但是似乎并不像它想的那样和所有标准一致.
uClibc就是为了解决这个问题从uC-libc中发展出来的.它的所有API都是标准的
(正确的返回类型,参数等等),它弥补了uC-libc中没有实现的libc标准,现在已经
被移植到多种架构中.基本上,它试着和glibc兼容,这样将应用程序用uClibc改写
就很容易.它能够在标准的VM linux和uClinux上面使用.为了应用程序的简洁,它
甚至可以在大多数支持MMU的平台上被编译成共享库.Erik Anderson在uClibc背
后做了很多的工作.uClibc支持一系列的处理器:
m68000,Coldfire,ARM,MIPS,v850,x86,i960,Sparc,SuperH,Alpha,PowerPC和
Hitachi 8.不断增加的平台支持显示uClibc能够很容易的适应新的架构.
uClinux发行版提供了环境能够让你选择使用uC-libc或是uClibc编译.对于
m68000和Coldfire平台来说,选择uC-libc还是稍微好一点,因为它支持共享库,而
共享库是这些cpu经常使用的libc.uClibc也几乎和所有的平台都能很好的工作.
选择哪种libc取决于你的需求.