次: A Shared Library, 前: A Program, 上: Programs
ライブラリをビルドすることは,プログラムをビルドすることによく似ていま
す.この場合は,プライマリの名前は`LIBRARIES'です.ライブラリは
libdir
やpkglibdir
にインストールされます.
libtoolと`LTLIBRARIES'プライマリを使用して共有ライブラリをビルド する方法についての詳細は,See A Shared Library.
それぞれの`_LIBRARIES'変数は,ビルドされるライブラリのリストです. 例えば,libcpio.aという名前のライブラリを作成し,それをインストー ルしないため,以下のように書きます.
noinst_LIBRARIES = libcpio.a
ライブラリに組み込まれるソースは,プログラムのときのように, `_SOURCES'変数によって正しく決定されます.ライブラリ名は標準的に されるので(see Canonicalization),`liblob.a'に対応する `_SOURCES'変数は`liblob.a_SOURCES'ではなく `liblob_a_SOURCES'になることに注意してください.
追加のオブジェクトは,`library_LIBADD'変数を使用してライブ
ラリに追加することが可能です.これはconfigure
で決定されるオブジェ
クトに対して使用されるべきです.再びcpio
からの引用です.
libcpio_a_LIBADD = $(LIBOBJS) $(ALLOCA)
さらに,configure時まで存在しない追加のオブジェクトに対するソースは,
BUILT_SOURCES
変数に追加する必要があります(see Sources).
スタティックライブラリをビルドすることは,すべてのオブジェクトファイル
をコンパイルし,その後で$(AR) $(ARFLAGS)
にライブラリ名とオブジェ
クトのリストを続けたものを呼び出し,そして最後にライブラリで
$(RANLIB)
を呼び出すことで達成されます.RANLIB
を定義する
ため,AC_PROG_RANLIB
をconfigure.acから呼び出すべきです
(そうしなければ,Automakeは文句を言います).AR
とARFLAGS
のデフォルトはそれぞれar
とcru
です.これらの二つの変数を
Makefile.amで設定する,configure.acでAC_SUBST
する,
または,ライブラリごとにmaude_AR
変数で定義することで優先させる
ことが可能です(see Program and Library Variables).