The highly successful GNU project was launched in 1984 by Richard Stallman with the mission of developing a complete, Unix-like operating system that consists entirely of free software (i.e., software that anyone may use for any purpose). Among the most notable of its many accomplishments has been development of the GCC (GNU Compiler Collection), which is widely regarded as containing some of the of the best compilers that have been developed by the software industry to date.
A compiler is a specialized program that converts source code written in one programming language into another language, usually machine language (also called object code or machine code) or assembly language (a more human-readable version of machine language) so that it can be understood by computer processors. Source code is the version of software as it is originally written (i.e., typed into a computer) by a human in plain text (i.e., human readable characters) in any of numerous programming languages, some of the most popular of which are C, C++ and Java.
A library is a collection of subprograms that any programmer can employ to reduce the amount of complex and repetitive source code that has to be written for individual programs. Subprograms differ from conventional, executable (i.e., runnable) programs in that they are not independent programs but are rather just supplementary code that provides services (i.e., functionality) to executable programs.
The C programming language was developed by Dennis Ritchie and Ken Thompson in the early 1970s at Bell Labs, the renowned research facility owned by AT&T, the former U.S. telecommunications monopoly. This is the same facility at which UNIX was written in 1969, and the early histories of the two are intimately intertwined. C was originally developed as a systems programming language (i.e., a language for writing operating systems, compilers and other tools) rather than for writing application programs. By 1973 it had become sufficiently powerful that it was used to rewrite most of the UNIX kernel (i.e., the core of the operating system), which was originally written in an assembly language.
The power, flexibility and relatively small memory requirements of C subsequently led to its becoming an important language independent of UNIX and to its being used to write a very broad range of applications for numerous platforms (i.e., combinations of operating systems and processor types). Despite its age, C remains the most popular language for writing system software, and it is the language that is used to write most of the Linux kernel.
Unlike higher level (i.e., more abstract) languages such as C++ and Java (both of which are descendants of C), the C language provides no built-in facilities for performing such common operations as memory management, mathematical functions, string (i.e., any finite sequence of characters) manipulation, case conversion (i.e., converting text from upper case to lower case or visa versa), date and time conversions, etc. Rather, these functions are defined in a standard C library that is compiled and linked together with object code to create the final executable programs. Every Unix-like operating system requires a C library.
C standard libraries are extremely small in comparison with libraries for other systems programming languages, such as C++ and Java. Among the most obvious omissions are toolkits for constructing complete GUIs (graphical user interfaces) and networks. A major advantage of this small size is the relative ease of porting C to (i.e., modifying it for use on) new platforms.
glibc, as is the case with the GCC, is one of the most important components of most modern Linux distributions (i.e., versions), which use it as their official standard C library.
In addition to being completely free (both with regard to use and in terms of price), glibc features high performance and a high degree of portability (i.e., is easy to port) to both new processors and kernels. Moreover, it complies with all relevant industry standards and is also internationalized (i.e., designed to support a wide range of human written languages).
Version 2 and above currently officially support only the Linux and Hurd kernels, although work is probably being carried out to support other kernels as well. Version 2 works with the Linux kernel version 2.0.10 or later on the following processors: Alpha, AMD x86-64, ARM, CRIS, DEC, IBM S/390 (both 32 and 64 bit), Intel IA64 (Linux kernel 2.4.0 or later), Intel ix86, MIPS (Linux kernel 2.2.15 or later), Motorola 680x0, PowerPC (32 and 64 bit), SH, Sparc and Sparc64.
The Hurd kernel is a free, Unix-like replacement for Unix and Linux kernels that is being developed by the GNU project. Version 2 of the glibc is supported by all platforms that the Hurd kernel runs on.
A compiler is usually distributed together with its own standard library because of incompatibilities with other libraries owing to added functionalities. For example, glibc is bundled and generally used with the GCC.
The most widely used C library is the ANSI (American National Standards Institute) C standard library. It consists of 18 C header files, each of which contains one or more functions, function prototypes, data type definitions and macros.
glibc is compatible with the ANSI C standard library. It defines all of the library functions that are specified by the ANSI C standard as well as additional features specific to POSIX (Portable Operating System Interface) and a number of (non-standard) extensions and performance improvements specific to the GNU system. POSIX is a set of programming interface standards governing how to write source code so that the applications are portable between operating systems.
glibc is one of the first packages that needs to be installed when a new Linux distribution is being created. Fortunately, installation is similar to that for other software packages and is usually quite simple: it consists mainly of just using the conventional configure, make, make check and make install commands with the appropriate options and arguments (i.e., input files).
The vast majority of Linux users will never have to be concerned about glibc -- or even need to be aware that it exists. Still, it is useful to have at least a basic awareness of glibc if one wants to dig below the surface and acquire a better comprehension of how Linux (and other modern operating systems) work.________
glibc's home page is http://www.gnu.org/software/libc/. The most recent version as of February 2005 was 2.3.3.
Created March 18, 2004. Updated February 21, 2005.