Next: Configuring, Previous: Makefile rules, Up: Integrating libtool
Libtool library support is implemented under the ‘LTLIBRARIES’ primary.
Here are some samples from the Automake Makefile.am in the libtool distribution's demo subdirectory.
First, to link a program against a libtool library, just use the ‘program_LDADD’1 variable:
bin_PROGRAMS = hell hell_static
# Build hell from main.c and libhello.la
hell_SOURCES = main.c
hell_LDADD = libhello.la
# Create a statically linked version of hell.
hell_static_SOURCES = main.c
hell_static_LDADD = libhello.la
hell_static_LDFLAGS = -static
You may use the ‘program_LDFLAGS’ variable to stuff in any flags you want to pass to libtool while linking ‘program’ (such as -static to avoid linking uninstalled shared libtool libraries).
Building a libtool library is almost as trivial... note the use of ‘libhello_la_LDFLAGS’ to pass the -version-info (see Versioning) option to libtool:
# Build a libtool library, libhello.la for installation in libdir.
lib_LTLIBRARIES = libhello.la
libhello_la_SOURCES = hello.c foo.c
libhello_la_LDFLAGS = -version-info 3:12:1
The -rpath option is passed automatically by Automake (except for
libraries listed as noinst_LTLIBRARIES), so you
should not specify it.
See Building a Shared Library, for more information.
[1] Since gnu Automake 1.5, the flags -dlopen or -dlpreopen (see Link mode) can be employed with the program_LDADD variable. Unfortunately, older releases didn't accept these flags, so if you are stuck with an ancient Automake, we recommend quoting the flag itself, and setting program_DEPENDENCIES too:
program_LDADD = "-dlopen" libfoo.la
program_DEPENDENCIES = libfoo.la