automake: Libtool Concept

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