automake-1.16: Libtool Concept

 
 8.3.1 The Libtool Concept
 -------------------------
 
 Libtool abstracts shared and static libraries into a unified concept
 henceforth called “libtool libraries”.  Libtool libraries are files
 using the ‘.la’ suffix, and can designate a static library, a shared
 library, or maybe both.  Their exact nature cannot be determined until
 ‘./configure’ is run: not all platforms support all kinds of libraries,
 and users can explicitly select which libraries should be built.
 (However the package’s maintainers can tune the default; ⇒The
 ‘LT_INIT’ macro (libtool)LT_INIT.)
 
    Because object files for shared and static libraries must be compiled
 differently, libtool is also used during compilation.  Object files
 built by libtool are called “libtool objects”: these are files using the
 ‘.lo’ suffix.  Libtool libraries are built from these libtool objects.
 
    You should not assume anything about the structure of ‘.la’ or ‘.lo’
 files and how libtool constructs them: this is libtool’s concern, and
 the last thing one wants is to learn about libtool’s guts.  However the
 existence of these files matters, because they are used as targets and
 dependencies in ‘Makefile’s’ rules when building libtool libraries.
 There are situations where you may have to refer to these, for instance
 when expressing dependencies for building source files conditionally
 (⇒Conditional Libtool Sources).
 
    People considering writing a plug-in system, with dynamically loaded
 modules, should look into ‘libltdl’: libtool’s dlopening library (⇒
 Using libltdl (libtool)Using libltdl.).  This offers a portable
 dlopening facility to load libtool libraries dynamically, and can also
 achieve static linking where unavoidable.
 
    Before we discuss how to use libtool with Automake in detail, it
 should be noted that the libtool manual also has a section about how to
 use Automake with libtool (⇒Using Automake with Libtool
 (libtool)Using Automake.).