A file containing compiled object code which can be shared
between multiple programs. For example, there are lots of
programs that connect to the Internet. The code for doing the
connections is in only one shared library file, instead of being
duplicated over and over in each program that needs it (thus
saving hard drive space), and only one copy is loaded into
active memory (thus saving RAM). This also has the advantage
that if fixes or improvements are made to the Internet code, all
you have to do is replace that one shared library file, and all
the programs will get the benefits, rather than having to replace
each individual program.
Under Windows, shared library files end in ."DLL", which
stands for "Dynamically Linked Library". Under UNIX/Linux,
such files almost always start with "lib", always end in ".so"
(standing for "shared object"), which is followed by ".X.Y.Z",
where X.Y.Z is the version of the .so file; for instance,
libproc.so.2.0.9 is the 2.0.9 version of the proc library
(a file ending in ".so" with no version number is the default
version of the file). This allows multiple versions of the same
library to be installed, which is good since different programs
might use different versions of the library; you generally can't
do this on a Windows system, leading to the problem of DLL Hell.
Under UNIX/Linux the ld.so program controls how libraries are
searched for and which ones are loaded.