Libraries fulfill two purposes:
-
They save duplication of the same code that would otherwise be contained duplicated inside many binaries individually; this saves disk space.
-
Very often library calls provide an abstraction interface to similar system calls to simplify programming tasks for a programmer.
An example for number 1 above:
The three binary programs ping, traceroute and telnet all support a command line argument that is a hostname of a computer on the Internet to connect to. However these programs must format packets sent to IP addresses not hostnames.
Somehow these programs must convert a hostname to an IP address and instead of all three containing the same code they all call the same library call in the standard C library called gethostbyname(). Where they supply the requested hostname that was read from the command line ion the parenthesis of the call.
The C library now does the hard work of issuing multiple system calls to connect to a DNS server on the Internet, send a namelookup query, interpret a response and return the resolved IP address to the calling program (ping, traceroute or telnet).