uClibc -- a C library for embedded systems
|
uClibc (aka µClibc/pronounced yew-see-lib-see)
is a C library for embedded Linux systems. It is much smaller then the
GNU C Library, but
nearly all applications supported by glibc also work perfectly with uClibc.
Porting applications from glibc to uClibc typically involves just recompiling
the source code. uClibc supports standard Linux architectures (such as x86,
strongArm, and powerpc), and also supports
MMU-less (also known as µClinux)
architectures such as the Coldfire, Dragonball, and ARM7TDMI micro-controllers.
If you are building an embedded Linux system and you find that glibc is
eating up too much space, you should consider using uClibc. If you are
building a huge fileserver with 12 Terabytes of storage, then using
glibc may be a better choice...
uClibc is maintained by
Erik Andersen
and is licensed under the
GNU LIBRARY GENERAL PUBLIC LICENSE
. This license allows you to make closed source commercial applications using
uClibc (Please consider sharing some of the money you make ;-). You do not need
to give away all your source code just because you use uClibc and/or run on Linux.
|
Mailing List
|
uClibc has a
mailing list.
To subscribe, go and visit
this page.
|
Known Working Applications List
|
uClibc now has a list of applications
that are known to work. Submissions are welcome!
Since most applications work just fine with uClibc, we are especially
interested in knowing about any applications that either do not compile
at all or do not work properly with uClibc.
|
Frequently Asked Questions
|
uClibc now has a list of Frequently Asked Questions.
You might want to take a look.
|
Latest News
|
- 21 March 2002, uClibc 0.9.10 Released!
CodePoet Consulting is pleased to announce the immediate
availability of uClibc 0.9.10. This release adds pthreads support
(including pthreads support for mmu-less systems!). Additionally,
thanks to Manuel Novoa III, we now have a completely new stdio
library, which is small, standards compliant, supports pthreads,
wide/narrow streams, large files, and can even operate in a
low-memory unbuffered mode. Many, many bugs have been fixed and a
number of additional applications now compile and run perfectly.
Even with all these changes, the uClibc continues to be very small.
On x86, a default build of the uClibc C library is still just 168k.
To make things more interesting, the release also adds support for
C++ constructors and destructors. To make it easy to use uClibc
when developing C++ applications, this release also provides a
wrapper for the GNU C++ compiler. Of course, for more complex C++
applications, such as those using iostreams, a standard C++ library
(libstdc++) is required. A native GNU toolchain (binutils/gcc) that
provides libstdc++ linked with uClibc 0.9.10 will be released in the
next couple of days, so stay tuned.
The Changelog
and Source code
for this release are available here.
- 4 February 2002, uClibc 0.9.9 Released!
CodePoet Consulting is pleased to announce the immediate
availability of uClibc 0.9.9. With this release,
just about
everything we have tested now compiles and runs. In fact,
there are now so many programs on the working application list that
rather than continue to add to this list, from now on we
will only be adding applications to the not working list. Most applications
on the not working list either require pthreads, or require
wide-character support. Work on wide-character support is
well underway, and will hopefully be moving into CVS in the next week or
two. Full pthreads support and rentrancy are on the TODO list
and are expected to be complete in the next couple of months.
The Changelog
and Source code
for this release are available here.
One final bit on news -- as some of you may have noticed, uclibc.org
has been a bit overloaded and somewhat slow recently. The server should
be getting colocated tomorrow, which will eliminate the speed problem.
During the move, there may be some temporary disruption of service...
Have Fun!
- 22 December 2001, uClibc 0.9.8 Released!
After many months of initial development, we are pleased to announce the
release of uClibc 0.9.8. This release should be quite solid, and is very
usable. This also, hopefully, marks a transition from a slow incubation
phase to a more methodical release cycle. From now one, there should be
approximately one release per month.
The source code for this release is available
here.
- Old News
Click here to read older news.
|
Download
|
- There is now a script that creates a daily snapshot tarball of uClibc and posts it on
here.
- uClibc also has a publicly browsable
CVS tree
- Anonymous
CVS access is available, and
- For those that are actively contributing there is even
CVS write access.
|
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
assist 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.
If you prefer to contact us directly for payments (we have a credit card machine so
you can avoid online payments), hardware donations, support requests, etc., you can
contact CodePoet Consulting here.
|
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:
|
|