uClibc -- a C library for embedded systems

µ C l i b c

uClibc -- a C library for embedded systems
uClibc (aka µClibc but pronounced yew-see-lib-see) is a C library for embedded Linux systems. It is much smaller then GNU libc, but nearly all applications supported by the GNU C Library (aka glibc) also work perfectly with uClibc. Porting applications from glibc to uClibc typically involves just recompiling the source code. uClibc supports standard Linux systems (such as x86, strongArm, and powerpc), and also supports MMU-less (also known as µClinux) systems, such as those based on the Coldfire, dragonball, or arm7tdmi micro-controllers. If you are building an embedded Linux system, and you fine the GNU libc is eating up too much space, you should consider using uClibc instead. If you are working on an older system with limited memory (such as an oldworld Mac), uClibc may also be useful for you. If you are using a standard desktop Linux workstation to develop applications for an embedded Linux system, you can use run uClibc on your workstation while doing development. If you are trying to build a ultra fast fileserver for your company that has 12 Terabytes of storage, then you probably want to use glibc... 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 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.
Download
There is now a script that creates a daily snapshot tarball of uClibc and posts it on here. uClibc also has a publically browsable CVS tree (this CVS tree is also mirrored onto uclibc.org but they are both the same thing). 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.
Latest News
26 November 2001, powerpc shared libraries fully working Dave Schleef finished off the the work needed for shared library support on powerpc. There had been a few problems remaining, and those are now squashed. So shared libs on powerpc should be working fully now. 14 November 2001, m68 compiles again, Large file support working About a month ago I synced the header files with glibc 2.2.4 for better C++ support and better standards compliance. I forgot to sync up m68k, sparc, powerpc, and mipsel. Dave Schleef fixed powerpc while he was fixing up the shared lib loader. I just fixed up m68k, sparc, and mipsel so they should all compile again. I also finished up fixing large file support (just enable DOLFS in your Config file to enable it) and it is working just great, and greatly increases the number of glibc applications that will work "out-of-the-tarball" without needing any changes. 12 November 2001, powerpc shared lib support Thanks to David Schleef, uClibc now has full shared library support on powerpc. This brings full shared library support to x86, ARM, and now powerpc. Thanks Dave! 7 November 2001, uClibc application 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! 18 October 2001, buildroot uClibc example system Those wanting an easy way to test out uClibc and give it a test drive can download and compile buildroot.tar.gz. This is a nifty buildsystem that will automagically download and build a User-Mode Linux kernel, and will then download source for and compile up a fully working uClibc based root filesystem. This should make it easy for people to create their own projects. I hope that this build system will allow people to more easily use and build uClibc based systems. As an example of how nicely this works, the Tuxscreen Project is using a slightly adjusted variant of the buildroot system to cross compile the blob bootloader, linux kernel, and a uClibc based jffs2 root filesystem (busybox, tinylogin, udhcp, lrzsz, pcmcia-cs and microwindows) for ARM. Pretty cool. 11 October 2001, v850 architecture support Miles Bader has contributed support for the v850 architecture. 25 Spetember 2001, header files updated uClibc's header files are now in sync with glibc 2.2.4, allowing better standards compliance, better portibility, and better C++ support. 4 July 2001, ARM shared library support uClibc now has full shared library support on ARM. 9 May 2001, libm added uClibc now has a very complete math library. 9 May 2001, ld.so added uClibc now has a native ld.so. It currently is only ported to work on x86, but porting to other architectures should not be too difficult. 15 March 2001, powerpc port added David Schleef contributed a powerpc port, which is now in CVS. 19 February 2001, SH port added Jean-Yves Avenard contributed an SH port. See his email with the initial patch here. 16 January 2001, uClibc as a shared library As if January 16, uClibc can now be used (at least on x86) as a shared library. See the email announcing this achievement. 11 January 2001, gcc wrapper added Manuel Novoa III has created a wrapper for gcc that makes compiling apps vs uClibc as simple as just setting "CC" to gcc-uClibc-< arch>. This even works when cross compiling! Very cool. 3 January 2001, uClibc now has a web page A lot of work has been going on under the hood with uClibc, so I decided to put together this webpage to let the world know that it exists and is getting to be very usable.
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:
GNU C Library (aka glibc) Al's FREE C Runtime Library diet libc the minix C library newlib and there is a C library, for eCos as well.
Links to other useful stuff
The uClinux home page. The uClinux CVS reporitory. The uClibc home page. BusyBox. CodePoet Consulting.

Mail all comments, insults, suggestions and bribes to Erik Andersen |  |  |  |  |