path: root/README
diff options
authorDavid Schleef <>2002-04-20 23:26:32 +0000
committerDavid Schleef <>2002-04-20 23:26:32 +0000
commite261c8f8e55fccea5e9ae4e26cdb6c837e17304c (patch)
treee326ef851ca8560a5af51fc3d76a9ce0288261e6 /README
parent6f691fbee6689ff3b5526ed4517fdc8c6bbf12bc (diff)
Moved old README to INSTALL, and wrote a new README that is much more
like an introduction to the project.
Diffstat (limited to 'README')
1 files changed, 28 insertions, 54 deletions
diff --git a/README b/README
index fd882fc44..5ebe3bda4 100644
--- a/README
+++ b/README
@@ -1,64 +1,38 @@
-* Configuration:
+ uClibc - a small libc implementation
+ Erik Andersen <>
- ln -s ./extra/Configs/Config.<arch> ./Config
-Then edit ./Config for your setup. In particular, modify CROSS and
-KERNEL_SOURCE as necessary. You may also want to modify
-on where you want to install the development environment. By default,
-the development environment is installed into /usr/<arch>-linux-uclibc/.
+uClibc (aka µClibc/pronounced yew-see-lib-see) is size-optimized
+implementation of the standard C library. The primary use is
+for developing embedded Linux systems. It is much smaller then
+the GNU C Library (glibc), but nearly all applications supported
+by glibc also compile and 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 Linux (also known as µClinux) systems on the
+following processors: ARM, i386, h8300, m68k, mips, mipsel,
+PowerPC, SH, SPARC, and v850.
+For installation instructions, see the file INSTALL.
-* Building:
+This distribution contains a wrapper for gcc and ld that allows
+you to use existing toolchains that were targetted for glibc.
+See extra/gcc-uClibc/ for information.
- make
+uClibc strives to be standards compliant, which means that most
+documentation written for functions in glibc also apply 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
+Additional information (recent releases, FAQ, mailing list, bugs,
+etc.) can be found at
-* Installing the development environment:
+uClibc may be freely modified distributed under the terms of the
+GNU Library General Public License, which can be found in the
-(As root, if necessary,)
- make install
-This will install the header files, libraries, and the gcc
-wrapper into the directories defined in Config.
-* Installing the target runtime environment:
-(As root, if necessary,)
- make PREFIX=<temporary path> install_target
-This installs only the files that are necessary to run binaries
-compiled against uClibc. Hint: You probably do not want to install
-the target runtime environment on your host machine.
-* Using uClibc:
-To compile programs with uClibc,
- export PATH={uClibc DEVEL_PREFIX}/bin:$PATH
-and then just ./configure and make as usual.
- You may also want to look at extra/gcc-uclibc/gcc-uclibc.c for
- additional information concerning what options and environment
- variables the gcc wrapper handles.
- There is an unwholesomely huge amount of code out there that
- depends on the presence of GNU libc header files. We have GNU
- libc header files. So we have committed a horrible sin in
- uClibc. We _lie_ and claim to be GNU libc in order to force
- many 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 (such
- as GNU binutils) are especially chummy with glibc, and need
- this behavior disabled by adding CFLAGS+=-D__FORCE_NOGLIBC