次: , 前: A Program, 上: Programs


7.2 ライブラリのビルド

ライブラリをビルドすることは,プログラムをビルドすることによく似ていま す.この場合は,プライマリの名前は`LIBRARIES'です.ライブラリは libdirpkglibdirにインストールされます.

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_RANLIBconfigure.acから呼び出すべきです (そうしなければ,Automakeは文句を言います).ARARFLAGS のデフォルトはそれぞれarcruです.これらの二つの変数を Makefile.amで設定する,configure.acAC_SUBSTする, または,ライブラリごとにmaude_AR変数で定義することで優先させる ことが可能です(see Program and Library Variables).