|
uC-libc is the original library for uClinux. It was based on sources from the Linux-8086 C library which was part of the
ELKs project with
m68000 support added by Jeff Dionne and Kenneth Albanowski. It is a fairly complete libc implementation,
however, some of the API's are a little non-standard and quite a few common libc routines are not present. Currently it has stable support for m68000, ColdFire and
ARM (Non-MMU) architectures. It was primary design goal is to be small and
light weight. It does try to conform to any standards, although
its API tries to be compatible with most libcs, it is not always exactly the same.
uClibc is a derivative of uC-libc designed to fix the problems with
uC-libc. It makes all the API's standard (correct
types, args, etc), fills in many of the missing routines,
and has been ported to a lot of architectures. In general it tries to
provide glibc compatibility so that porting applications to the smaller uClibc is quite easy. It can be used on standard VM Linux
and uClinux. To make it even more compact it can also be compiled as a shared library on most platforms with MMU support
Erik Andersen has been
the driving force behind uClibc and has done a great job. uClibc supports a large array of processors: m68000, Coldfire, ARM, MIPS, v850, x86, i960, Sparc, SuperH, Alpha, PowerPC and Hitachi 8.
uClibc is much easier to adapt to a new architecture and its ever
growing platform support is testimony to this.
The uClinux distribution provides an environment that can compile
using either uC-libc or uClibc depending on your needs. For m68000 and Coldfire platforms it is generally better to chose uC-libc as it
supports shared libraries and is the most commonly used libc for these CPUs. uClibc also works quite well with almost all platforms supported by the distribution. Which libc you choose to use will be decided by your requirements.
|