Next: Building a Shared Library, Previous: Building a program, Up: Building Programs and Libraries [Contents][Index]
Building a library is much like building a program. In this case, the
name of the primary is ‘LIBRARIES’. Libraries can be installed in
libdir
or pkglibdir
.
See Building a Shared Library, for information on how to build shared libraries using libtool and the ‘LTLIBRARIES’ primary.
Each ‘_LIBRARIES’ variable is a list of the libraries to be built. For instance to create a library named libcpio.a, but not install it, you would write:
noinst_LIBRARIES = libcpio.a
The sources that go into a library are determined exactly as they are for programs, via the ‘_SOURCES’ variables. Note that the library name is canonicalized (see How derived variables are named), so the ‘_SOURCES’ variable corresponding to liblob.a is ‘liblob_a_SOURCES’, not ‘liblob.a_SOURCES’.
Extra objects can be added to a library using the
‘library_LIBADD’ variable. This should be used for objects
determined by configure
. Again from cpio
:
libcpio_a_LIBADD = $(LIBOBJS) $(ALLOCA)
In addition, sources for extra objects that will not exist until
configure-time must be added to the BUILT_SOURCES
variable
(see Built sources).
Building a static library is done by compiling all object files, then
by invoking $(AR) $(ARFLAGS)
followed by the name of the
library and the list of objects, and finally by calling
$(RANLIB)
on that library. You should call
AC_PROG_RANLIB
from your configure.ac to define
RANLIB
(Automake will complain otherwise). AR
and
ARFLAGS
default to ar
and cru
respectively; you
can override these two variables my setting them in your
Makefile.am, by AC_SUBST
ing them from your
configure.ac, or by defining a per-library maude_AR
variable (see Program and Library Variables).
Next: Building a Shared Library, Previous: Building a program, Up: Building Programs and Libraries [Contents][Index]