1.2 Implementation issues

The following issues need to be addressed in any reusable shared library
system, specifically libtool:

The package installer should be able to control what sort of libraries
are built.

It can be tricky to run dynamically linked programs whose libraries have
not yet been installed. LD_LIBRARY_PATH must be set properly (if
it is supported), or programs fail to run.

The system must operate consistently even on hosts that don’t support
shared libraries.

The commands required to build shared libraries may differ wildly from
host to host. These need to be determined at configure time in
a consistent way.

It is not always obvious with what prefix or suffix a shared library
should be installed. This makes it difficult for Makefile rules,
since they generally assume that file names are the same from host to
host.

The system needs a simple library version number abstraction, so that
shared libraries can be upgraded in place. The programmer should be
informed how to design the interfaces to the library to maximize binary
compatibility.

The install Makefile target should warn the package installer to set
the proper environment variables (LD_LIBRARY_PATH or equivalent),
or run ldconfig.