Any Unix-like operating system needs a C library: the library which defines the ``system calls'' and other basic facilities such as malloc.
The GNU C library is used as the C library in the GNU system. A modified version of it is used as the C library in Linux-based GNU systems, and the plan is that the next release, 2.0, will be used unmodified as the C library for Linux-based GNU systems.
The history of Unix and various standards determine much of the interface of the C library. In general the GNU C library is supports the ISO C and POSIX standards. We also try to support the features of popular Unix variants (including BSD and System V) when those do not conflict with the standards. Different compatibility modes (selectable when you compile an application) allow the peaceful coexistence of compatibility support for different varieties of Unix.
Today the GNU C library should be almost complete: nearly all known and useful functions from any other C library are available. However, there is still room for improvement. If you would like to add or improve features in the GNU C library, please look through the list of open tasks, then coordinate your work with the maintainers.
The GNU C library is designed to be portable. Although the library
sources are very complex, you can build it for any supported system
with the simple commands
configure & make---provided
your platform is supported!
For more information
on porting and the status of ports for Version 2, see
Porting the GNU C Library.
If you are interested in porting GNU libc
to additional system types, please contact
If you are working on developing or porting GNU libc, you should consider joining the developers mailing list. To join, write to the list keeper. Please do not send a request if you only want to lurk. If you are only interested in announcements of new test releases, write to the announcement list keeper.
The current version is *2.0. The new major version number reflects major changes, several years of work. 1.09.1 was a static library in the style of the 80s; the new version 2.0 implements the state of the art in C library technology. If follows even the most recent standards (ISO C/amendment 1, POSIX.1c, XPG4.2). It is also internationalized, although it is still missing a few functions needed for the most complete internationalization interface known.
Version 2.0 is built as a shared library---in fact, multiple shared libraries. Several parts of the library are separated out and are dynamically linked into the process when needed.
Please read the *announcement for more information about the GNU libc. If you use GNU's libc on a Linux/GNU system, please read the *extended announcement.
Current *test releases for the 2.0 version of GNU libc are available. In the same directory there are several additional package which can be used with the GNU libc. These are distributed separately either because of legal problems (such as the export restriction of cryptographic software) or because they are maintained by people outside the GNU libc developers group.
Currently there are three Add-On package available:
glibc-cryptadd-on. Please do not download the package from a site in the USA if you are outside the USA. Instead, get it from
clonebased thread library. This is currently only usable for ix86, m68k, Alpha, SPARC, and MIPS based GNU/Linux systems. You'll find this in the
localedefutility which comes which the GNU libc. These data files are in the
Please consult the
FAQ file to find out how to handle
these add-ons. The previously available NIS/YP add-on is now
an integral part of the GNU libc itself.
Version 2 currently supports only GNU systems---both Hurd-based and Linux-based GNU systems. Version 1.09.1 supported many more systems; we hope that version 2 will be ported to them. For more information on porting and the status of ports, see Porting the GNU C Library.
This list is not the most up-to-date list of pending tasks. Consult the
PROJECTS in the GNU C library distribution for most recent
getdateaccording to XPG4.2. This is not the same as the implementation currently used in many GNU packages.
fmtmsgaccording to SysVr4 and XPG4.2.
long doublemath functions are still missing. We need advice from people having good knowledge of numeric mathematics.
tsearchfunction implementation should be rewritten to use more sophisticated algorithms. The current implementation uses plain binary trees while a reasonable implementation should use AVL trees or comparable techniques.
The GNU libc was mainly written by Roland McGrath <email@example.com> when he worked for the FSF. Currently the GNU libc is maintained by Ulrich Drepper <firstname.lastname@example.org>. Many others contributed in large amounts.
The support for the GNU Hurd was partly written by Thomas Bushnell, n/BSG <email@example.com> and Miles Bader <firstname.lastname@example.org>. The port for GNU/Linux on the m68k was done and is maintained by Andreas Schwab <email@example.com>, the port for GNU/Linux on the Alpha is due to Richard Henderson <firstname.lastname@example.org> and David Mosberger-Tang <email@example.com>.
Bang-Jun-Young <firstname.lastname@example.org> contributed a Korean translation of this page.
Please send FSF & GNU inquiries & questions to email@example.com. There are also other ways to contact the FSF.
Please send comments on these web pages to firstname.lastname@example.org, send other questions to email@example.com.
Copyright (C) 1996, 1997 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA
Verbatim copying and distribution is permitted in any medium, provided this notice is preserved.
Updated: 11 Mar 1997 tower