Next: Conditional Libtool Libraries, Previous: Libtool Concept, Up: A Shared Library
Automake uses libtool to build libraries declared with the
LTLIBRARIES
primary. Each _LTLIBRARIES
variable is a
list of libtool libraries to build. For instance, to create a libtool
library named libgettext.la, and install it in libdir
,
write:
lib_LTLIBRARIES = libgettext.la libgettext_la_SOURCES = gettext.c gettext.h ...
Automake predefines the variable pkglibdir
, so you can use
pkglib_LTLIBRARIES
to install libraries in
‘$(libdir)/@PACKAGE@/’.
If gettext.h is a public header file that needs to be installed
in order for people to use the library, it should be declared using a
_HEADERS
variable, not in libgettext_la_SOURCES
.
Headers listed in the latter should be internal headers that are not
part of the public interface.
lib_LTLIBRARIES = libgettext.la libgettext_la_SOURCES = gettext.c ... include_HEADERS = gettext.h ...
A package can build and install such a library along with other
programs that use it. This dependency should be specified using
LDADD
. The following example builds a program named
hello that is linked with libgettext.la.
lib_LTLIBRARIES = libgettext.la libgettext_la_SOURCES = gettext.c ... bin_PROGRAMS = hello hello_SOURCES = hello.c ... hello_LDADD = libgettext.la
Whether hello is statically or dynamically linked with libgettext.la is not yet known: this will depend on the configuration of libtool and the capabilities of the host.