4.6. /usr/lib : Libraries for programming and packages

4.6.1. Purpose

/usr/lib includes object files and libraries.
[21]
On some systems, it may also include internal binaries that are not
intended to be executed directly by users or shell scripts.
[22]

Applications may use a single subdirectory under
/usr/lib. If an application uses a subdirectory,
all architecture-dependent data exclusively used by the application
must be placed within that subdirectory.
[23]

4.6.2. Specific Options

For historical reasons, /usr/lib/sendmail
must be a symbolic link which resolves to the
sendmail-compatible command provided by the
system's mail transfer agent, if the latter exists.
[24][25]

[21] Miscellaneous
architecture-independent application-specific static files and
subdirectories must be placed in /usr/share.

[22] See below, in the /usr/libexec
section, for a discussion of /usr/lib
vs. /usr/libexec for executable binaries.

[23] For example, the perl5 subdirectory for
Perl 5 modules and libraries.

[24]
Some executable commands such as makewhatis and
sendmail have also been traditionally placed in
/usr/lib. makewhatis is an
internal binary and must be placed in a binary directory; users access
only catman. Newer sendmail
binaries are now placed by default in /usr/sbin.
Additionally, systems using a sendmail-compatible
mail transfer agent must provide /usr/sbin/sendmail
as the sendmail command, either as the executable
itself or as a symlink to the appropriate executable.

[25]
Host-specific data for the X Window System must not be stored in
/usr/lib/X11. Host-specific configuration files
such as xorg.conf must be stored in
/etc/X11. This includes configuration data such
as system.twmrc even if it is only made a
symbolic link to a more global configuration file (probably in
/usr/lib/X11).