Provided by: manpages-ja_0.5.0.0.20080615-1_all bug

AUTOMAKE方
       libtool               ライブラリのサポートは、              LTLIBRARIES
       プライマリのもとに実装されている。

       プログラムを          libtool          ライブラリにリンクするためには、
       ライブラリ名を指定する   program_LDADD   変数を使うこと。   libtool  に
       -static といったオプションを渡すためには program_LDFLAGS を使うと良い。

       libtool       ライブラリをビルドするには、       ライブラリ名を指定する
       lib_LTLIBRARIES を使うこと。libtool-version-info
       オプションを          渡すには         lib_LDFLAGS         を使うこと。
       次のセクションに例がある。

       作業をするためには、パッケージにいくつかの基本的なファイルを入れたり、
       libtoolize               を使う必要があるだろう。               libtool
       スクリプトを直接インクルードしてはならない。

       config.guess
              標準システム名を推測しようとする。

       config.sub
              標準システム名を確認するサブルーチンスクリプト。

       ltconfig
              指示されたシステムについて libtool スクリプトを作成する。

       ltmain.sh
              基本的な libtool の機能を実装した一般的なスクリプト。

ド
       libtool のダイナミックロード機能を使うためには、 configure.in  のなかで
       AM_PROG_LIBTOOL         より前に        マクロ        AC_LIBTOOL_DLOPEN
       を使わなければならない。 さもなければ、libtool はそのプラットホームには
       ダイナミックロードのメカニズムがないと仮定して、
       これをシミュレートしようとする。
       このシミュレーション機能を使うためには、  実行ファイルをリンクするとい
       -dlopen-dlreopen             フラグを使い、
       ダイナミックロードするオブジェクトを宣言しなければならない。    libtool
       はオブジェクトファイルをリンクし、
       以下のような実行ファイルのシンボルテーブルを保持した
       データ構造を作成する。

              struct lt_dlsymlist { const char *NAME; lt_ptr_t ADDRESS; }

       NAME には、"fprintf"  のような、シンボル名のアスァ縞源列が保持される。
       ADDRESS                     は、&fprintf                     のような、
       適切なオブジェクトへのジェネリックポインタである。

              const lt_dlsymlist * lt_preloaded_symbols;

       この配列は実行ファイルにリンクされている
       プリロードされたシンボルを表す。                           -dlpreloaded
       されたファイルのそれぞれについて要素が存在し、 ファイル名 NAME  と  `0'
       というアドレス                                                ADDRESS、
       およびこのファイルからエクスポートされたすべてのシンボルを保持する。
       実行ファイル自身については、特別な名前      @PROGRAM@      が使われる。
       最後のエレメントは NAME と `0' という ADDRESS を持つ。

       ダイナミックロードされるライブラリもしくは、
       モジュールをダイナミックロードしようとする実行ファイルをリンクすると-
       は、 -module フラグを指定するのを忘れないこと。

       ダイナミックロードしようとしているライブラリの外部シンボルを、
       実行ファイルが参照する必要がある場合は、実行ファイルをリンクするとい
       -export-dynamic を使用すること。

       ライブラリ名にバリエーションがあるので、
       プログラムはどれがダイナミックロードするための
       正しいファイルであるのかを決定する必要がある。   直接的な方法は   `.la'
       ファイルを調べて、
        dlname='DLNAME'                             という行を探すことである。
       この行はライブラリをダイナミックロードでい覆ぞ豺腓篭で、
       そうでない場合はライブラリの名前が入っている。

例
       ソースファイル        `foo.c',        `bar.c'       から       `libbaz'
       とよばれるライブラリを作成し、                 次に                 `a'
       という名前の実行ファイルを作成するために    `a.c'    を   `libbaz'   と
       リンクしようといる。

  成
       +o    コンパイルモード:Linux    は共優薀ぅ屮薀蠅鬟汽檗璽箸靴討い襪里如
       libtool    は    2    つのオブジェクトファイル、   一つは静的ライブラリ
       (`foo.lo')、     もう一つは共優薀ぅ屮薀     (`foo.o')     を作成する。
       ソースファイル自身へのリンクをコンパイラにやらせたくないので、       -c
       オプションは必須である。

              lightside:~% libtool cc -c foo.c
              cc -c -fPIC -DPIC foo.c -o .libs/foo.lo
              cc -c foo.c >/dev/null 2>&1
              lightside:~% libtool cc -c bar.c
              cc -c -fPIC -DPIC bar.c -o .libs/bar.lo
              cc -c bar.c >/dev/null 2>&1

       +o リンクモード、静的ライブラリのみをビルドする: 以前に作成された  `.o'
       というオブジェクトファイルを指定している。 -o オプションは必須である。

              lightside:~% libtool cc -o libbaz.a foo.o bar.o
              ar cru libbaz.a foo.o bar.o
              ranlib libbaz.a

       +o    リンクモード、静的ライブラリと共優薀ぅ屮薀蠅鬟咼襯匹垢襦    `.lo'
       というオブジェクトファイルを指定する。 必須オプションは、前と同じ -o と
       ライブラリのインストールされるディレクトリを指示する   -rpath  である。
       ライブラリは `.libs' ディレクトリに作成される。

              lightside:~% libtool cc -o libbaz.la foo.lo bar.lo \
                  -rpath /usr/local/lib
              cc -shared -Wl,-soname -Wl,libbaz.so.0 \
                  -o .libs/libbaz.so.0.0.0 foo.lo bar.lo
              (cd .libs && ln -s libbaz.so.0.0.0 libbaz.so.0)
              (cd .libs && ln -s libbaz.so.0.0.0 libbaz.so)
              ar cru .libs/libbaz.a foo.o bar.o
              ranlib .libs/libbaz.a
              creating libbaz.la
              (cd .libs && ln -s ../libbaz.la libbaz.la)

       +o       インストールモード:ライブラリを指定したパス        (この場合は
       `/usr/local/lib')  にインストールするために  必要なコマンドを実行する。
       このモードでは共優薀ぅ屮薀   (`.so')   と静的ライブラリ   (`.a')    を
       インストールするとともに、アンインストールと情報提供の目的で    libtool
       ファイル (`.la') がインストールされる。

       このモードはふつう特権ユーザーとして実行されるので、     -n      または
       --dry-run オプションを 指定して結果をチェックしておくとよい。

              lightside:/tmp% libtool -n install libbaz.la /usr/local/lib
              install .libs/libbaz.so.0.0.0 /usr/local/lib/libbaz.so.0.0.0
              (cd /usr/local/lib && ln -s libbaz.so.0.0.0 libbaz.so.0)
              (cd /usr/local/lib && ln -s libbaz.so.0.0.0 libbaz.so)
              install libbaz.la /usr/local/lib/libbaz.la
              install .libs/libbaz.a /usr/local/lib/libbaz.a
              ranlib /usr/local/lib/libbaz.a
              chmod 644 /usr/local/lib/libbaz.a

  成
       最初に `a.c' をコンパイルする

              cc -c a.c

       ライブラリが既にインストールされている場合には、
       普段のように続行することがでい

              cc a.c -lbaz -L/usr/local/lib

       ライブラリがまだインストールされていない場合は、
       実行ファイルのリンク・デバッグ・インストールに                  libtool
       を使用しなければならない
       (一度ライブラリがインストールされるまで、これはつづく)。
       実際の実行ファイルはインストールされるまで      `.libs'      内にあり、
       作業ディレクトリにある実行ファイルは単なるラッパーであることに注意すること。

       曖昧さを避けるため、絶対に -l-L を使ってアンインストールされた 共-
       ライブラリにリンクしてはならない。                                `.la'
       ファイルへのパスだけを指定すること。           以下の           (`-lm')
       でわかるように、インストール済みのライブラリは問題ではない。

              lightside:~% libtool cc a.o libbaz.la -o a -lm
              cc a.o -Wl,--rpath -Wl,/usr/local/lib \
                  .libs/libbaz.so -o .libs/a -lm
              lightside:~% libtool gdb a
              [複雑なデバッグのセッションは省略]
              lightside:~% libtool install -c a /usr/local/bin/a
              install -c .libs/a /usr/local/bin/a

   Makefile.am成
       +o 最初に簡単な    configure.in    を作成し、    automakelibtool
       のためのマクロを忘れずに追加する。

              AC_DEFUN(AM_INIT_AUTOMAKE)
              AC_INIT(a.c)
              AM_INIT_AUTOMAKE(a, 1.0)
              AC_PROG_CC
              AM_PROG_LIBTOOL
              AC_OUTPUT(Makefile)

       +o 対応する Makefile.am

              # ライブラリのビルド
              lib_LTLIBRARIES=libbaz.la
              libbaz_la_SOURCES = foo.c bar.c
              libbaz_la_LDFLAGS = -version-info 0:0:0

              bin_PROGRAMS = a a.debug

              # a.c と libbaz.la から a をビルド
              a_SOURCES = a.c
              a_LDADD = libbaz.la

              # 静的デバッグバージョンを作成
              a_debug_SOURCES = a.c
              a_debug_LDADD = libbaz.la
              a_debug_LDFLAGS = -static

       +o そして最後に実行する

              lightside:~% aclocal; libtoolize; automake --add-missing; autoconf
              lightside:~% ./configure; make

目
        libtoolize(1), libltdl(3)

意
       プログラムのバグについては <bug-libtool@gnu.org> へ報告してください。
       この man ページは Ragnar Hojland  Espinosa  <ragnar@ragnar-hojland.com>
       が作成しました。