Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Most modern operating systems use shared libraries, also called dynamic libraries, which are not linked into a program at compile time but rather are loaded when the program starts or later in some cases. The names of files housing shared libraries end with the filename extension .so (shared object). An example is libc.so. Usually libaaa.so is a symbolic link to libaaa.so.x, where x is a small number representing the version of the library. Many of these libraries are kept in /usr/lib: A typical Linux installation has more than 300 shared libraries in /usr/lib and more than 30 in /usr/X11R6/lib. Applications can have their own shared libraries; for example, the gcc compiler might keep its libraries in /usr/lib/gcc-lib/i386-redhat-linux/3.2.
Contrasted with shared libraries are the older, statically linked libraries (with a .a filename extension), also called archived libraries. Archived libraries are added to the executable file during the last (link) phase of compilation. This addition can make a program run slightly faster the first time it is run, at the expense of program maintainability and size. Together, the combined size of several executables that use a shared library and the size of the shared library is smaller than the combined size of the same executables with static libraries. Alternatively, when a running program has already loaded a dynamic library, a second program that requires the same dynamic library starts slightly faster.