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