Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

libc(7) [debian man page]

LIBC(7) 						     Linux Programmer's Manual							   LIBC(7)

NAME
libc - overview of standard C libraries on Linux 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 stan- dard C library is somewhat ambiguous on Linux. glibc By far the most widely used C library on Linux is the GNU C Library <http://www.gnu.org/software/libc/>, often referred to as 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 rel- evant pages of the man-pages project (primarily in Section 3 of the manual). Documentation of glibc is also available in the glibc manual, available via the command 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 /lib/libc.so.6 (or something similar) is normally a symbolic link that points to the location of the glibc library, and exe- cuting this pathname will cause glibc to display various information about the version installed on your system. Linux libc In the early to mid 1990s, there was for a while Linux libc, a fork of glibc 1.x created by Linux developers who felt that glibc develop- ment 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). 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, it was clearly superior to Linux libc, and all major Linux distributions that had been using Linux libc soon switched back to glibc. (Since this switch occurred over a decade ago, 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 some manual pages, in particular, references to libc4 and libc5.) 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 fea- tures and memory footprint, and often intended for building small binaries, perhaps targeted at development for embedded Linux systems. Among such libraries are uClibc (http://www.uclibc.org/) and dietlibc (http://www.fefe.de/dietlibc/). Details of these libraries are gen- erally not covered by the man-pages project. SEE ALSO
syscalls(2), feature_test_macros(7), man-pages(7), standards(7) COLOPHON
This page is part of release 3.44 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/. Linux 2012-08-05 LIBC(7)

Check Out this Related Man Page

USELIB(2)						     Linux Programmer's Manual							 USELIB(2)

NAME
uselib - load shared library SYNOPSIS
#include <unistd.h> int uselib(const char *library); Note: No declaration of this system call is provided in glibc headers; see NOTES. DESCRIPTION
The system call uselib() serves to load a shared library to be used by the calling process. It is given a pathname. The address where to load is found in the library itself. The library can have any recognized binary format. RETURN VALUE
On success, zero is returned. On error, -1 is returned, and errno is set appropriately. ERRORS
In addition to all of the error codes returned by open(2) and mmap(2), the following may also be returned: EACCES The library specified by library does not have read or execute permission, or the caller does not have search permission for one of the directories in the path prefix. (See also path_resolution(7).) ENFILE The system-wide limit on the total number of open files has been reached. ENOEXEC The file specified by library is not an executable of a known type; for example, it does not have the correct magic numbers. CONFORMING TO
uselib() is Linux-specific, and should not be used in programs intended to be portable. NOTES
This obsolete system call is not supported by glibc. No declaration is provided in glibc headers, but, through a quirk of history, glibc versions before 2.23 did export an ABI for this system call. Therefore, in order to employ this system call, it was sufficient to manually declare the interface in your code; alternatively, you could invoke the system call using syscall(2). In ancient libc versions, uselib() was used to load the shared libraries with names found in an array of names in the binary. Since libc 4.3.2, startup code tries to prefix these names with "/usr/lib", "/lib" and "" before giving up. In libc 4.3.4 and later these names are looked for in the directories found in LD_LIBRARY_PATH, and if not found there, prefixes "/usr/lib", "/lib" and "/" are tried. From libc 4.4.4 on only the library "/lib/ld.so" is loaded, so that this dynamic library can load the remaining libraries needed (again using this call). This is also the state of affairs in libc5. glibc2 does not use this call. Since Linux 3.15, this system call is available only when the kernel is configured with the CONFIG_USELIB option. SEE ALSO
ar(1), gcc(1), ld(1), ldd(1), mmap(2), open(2), dlopen(3), capabilities(7), ld.so(8) COLOPHON
This page is part of release 4.15 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/. Linux 2017-09-15 USELIB(2)
Man Page