GNU C Library
Encyclopedia
The GNU C Library, commonly known as glibc, is the C standard library
C standard library
The C Standard Library is the standard library for the programming language C, as specified in the ANSI C standard.. It was developed at the same time as the C POSIX library, which is basically a superset of it...

 released by the GNU Project
GNU Project
The GNU Project is a free software, mass collaboration project, announced on September 27, 1983, by Richard Stallman at MIT. It initiated GNU operating system development in January, 1984...

. Originally written by the Free Software Foundation
Free Software Foundation
The Free Software Foundation is a non-profit corporation founded by Richard Stallman on 4 October 1985 to support the free software movement, a copyleft-based movement which aims to promote the universal freedom to create, distribute and modify computer software...

 (FSF) for the GNU
GNU
GNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...

 operating system, the library's development has been overseen by a committee since 2001, with Ulrich Drepper from Red Hat
Red Hat
Red Hat, Inc. is an S&P 500 company in the free and open source software sector, and a major Linux distribution vendor. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North Carolina with satellite offices worldwide....

 as the lead contributor and maintainer.

Released under the GNU Lesser General Public License
GNU Lesser General Public License
The GNU Lesser General Public License or LGPL is a free software license published by the Free Software Foundation . It was designed as a compromise between the strong-copyleft GNU General Public License or GPL and permissive licenses such as the BSD licenses and the MIT License...

, glibc is free software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

.

History

glibc was initially written mostly by Roland McGrath
Roland McGrath
Roland McGrath is a computer programmer.While working for the GNU Project, he wrote the GNU C Library, co-wrote GNU Make, worked on the Hurd and GNU Mach, and wrote some parts of GNU Emacs.For a time he worked at the University of Utah's ....

, working for the FSF in the 1980s.

In February 1988, FSF described glibc as having nearly completed the functionality required by ANSI C. By 1992, it had the ANSI C-1989 and POSIX.1-1990 functions implemented and work was under way on POSIX.2.

A temporary fork

In the early 1990s, the developers of the Linux kernel
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....

 forked
Fork (software development)
In software engineering, a project fork happens when developers take a legal copy of source code from one software package and start independent development on it, creating a distinct piece of software...

 glibc. Their fork, called "Linux libc", was maintained separately for years and released versions 2 through 5.

When FSF released glibc 2.0 in January 1997, it had much more complete POSIX standards support, better internationalisation/multilingual support, support for IPv6
IPv6
Internet Protocol version 6 is a version of the Internet Protocol . It is designed to succeed the Internet Protocol version 4...

, 64-bit data access, support for multithreaded applications, future version compatibility support, and the code was more portable. At this point, the Linux kernel developers discontinued their fork and returned to using FSF's glibc.

The last used version of Linux libc used the internal name (soname
Soname
In Unix operating systems, a soname is a field of data in a shared object file. The soname is a string, which is used as a "logical name" describing the functionality of the object...

) libc.so.5. Following on from this, glibc 2.x on Linux uses the soname libc.so.6 (Alpha
DEC Alpha
Alpha, originally known as Alpha AXP, is a 64-bit reduced instruction set computer instruction set architecture developed by Digital Equipment Corporation , designed to replace the 32-bit VAX complex instruction set computer ISA and its implementations. Alpha was implemented in microprocessors...

 and IA64
Itanium
Itanium is a family of 64-bit Intel microprocessors that implement the Intel Itanium architecture . Intel markets the processors for enterprise servers and high-performance computing systems...

 architectures now use libc.so.6.1, instead). The soname is often abbreviated as libc6 (for example in the package name in Debian
Debian
Debian is a computer operating system composed of software packages released as free and open source software primarily under the GNU General Public License along with other free software licenses. Debian GNU/Linux, which includes the GNU OS tools and Linux kernel, is a popular and influential...

) following the normal conventions for libraries.

According to Richard Stallman
Richard Stallman
Richard Matthew Stallman , often shortened to rms,"'Richard Stallman' is just my mundane name; you can call me 'rms'"|last= Stallman|first= Richard|date= N.D.|work=Richard Stallman's homepage...

, the changes that had been made in Linux libc could not be merged back into glibc because the authorship status of that code was unclear and the GNU project is quite strict about recording copyright and authors.

Version history

This version history uses dates from the ChangeLog files packaged in the 2.13 release.
Version Date Notes
2.14 June 2011
2.13 January 2011
2.12 May 2010 Used in RHEL 6
Red Hat Enterprise Linux
Red Hat Enterprise Linux is a Linux-based operating system developed by Red Hat and targeted toward the commercial market. Red Hat Enterprise Linux is released in server versions for x86, x86-64, Itanium, PowerPC and IBM System z, and desktop versions for x86 and x86-64...

2.11 October 2009 Used in SLES 11
SUSE Linux Enterprise Server
SUSE Linux Enterprise Server is a Linux distribution supplied by SUSE and targeted at the business market. It is targeted for servers, mainframes, and workstations but can be installed on desktop computers for testing as well. New major versions are released at an interval of 3-4 years, while...

2.10 May 2009
2.9 November 2008
2.8 April 2008
2.7 October 2007
2.6 May 2007
2.5 September 2006 Used in RHEL 5
2.4 March 2006 Standard for LSB 4.0
Linux Standard Base
The Linux Standard Base is a joint project by several Linux distributions under the organizational structure of the Linux Foundation to standardize the software system structure, including the filesystem hierarchy, used with Linux operating system...

, Used in SLES 10
2.3.4 December 2004 Standard for LSB 3.0
2.3.3 December 2003
2.3.2 February 2003
2.3.1 October 2002
2.3 October 2002
2.2.4 July 2001
2.2.3 March 2001
2.2.2 February 2001
2.2.1 January 2001
2.2 November 2000
2.1.1 March 1999
2.1 February 1999
2.0.95 July 1998
2.0.91 December 1997
2.0.2 February 1997
2.0.1 January 1997
2.0 January 1997
1.90 – 1.102 May 1996 – January 1997
1.01 – 1.09.3 March 1992 – December 1994
1.0 February 1992
0.1 – 0.6 Oct 1991 – February 1992

Supported hardware and kernels

Glibc is used in systems that run many different kernels and different hardware
Computer hardware
Personal computer hardware are component devices which are typically installed into or peripheral to a computer case to create a personal computer upon which system software is installed including a firmware interface such as a BIOS and an operating system which supports application software that...

 architectures. Its most common use is in systems using the Linux kernel
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....

 on x86 hardware, however, officially supported hardware includes: x86, Motorola 680x0
68k
The Motorola 680x0/m68000/68000 is a family of 32-bit CISC microprocessors. During the 1980s and early 1990s, they were popular in personal computers and workstations and were the primary competitors of Intel's x86 microprocessors...

, DEC Alpha
DEC Alpha
Alpha, originally known as Alpha AXP, is a 64-bit reduced instruction set computer instruction set architecture developed by Digital Equipment Corporation , designed to replace the 32-bit VAX complex instruction set computer ISA and its implementations. Alpha was implemented in microprocessors...

, PowerPC
PowerPC
PowerPC is a RISC architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM...

, ETRAX CRIS
ETRAX CRIS
The ETRAX CRIS is a series of CPUs designed and manufactured by Axis Communications for use in embedded systems since 1993. The name is an acronym of the chip's features: Ethernet, Token Ring, AXis - Code Reduced Instruction Set...

, s390
ZSeries
IBM System z, or earlier IBM eServer zSeries, is a brand name designated by IBM to all its mainframe computers.In 2000, IBM rebranded the existing System/390 to IBM eServer zSeries with the e depicted in IBM's red trademarked symbol, but because no specific machine names were changed for...

, and SPARC
SPARC
SPARC is a RISC instruction set architecture developed by Sun Microsystems and introduced in mid-1987....

. It officially supports the Hurd
GNU Hurd
GNU Hurd is a free software Unix-like replacement for the Unix kernel, released under the GNU General Public License. It has been under development since 1990 by the GNU Project of the Free Software Foundation...

 and Linux
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....

 kernels. Additionally, there are heavily patched versions that run on the kernels of FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...

 and NetBSD
NetBSD
NetBSD is a freely available open source version of the Berkeley Software Distribution Unix operating system. It was the second open source BSD descendant to be formally released, after 386BSD, and continues to be actively developed. The NetBSD project is primarily focused on high quality design,...

 (from which Debian GNU/kFreeBSD and Debian GNU/NetBSD systems are built, respectively), as well as the kernel of OpenSolaris
OpenSolaris
OpenSolaris was an open source computer operating system based on Solaris created by Sun Microsystems. It was also the name of the project initiated by Sun to build a developer and user community around the software...

. It is also used (in an edited form) and named libroot.so in BeOS
BeOS
BeOS is an operating system for personal computers which began development by Be Inc. in 1991. It was first written to run on BeBox hardware. BeOS was optimized for digital media work and was written to take advantage of modern hardware facilities such as symmetric multiprocessing by utilizing...

 and Haiku
Haiku (operating system)
Haiku is a free and open source operating system compatible with BeOS. Its development began in 2001, and the operating system became self-hosting in 2008, with the first alpha release in September 2009, the second in May 2010 and the third in June 2011....

.

Functionality

glibc provides the functionality required by the Single UNIX Specification
Single UNIX Specification
The Single UNIX Specification is the collective name of a family of standards for computer operating systems to qualify for the name "Unix"...

, POSIX
POSIX
POSIX , an acronym for "Portable Operating System Interface", is a family of standards specified by the IEEE for maintaining compatibility between operating systems...

 (1c, 1d, and 1j) and some of the functionality required by ISO
International Organization for Standardization
The International Organization for Standardization , widely known as ISO, is an international standard-setting body composed of representatives from various national standards organizations. Founded on February 23, 1947, the organization promulgates worldwide proprietary, industrial and commercial...

 C99
C99
C99 is a modern dialect of the C programming language. It extends the previous version with new linguistic and library features, and helps implementations make better use of available computer hardware and compiler technology.-History:...

, Berkeley Unix (BSD) interfaces, the System V Interface Definition
System V Interface Definition
The System V Interface Definition is a standard that describes the AT&T UNIX System V behavior, including that of system calls, C libraries, available programs and devices...

 (SVID) and the X/Open Portability Guide (XPG), Issue 4.2, with all extensions common to XSI (X/Open System Interface) compliant systems along with all X/Open UNIX extensions.

In addition, glibc also provides extensions that have been deemed useful or necessary while developing GNU
GNU
GNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...

.

Use in small devices

glibc has been criticized as being "bloated" and slower than other libraries in the past, e.g. by Linus Torvalds
Linus Torvalds
Linus Benedict Torvalds is a Finnish software engineer and hacker, best known for having initiated the development of the open source Linux kernel. He later became the chief architect of the Linux kernel, and now acts as the project's coordinator...

 and embedded Linux
Embedded Linux
Embedded Linux is the use of Linux in embedded computer systems such as mobile phones, personal digital assistants, media players, set-top boxes, and other consumer electronics devices, networking equipment, machine control, industrial automation, navigation equipment and medical instruments...

 programmers. For this reason, several alternative C standard libraries have been created which emphasize a smaller footprint. Among them are Bionic
Bionic (software)
The Bionic libc is a derivation of the BSD standard C library code that was originally developed by Google for the Android embedded system operating system. Bionic has several major Linux-specific features and development continues independent of other code bases...

 (based mostly on libc from BSD and used in Android), dietlibc
Dietlibc
dietlibc is a C standard library released under the GNU General Public License Version 2. It was developed by Felix von Leitner with the goal to compile and link programs to the smallest possible size. dietlibc was developed from scratch and thus only implements the most important and commonly used...

, uClibc
UClibc
In computing, uClibc is a small C standard library intended for embedded Linux systems. uClibc was created to support uClinux, a version of Linux not requiring a memory management unit and thus suited for microcontrollers .The project lead is Erik Andersen. The other main contributor is Manuel...

, Newlib
Newlib
Newlib is a C standard library implementation intended for use on embedded systems. It is a conglomeration of several library parts, all under free software licenses that make them easily usable on embedded products....

, Klibc
Klibc
In computing, klibc is a minimalistic subset of the standard C library developed by H. Peter Anvin. It was developed mainly to be used during the Linux startup process, and it is part of the early user space, i.e. components used during kernel startup, but which do not run in kernel mode...

, and EGLIBC (used in Debian
Debian
Debian is a computer operating system composed of software packages released as free and open source software primarily under the GNU General Public License along with other free software licenses. Debian GNU/Linux, which includes the GNU OS tools and Linux kernel, is a popular and influential...

, Ubuntu
Ubuntu (operating system)
Ubuntu is a computer operating system based on the Debian Linux distribution and distributed as free and open source software. It is named after the Southern African philosophy of Ubuntu...

 and ArkLinux).

However, many small-device projects use GNU libc over the smaller alternatives because of its application support, standards compliance, and completeness. Examples include Openmoko
Openmoko
Openmoko is a project to create a family of open source mobile phones, including the hardware specification and the operating system. The project was sponsored by Openmoko Inc....

 and Familiar Linux
Familiar Linux
Familiar Linux is a Linux distribution for iPAQ machines and other personal digital assistants , intended as a replacement for Windows CE on these machines. It can use OPIE or GPE Palmtop Environment as graphical user interface...

 for iPaq handhelds (when using the GPE display software).

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK