uClibc -- a C library for embedded systems

µ C l i b c

uClibc -- a C library for embedded systems
Click Here to Return to the main uClibc webpage.
Older News
- 25 January 2003, dev system updates, arm image released A number of additional problems have been fixed and the arm build is now, finally, compiling and working as expected. As such, I have updated the i386 development system image, the powerpc development system image, and I am also releasing upon an unsuspecting world the brand new arm development system image! Have fun! All three development system images were compiled and built using the stock buildroot system. These were also built using the (about to be announced in a couple on minutes) uClibc 0.9.17 release, so if you want to begin compiling and testing stuff with uClibc, but you don't feel like spending the _hours_ it takes to download, configure, and build your own uClibc based development system -- then you may want to download these and give them a try. They each contain a 100 MB ext2 filesystem with everything you need to begin compiling your own applications. I have (at least minimally) tested each of them and verified that the included gcc and g++ compilers produce working uClibc linked executables. Oh, and I have also have updated the uClibc/gcc toolchain builders, so if you just want a simple uClibc/gcc toolchain, one of these should work for you. 10 January 2003, dev system updates, powerpc image released A few problems showed up in yesterday's development system release (adduser was broken, gdb didn't work, libstdc++ shared libs were missing, etc). So I've updated the i386 development system image to fix these problems. Also, the powerpc development system image has finally finished compiling and is now released upon an unsuspecting world. Have fun! 9 January 2003, uClibc development system released CodePoet Consulting (i.e. Erik) has been working hard on buildroot recently, and is pleased to offer a full stand-alone uClibc-only development system. This is an ext2 filesystem for i386 containing all the development software you need to build your own uClibc applications. With bash, awk, make, gcc, g++, autoconf, automake, ncurses, zlib, openssl, openssh, gdb, strace, valgrind, busybox, GNU coreutils, and more, this should have pretty much everything you need to get started building your own applications linked against uClibc. By using a uClibc only system, you can avoid all the painful cross-configuration problems that have made using uClibc somewhat painful in the past. A powerpc and an arm version are in progress. Expect them to be released shortly.... The uClibc development system is an 18MB bzip2 compressed ext2 filesystem, so be prepared to wait if you are on a slow link. If you wish to have more space, you can loop mount it and 'cp -a' the contents to their own partition, or do what I did... WARNING, the following can be very dangerous. Please be sure you know what you are doing before trying this. I am not responsible if you lose all your important data.I had a spare hard drive (in my case /dev/hdg but you'll want to adapt this to your own needs), so I partitioned it with a single ext2 partition filling the drive (in my case /dev/hdg1). Then I ran:
          bzcat root_fs-i386.bz2 | dd of=/dev/hdg1
          e2fsck -f /dev/hdg1
          resize2fs -p /dev/hdg1
which overwrote everything on /dev/hdg with the new uClibc devel system, and then expanded the filesystem with the uClibc devel system till it filled the whole drive. 8 November 2002, uClibc 0.9.16 Released CodePoet Consulting is pleased to announce the immediate availability of uClibc 0.9.16. This release adds full support (including a native shared library loader) for the CRIS architecture, contributed by Tobias Anderberg. Stefan Allius contributed a number of patches to fix the initialization order for shared library global constructors and destructors as well as a large number of SuperH fixes and cleanups. uClibc now compiles with newer versions of gcc (i.e. RedHat 8.0). Thanks to Christian Michon, uClibc no longer requires perl to compile. Steven J. Hill fixed dlopen for mips. Several problems with pty and tty handling were fixed. Manuel Novoa added new support for an /etc/TZ file to globally set the system timezone, and fixed up a number of remaining wide char issues. Manuel is still hard at work on bringing full locale support (optional of course) to uClibc. And of course, this release includes the usual pile of bug fixes. Many thanks for the large number of patches and fixes that were contributed! Erik and Manuel have been working on a document describing some of the differences between uClibc and glibc. It's not yet 100% complete, and it hasn't been nicely formatted yet. But it contains a lot of helpful information and is worth a look. And finally, the the old uClibc configuration system has been completely removed (and there was much rejoicing). It was replaced with an entirely new system based on LinuxKernelConf, which has since been included into Linux 2.5.45, so it looks like Erik made the right choice. Of course, those who have existing build systems using uClibc will need to make a few changes... We think the change is worth it. As usual, the Changelog and source code for this release are available here. You might want to download uClibc from the closest kernel.org mirror site. Just pick the closest mirror site, and then go to http://www.XX.kernel.org/pub/linux/libs/uclibc/ to download uClibc, where XX is your two letter country code. Updated gcc-3.2 and gcc-2.95 toolchains will be released shortly. 16 September 2002, gcc-3.2 and gcc-2.95 toolchains released CodePoet Consulting (i.e. Erik) has released updated gcc-3.2 and gcc-2.95 uClibc toolchains. These toolchains build real gcc cross compilers (i.e. not just a wrapper) and create executables linked vs uClibc. The new gcc-3.2 provides uClibc support with the latest and greatest compiler available from the gcc team. The gcc-2.95 toolchain has been updated to the latest version of uClibc and now provides full C++ support, using the STLport standard C++ library. This toolchain should make it easy for anyone to build uClibc based applications. Source code can be downloaded here. Be aware that much of the needed source code will actually be downloaded on when you compile the toolchains. To build a toolchain, simply grab the source, edit the Makefile to select where you would like the toolchain installed, run 'make', and then go watch TV, eat dinner, or visit with your friends while it compiles. It takes about 15 minutes for Erik to compile the gcc-3.2 toolchain (w/C++ support) on his Athlon XP 1600 (not counting the time it takes to download source code). 27 August 2002, uClibc 0.9.15 Released CodePoet Consulting is pleased to announce the immediate availability of uClibc 0.9.15. This release fixes a number of problems that turned up since the last release. The good news is that uClibc now passes all tests in the perl 5.8 and Python 2.2.1 test suites, both with and without pthreads. So without any further ado.... The Changelog and source code for this release are available here. Have fun! 12 August 2002, uClibc 0.9.14 Released CodePoet Consulting is slightly less pleased then usual to announce the immediate availability of uClibc 0.9.14. This is, unfortunately, a bugfix release intended to fix the couple of dumb things that slipped into the previous release. Version 0.9.13 of uClibc would fail to compile when enabling both RPC and Pthreads. There was also a problem with RPC thread local storage (but noone noticed since it didn't compile ;-). Also, the thread locking in exit(), onexit() and atexit() was broken, and wasn't actually locking anything. This release also fixes uClibc's gcc wrapper to use crtbeginS.o and crtendS.o when compiling PIC code, fixing a subtle bug (that was much less subtle on powerpc). Finally, this release includes a few minor compile warning cleanups. The Changelog and source code for this release are available here. Have fun! 12 August 2002, Native uClibc/gcc-3.1.1 toolchain released CodePoet Consulting (i.e. Erik) has released an updated native uClibc/gcc-3.1.1 toolchain. This toolchain builds a real gcc cross compiler (i.e. not just a wrapper) and creates executables linked vs uClibc. This toolchain has been (briefly) tested as working on x86, arm, mips, and arm7tdmi (uClinux). This toolchain provides a number of improvements over previous releases. In particular, Steven J. Hill found and fixes a number of "glibc-isms" in the libstdc++ math support which caused a number of math functions to be mapped to the non-standard named under GNU libc. This release also includes greatly improved uClinux "elf2flt" support, and it now produces working flat binaries for my uClinux/arm7tdmi system. The native uClibc/gcc-2.95 toolchain will be updated in a few days, and will include STLport which will allow that toolchain to also provide full C++ support. This toolchain should make it easy for anyone to build uClibc based applications. Source code can be downloaded here. Be aware that much of the needed source code will actually be downloaded on demand when you compile things. To build the toolchain, simply grab the source, edit the Makefile to select where you would like the toolchain installed, run 'make', and then go watch TV, eat dinner, or visit with your friends while it compiles. It takes about 15 minutes for Erik to compile the gcc-3.1.1 toolchain (w/C++ support) on his Athlon XP 1600 (not counting the time it takes to download source code). Your results may vary... 9 August 2002, uClibc now mirrored on kernel.org! uClibc is now available from the kernel.org mirrors! This should make uClibc downloads much faster. The kernel.org mirrors will have all uClibc release versions (everything but the daily snapshots). Here is a list of all the kernel.org mirror sites. Just pick the closest mirror site, and then go to "/pub/linux/libs/uclibc/" to download uClibc. Just pick the closest mirror site, and then go to http://www.XX.kernel.org/pub/linux/libs/uclibc/ to download the latest uClibc release from a nice fast system. 9 August 2002, uClibc 0.9.13 Released CodePoet Consulting is pleased to announce the immediate availability of uClibc 0.9.13. After several days of testing, this release is looking very solid. This release fixes three security vulnerabilites in previous releases. There was an off-by-one buffer overflow in the group handling code, and integer overflows in calloc() and xdr_array(). This release adds native shared library support for the Hitachi SuperH architecture, thanks to Stefan Allius and Edie C. Dost. A new mmap based malloc was implemented by Miles Bader. This is much smarter than the old "malloc-simple" and is now the default for mmu-less systems, where it should greatly help reduce memory fragmentation and wastage. In addition to these larger items, there has been a lot of work done to make uClibc a cleaner, more capable, library. Most applications now compile and run without any trouble. The Changelog and source code for this release are available here. Have fun! 11 July 2002, Native uClibc toolchains updated CodePoet Consulting (i.e. Erik) has released updated native uClibc/gcc-3.1 and uClibc/gcc-2.95 toolchains. These toolchains build real gcc cross compilers (i.e. not just a wrapper) and create executables linked vs uClibc. These toolchains have been tested and found working on x86, arm, and mmu-less arm. They should work (at least in theory!) for all architectures supported by uClibc. These toolchains should make it easy to anyone to build uClibc based applications. Source code can be downloaded here. Be aware that much of the needed source code will actually be downloaded on demand when you compile things. To build the toolchain, simply grab the source, edit the Makefile to select where you would like the toolchain installed, run 'make', and then go watch TV, eat dinner, or visit with your friends while it compiles. It takes about 15 minutes for Erik to compile the gcc-3.1 toolchain (w/C++ support) on his Athlon XP 1600 (not counting the time it takes to download source code). Your results may vary... 20 June 2002, uClibc 0.9.12 Released CodePoet Consulting is pleased to announce the immediate availability of uClibc 0.9.12. This release adds an i960 port, an initial alpha port, fully working mips shared library support, shared library support fixes for on powerpc, and many other improvements. One very exciting new feature is nearly complete locale support, thanks to a lot of hard work by Manuel Novoa III. uClibc's locale support is much smaller than glibc's, though it is also slightly less flexible. This release was delayed by a month due to the arrival of a new baby at Erik's house. For those that have been anxiously waiting, this release should certainly be worth the wait. Have fun! The Changelog and source code for this release are available here. 28 May 2002, Native uClibc/gcc-3.1 toolchain CodePoet Consulting has released source code and a Makefile to build a gcc-3.1 toolchain that natively targets uClibc. Additionally, the gcc-3.0.4 and gcc-2.95 toolchains have also been updated. These toolchains make it easy to build uClibc based applications. Source code can be downloaded here. and is now much smaller, since much of the needed binutils and gcc source code is now downloaded on demand. To build the toolchain, simply grab the source, edit the Makefile to select where you would like the toolchain installed, and then run 'make' and wait for it to compile. 10 April 2002, uClibc 0.9.11 Released CodePoet Consulting is pleased to announce the immediate availability of uClibc 0.9.11. This release is primarily focused on fixing the issues that have turned up since the last release. Several bugs in the gcc wrapper have been fixed, allowing applications such as iproute2 and XFree86 to link properly. Large file support has been improved, and a thread locking bug was fixed that could cause s*printf calls to deadlock when threading was enabled. Several bugs were also fixed with the powerpc, h8300, m68k, sparc, and mips architecture support. Many additional applications now compile and run perfectly and have been added to the working applications list . The Changelog and source code for this release are available here. 10 April 2002, Native uClibc/gcc-3.0.4 toolchain CodePoet Consulting has released source code and a Makefile to build a gcc-3.0.4 toolchain that natively targets uClibc. This brings with it full C++ support for uClibc, including the libstdc++ library. A gcc-2.95.x toolchain will also be released shortly, but is not yet ready. At this time, only source code and a Makefile for the native uClibc toolchain is being released (i.e. no binaries, sorry). Source code can be downloaded here. To build the toolchain, simply grab the source, edit the Makefile to select where you would like the toolchain installed. Then run 'make' and wait for it to compile. If you do not have a copy of uClibc already, it will download the latest daily snapshot. 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, 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. 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. 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.

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