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取决于你的需求.
该使用uClibc还是uC-libc?
很多人在初次使用uClinux的时候都会问这个问题.如果你没有阅读过两者的不通,
你应该会问.下面有点更多的信息来帮助你决定哪种是你系统的最好选择.
首先,uC-libc仅仅支持ARM和m68k CPU,所以如果你使用其他的cpu,uClibc可能是
你想要的.
对于Coldfire平台,uC-libc比uClibc做了很多扩展,被认为是初次使用者的最好
选择.当你对环境适应之后,你可以决定是否改变.
对于ARM和其他的m68k变种,选择哪种由你的应用程序来决定.uC-libc可能更小,
它对做共享库使用而裁剪了数据区(data section)(uC-libc16k,uClibc大于
32k).而另一方面,uClibc提供的是一个更加标准的库,所以如果你是把一个新应
用程序移植到uClinux,uClibc会减轻你很多工作.
选择是使用者必须面对的,希望上面的信息能对你们有帮助.
阅读(2550) | 评论(0) | 转发(0) |