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 libcpio_a_SOURCES = …
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 libcpio.a is ‘libcpio_a_SOURCES’, not ‘libcpio.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).
Be careful when selecting library components conditionally. Because building an empty library is not portable, you should ensure that any library contains always at least one object.
Next: Building a Shared Library, Previous: Building a program, Up: Building Programs and Libraries [Contents][Index]