| .\" Copyright (c) 2009 Linux Foundation, written by Michael Kerrisk |
| .\" <mtk.manpages@gmail.com> |
| .\" |
| .\" %%%LICENSE_START(VERBATIM) |
| .\" Permission is granted to make and distribute verbatim copies of this |
| .\" manual provided the copyright notice and this permission notice are |
| .\" preserved on all copies. |
| .\" |
| .\" Permission is granted to copy and distribute modified versions of this |
| .\" manual under the conditions for verbatim copying, provided that the |
| .\" entire resulting derived work is distributed under the terms of a |
| .\" permission notice identical to this one. |
| .\" |
| .\" Since the Linux kernel and libraries are constantly changing, this |
| .\" manual page may be incorrect or out-of-date. The author(s) assume no |
| .\" responsibility for errors or omissions, or for damages resulting from |
| .\" the use of the information contained herein. The author(s) may not |
| .\" have taken the same level of care in the production of this manual, |
| .\" which is licensed free of charge, as they might when working |
| .\" professionally. |
| .\" |
| .\" Formatted or processed versions of this manual, if unaccompanied by |
| .\" the source, must acknowledge the copyright and authors of this work. |
| .\" %%%LICENSE_END |
| .\" |
| .TH LIBC 7 2016-12-12 "Linux" "Linux Programmer's Manual" |
| .SH NAME |
| libc \- overview of standard C libraries on Linux |
| .SH DESCRIPTION |
| The term "libc" is commonly used as a shorthand for |
| the "standard C library", |
| a library of standard functions that can be used by all C programs |
| (and sometimes by programs in other languages). |
| Because of some history (see below), use of the term "libc" |
| to refer to the standard C library is somewhat ambiguous on Linux. |
| .SS glibc |
| By far the most widely used C library on Linux is the GNU C Library |
| .UR http://www.gnu.org\:/software\:/libc/ |
| .UE , |
| often referred to as |
| .IR glibc . |
| This is the C library that is nowadays used in all |
| major Linux distributions. |
| It is also the C library whose details are documented |
| in the relevant pages of the |
| .I man-pages |
| project (primarily in Section 3 of the manual). |
| Documentation of glibc is also available in the glibc manual, |
| available via the command |
| .IR "info libc" . |
| Release 1.0 of glibc was made in September 1992. |
| (There were earlier 0.x releases.) |
| The next major release of glibc was 2.0, at the beginning of 1997. |
| |
| The pathname |
| .I /lib/libc.so.6 |
| (or something similar) is normally a symbolic link that |
| points to the location of the glibc library, |
| and executing this pathname will cause glibc to display |
| various information about the version installed on your system. |
| .SS Linux libc |
| In the early to mid 1990s, there was for a while |
| .IR "Linux libc" , |
| a fork of glibc 1.x created by Linux developers who felt that glibc |
| development at the time was not sufficing for the needs of Linux. |
| Often, this library was referred to (ambiguously) as just "libc". |
| Linux libc released major versions 2, 3, 4, and 5, |
| as well as many minor versions of those releases. |
| Linux libc4 was the last version to use the a.out binary format, |
| and the first version to provide (primitive) shared library support. |
| Linux libc 5 was the first version to support the ELF binary format; |
| this version used the shared library soname |
| .IR libc.so.5 . |
| For a while, |
| Linux libc was the standard C library in many Linux distributions. |
| |
| However, notwithstanding the original motivations of the Linux libc effort, |
| by the time glibc 2.0 was released (in 1997), |
| it was clearly superior to Linux libc, |
| and all major Linux distributions that had been using Linux libc |
| soon switched back to glibc. |
| To avoid any confusion with Linux libc versions, |
| glibc 2.0 and later used the shared library soname |
| .IR libc.so.6 . |
| |
| Since the switch from Linux libc to glibc 2.0 occurred long ago, |
| .I man-pages |
| no longer takes care to document Linux libc details. |
| Nevertheless, the history is visible in vestiges of information |
| about Linux libc that remain in a few manual pages, |
| in particular, references to |
| .IR libc4 |
| and |
| .IR libc5 . |
| .SS Other C libraries |
| There are various other less widely used C libraries for Linux. |
| These libraries are generally smaller than glibc, |
| both in terms of features and memory footprint, |
| and often intended for building small binaries, |
| perhaps targeted at development for embedded Linux systems. |
| Among such libraries are |
| .UR http://www.uclibc.org/ |
| .I uClibc |
| .UE , |
| .UR http://www.fefe.de/dietlibc/ |
| .I dietlibc |
| .UE , |
| and |
| .UR http://www.musl\-libc.org/ |
| .I "musl libc" |
| .UE . |
| Details of these libraries are covered by the |
| .I man-pages |
| project, where they are known. |
| .SH SEE ALSO |
| .BR syscalls (2), |
| .BR getauxval (3), |
| .BR proc (5), |
| .BR feature_test_macros (7), |
| .BR man-pages (7), |
| .BR standards (7), |
| .BR vdso (7) |