uClibc -- a C library for embedded systems
|
uClibc is a C library for embedded systems.
uClibc is maintained by
Erik Andersen
and is licensed under the
GNU LIBRARY GENERAL PUBLIC LICENSE
It is my sincere hope that this is as useful to you as it is to me.
|
Mailing List
|
uClibc has a
mailing list.
To subscribe, go and visit
this page.
|
Download
|
- I now have a script that creats a daily snapshot tarball of uClibc and posts it on
here.
- uClibc now has its own publically browsable
CVS tree (this CVS tree is also mirrored onto
uclibc.org but they are both the same thing).
- Anonymous
CVS access, and
- For those that are actively contributing there is even
CVS write access.
|
Known Working Applications List
|
uClibc now has a list of applications
that are known to work. If you have any applications to add to the
list, submissions are welcome!
|
Help Support uClibc development
|
Do you like uClibc? Do you need support? Do you need some feature
added to uClibc? Then why not help out? We are happy to accept
donations, provide support contracts, and implement funded feature
requests. Additionally, uClibc is looking for corporate sponsors to
help sponsor development, pay for bandwidth, and help with hardware
donations, especially donations of hardware for non-Intel
architectures. Click here to help support uClibc and/or request features.
|
Latest News
|
|
TODO
|
Here are a few things on the TODO list:
- Shared library support for all supported architectures.
We now have our own ld.so, but it needs to be ported to
support each architecture.
- Shared library support for mmu-less systems. This is
very doable (think of C++ vtables for example), but will
take some work.
- Someone (hopefully) needs to volunteer to take the
LSB Test Suite,
pull out the C library testing stuff, and convert it
(perl script, by hand, I don't care how) into a form
that is usable without having it take over your entire
system (i.e. similar to what is currently in the uClibc
test suite). This will be enormously helpful!
- other things as I think of them.
|
Other Open Source C libraries:
|
- Al's FREE C Runtime Library
- diet libc
- the minix
C library
- newlib
- and there is a
C library, for
eCos as well.
History
|
This history and origin of uClibc is long and twisty.
In the beginning, there was GNU libc. Then, libc4
(which later became linux libc 5) forked from GNU libc version 1.07.4, with
additions from 4.4BSD, in order to support Linux. Later, the Linux-8086 C library, which is part of
the elks project, was created,
which was, apparently, largely written from scratch but also borrowed code from
libc4, glibc, some Atari library code, with bits and pieces from about 20 other
places. Then uClibc forked off from the Linux-8086 C library in order to run
on µClinux.
I had for some time been despairing over the state of C libraries in Linux.
GNU libc, the standard, is very poorly suited to embedded systems (and it just
gets bigger with every release). I spent quite a bit of time looking over the
other Open Source C libraries that I knew of (listed below), and none of them really
impressed me. I felt there was a real vacancy in the embedded Linux ecology.
The closest library to what I imagined an embedded C library should be was
uClibc. But that had a lot of problems too -- not the least of which was that,
traditionally, uClibc had a complete source tree fork in order to support each
and every new platform, resulting in a big mess of twisty versions, all
different. I decided to fix it and the result is what you see here.
My source tree has now become the official uClibc source tree and it now lives
on cvs.uclinux.org.
To start with, (with some initial help from D. Jeff Dionne), I
ported it to run on x86. I then grafted in the header files from glibc 2.1.3
and cleaned up the resulting breakage. This (plus some additional work) has
made it almost completely independant of kernel headers, a large departure from
its traditional tightly-coupled-to-the-kernel origins. I have written and/or
rewritten a number of things that were missing or broken, and sometimes grafted
in bits of code from the current glibc and libc5. I have also built a proper
platform abstraction layer, so now you can simply edit the file "Config" and
use that to decide which architecture you will be compiling for, and whether or
not your target has an MMU, and FPU, etc. I have also added a test suite,
which, though incomplete, is a good start. Several people have helped by
contributing ports to new architectures, and a lot of work has been done on
adding support for missing features.
|
Links to other useful stuff
|
|
|