12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 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
|