| |
| uClibc - a Small C Library for Linux |
| Erik Andersen <andersen@codepoet.org> |
| |
| uClibc (aka µClibc/pronounced yew-see-lib-see) is a C library for |
| developing embedded Linux systems. It is much smaller than 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 even supports shared libraries and threading. It currently |
| runs on standard Linux and MMU-less (also known as µClinux) |
| systems with support for alpha, ARM, cris, e1, h8300, i386, i960, |
| m68k, microblaze, mips/mipsel, PowerPC, SH, SPARC, and v850 |
| processors. |
| |
| 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 make more sense. Unless, for |
| example, that 12 Terabytes will be Network Attached Storage and |
| you plan to burn Linux into the system's firmware... |
| |
| uClibc is maintained by Erik Andersen and is licensed under the |
| GNU LESSER GENERAL PUBLIC LICENSE. This license allows you to |
| make closed source commercial applications using an unmodified |
| version of 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. You should, however, |
| carefuly review the license and make certain you understand and |
| abide by it strictly. |
| |
| |
| For installation instructions, see the file INSTALL. |
| |
| uClibc strives to be standards compliant, which means that most |
| documentation written for SuSv3, or for glibc also applies to |
| uClibc functions. However, many GNU extensions are not supported |
| because they have not been ported, or more importantly, would |
| increase the size of uClibc disproportional to the added |
| functionality. There is some discussion of these differences |
| in the "docs" directory. |
| |
| Additional information (recent releases, FAQ, mailing list, bugs, |
| etc.) can be found at http://www.uclibc.org/. |
| |
| uClibc may be freely modified and distributed under the terms of |
| the GNU Lesser General Public License, which can be found in the |
| file COPYING.LIB. |
| |
| Please Note: |
| |
| There is an unwholesomely huge amount of code out there |
| that depends on the presence of GNU libc header files. |
| We have GNU libc compatible header files. So we have |
| committed a horrible sin in uClibc. We _lie_ and claim |
| to be GNU libc in order to force these applications to |
| work as their developers intended. This is IMHO, |
| pardonable, since these defines are not really intended |
| to check for the presence of a particular library, but |
| rather are used to define an _interface_. Some programs |
| are especially chummy with glibc, and may need this |
| behavior disabled by adding CFLAGS+=-D__FORCE_NOGLIBC |
| |
| If you want to make special exceptions in your code which are |
| specifically for uClibc, you can make certain to include features.h, |
| and then have your code check for uClibc as follows: |
| |
| #ifdef __UCLIBC__ |
| do_something_special(); |
| #endif |
| |
| And most of all, be sure to have some fun! :-) |
| -Erik |