GNU C library

The GNU C Library, commonly known as glibc, is the C standard library released by the GNU Project. Originally written by the Free Software Foundation (FSF) for the GNU operating system, the library's development has been overseen by a committee since 2001, with Ulrich Drepper as the lead contributor and maintainer.

Released under the GNU Lesser General Public License, glibc is free software.

History

glibc was initially written mostly by Roland McGrath, working for the FSF in the 1980s.

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

A temporary fork

In the early 1990s, the developers of the Linux kernel forked glibc. Their fork, called "Linux libc", was maintained separately for years and released versions 2 through 5.

When FSF released glibc 2.0 in 1996, it had much more complete POSIX standards support, better internationalisation/multilingual support, support for IPv6, 64-bit data access, support for multithreaded applications, future version compatibility support, and the code was more portable.[3] At this point, the Linux kernel developers discontinued their fork and returned to using FSF's glibc.[4]

The last used version of Linux libc used the internal name (soname) libc.so.5. Following on from this glibc 2.x on linux uses the soname libc.so.6[5] (alpha and ia64 architectures now use libc.so.6.1, instead). The soname is often abbreviated as libc6 (for example in the package name in debian) following the normal conventions for libraries.

According to Richard Stallman, 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 (the GNU project is quite strict about recording copyright and authors).[6]

Glibc has been criticized as being "bloated" and slower than other libraries in the past, e.g. by Linus Torvalds and embedded Linux programmers.[7] For this reason, several alternative C standard libraries have been created which emphasize a smaller footprint, among them dietlibc, uClibc and Newlib.

Supported hardware and kernels

Glibc is used in systems which run many different kernels and different hardware architectures. Its most common use is in systems using the Linux kernel on x86 hardware, but officially supported hardware includes: x86, Motorola 680x0, DEC Alpha, PowerPC, ARM, ETRAX CRIS, s390, and SPARC. It officially supports the Hurd and Linux kernels, although there are heavily patched versions that run on the kernels of FreeBSD and NetBSD (from which Debian GNU/kFreeBSD and Debian GNU/NetBSD systems are built, respectively). It is also used (in an edited form) as the libroot of BeOS and hence Haiku.

Functionality

glibc provides the functionality required by the Single UNIX Specification, POSIX (1c, 1d, and 1j) and some of the functionality required by ISO C99, Berkeley Unix (BSD) interfaces, the System V Interface Description (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 which have been deemed useful or necessary while developing GNU.

See also

References

1. ^ http://www.gnu.org/bulletins/bull4.html. “Most libraries are done. Roland McGrath [...] has a nearly complete set of ANSI C library functions. We hope they will be ready some time this spring.
2. ^ GNU's Bulletin, vol. 1 no. 12. “It now contains all of the ANSI C-1989 and POSIX.1-1990 functions, and work is in progress on POSIX.2 and Unix functions (BSD and System V)
3. ^ Elliot Lee (2001). A Technical Comparison of glibc 2.x With Legacy System Libraries.
4. ^ Forking: it could even happen to you. “the split between GNU LIBC and the Linux LIBC -- it went on for years while Linux stabilized, and then the forks re-merged into one project
5. ^ [http://linuxmafia.com/faq/Licensing_and_Law/forking.html Fear of Forking essay, see "6. glibc --> Linux libc --> glibc"].
6. ^ Fear of Forking, footnote on Stallman's merge comments.
7. ^ Linus Torvalds: Posting to the glibc mailing list, 9 January 2002 19:02:37

External links

The C standard library is a now-standardized collection of header files and library routines used to implement common operations, such as input/output and string handling, in the C programming language.
..... Click the link for more information.
The GNU Project is a free software, mass collaboration project, announced in 1983 by Richard Stallman. It initiated the GNU operating system, software development for which began in January 1984. GNU is a recursive acronym that stands for "GNU's Not Unix".
..... Click the link for more information.
The Free Software Foundation (FSF) is a non-profit corporation founded on October 4, 1985 [1] by Richard Stallman to support the free software movement ("free" as in "freedom"), and in particular the GNU Project.
..... Click the link for more information.
GNU (pronounced ) is a computer operating system composed entirely of free software.
..... Click the link for more information.
Ulrich Drepper is a software developer who works for Red Hat. Drepper is the lead contributor and maintainer of the GNU C Library (glibc). He was also one of the leaders of 86open.

Drepper is known within the free software community for his confrontational style.
..... Click the link for more information.
GNU Lesser General Public License
Author: Free Software Foundation
Version: 3
Copyright on the license: Free Software Foundation, Inc.
Publication date: 2007-06-29
OSI approved: Yes
Debian approved: Yes

..... Click the link for more information.
Free 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 only to ensure that further recipients can also do these things.
..... Click the link for more information.
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.[1]

For a time he worked at the University of Utah's Flux Project .
..... Click the link for more information.
Linux kernel is a Unix-like operating system kernel. It is the namesake of the Linux family of operating systems. Released under the GNU General Public License (GPL) and developed by contributors worldwide, Linux is one of the most prominent examples of free and open source
..... Click the link for more information.
Internet Protocol version 6 (IPv6) is a network layer protocol for packet-switched internetworks. It is designated as the successor of IPv4, the current version of the Internet Protocol, for general use on the Internet.
..... Click the link for more information.

..... Click the link for more information.
DEC Alpha, also known as the Alpha AXP, is a 64-bit RISC microprocessor originally developed and fabricated by Digital Equipment Corp (DEC). It was designed to replace the 32-bit VAX processor.
..... Click the link for more information.
Itanium 2
Central processing unit

Itanium 2 logo
Produced: From mid 2002 to present
Manufacturer: Intel
CPU Speeds: 733 MHz to 1.
..... Click the link for more information.
Richard Matthew Stallman (born March 16, 1953), often abbreviated "rms",[1] is a software freedom activist, hacker,[2] and software developer. In September 1983, he launched the GNU Project[3]
..... Click the link for more information.
Linus Benedict Torvalds   (born December 28 1969 in Helsinki, Finland) is a Finnish software engineer best known for initiating the development of the Linux kernel.
..... Click the link for more information.
Embedded Linux is the designation for Linux-based operating systems that are used as embedded operating systems in cell phones, personal digital assistants, media player handsets and other consumer electronics devices.
..... Click the link for more information.
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.
..... Click the link for more information.
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 "u" is a romanization of μ for "micro", hence the
..... Click the link for more information.
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.
..... Click the link for more information.
kernel is the central component of most computer operating systems (OS). Its responsibilities include managing the system's resources (the communication between hardware and software components).
..... Click the link for more information.
Computer hardware is the physical part of a computer, including the digital circuitry, as distinguished from the computer software that executes within the hardware. The hardware of a computer is infrequently changed, in comparison with software and data, which are "soft" in the
..... Click the link for more information.
Linux kernel is a Unix-like operating system kernel. It is the namesake of the Linux family of operating systems. Released under the GNU General Public License (GPL) and developed by contributors worldwide, Linux is one of the most prominent examples of free and open source
..... Click the link for more information.
The generic term x86 refers to the "CISC" type instruction set of the most commercially successful CPU architecture[1] in the history of personal computing, used in processors from Intel, AMD, VIA, and others.
..... Click the link for more information.
The generic term x86 refers to the "CISC" type instruction set of the most commercially successful CPU architecture[1] in the history of personal computing, used in processors from Intel, AMD, VIA, and others.
..... Click the link for more information.
The Motorola 680x0/m68k/68k/68K family of CISC microprocessor CPU chips were 32-bit from the start, and were the primary competition for the Intel x86 family of chips in personal computers of the 1980s and early 1990s.
..... Click the link for more information.
DEC Alpha, also known as the Alpha AXP, is a 64-bit RISC microprocessor originally developed and fabricated by Digital Equipment Corp (DEC). It was designed to replace the 32-bit VAX processor.
..... Click the link for more information.
PowerPC is a RISC microprocessor architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM. Originally intended for personal computers, PowerPC CPUs have since become popular embedded and high-performance processors as well.
..... Click the link for more information.
The ARM architecture (previously, the Advanced RISC Machine, and prior to that Acorn RISC Machine) is a 32-bit RISC processor architecture developed by ARM Limited that is widely used in a number of embedded designs.
..... Click the link for more information.
The ETRAX CRIS is a series of CPUs designed and manufactured by Axis Communications for use in embedded systems since 1993 [1] . The name is an acronym of the chip's features: Ethernet, Token Ring, AXis - Code Reduced I
..... Click the link for more information.
IBM System z9 is a line of IBM mainframes. It was announced on July 25, 2005 and the first models were available on September 16, 2005. The System z9 also marks the end of the previously used eServer zSeries naming convention.
..... Click the link for more information.


This article is copied from an article on Wikipedia.org - the free encyclopedia created and edited by online user community. The text was not checked or edited by anyone on our staff. Although the vast majority of the wikipedia encyclopedia articles provide accurate and timely information please do not assume the accuracy of any particular article. This article is distributed under the terms of GNU Free Documentation License.