[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
定義では,すべての共有ライブラリシステムは,シンボル解決が実行時まで延期 されるように,実行形式をライブラリに依存させる方法を提供します.
ライブラリ内部の依存性は,他のライブラリに依存するライブラリにあり
ます.例えば,libtoolライブラリ`libhello'がcos
関数を使用する
場合,それは`libm'に対するライブラリ内部の依存性があり,数学ライブ
ラリがcos
を実装しています.
共有ライブラリシステムには,内部で一貫した方法で,この機能を提供するもの もあります.これらのシステムは,潜在的に無限長の依存性の連鎖を認めます.
しかし,ほとんどの共有ライブラリのシステムは,単一レベルの依存のみを認め るという制限があります.これらのシステムでは,プログラムは共有ライブラリ に依存しますが,共有ライブラリは他の共有ライブラリに依存しません.
あらゆる事象で,ライブラリ内部の依存性を宣言するため,libtoolは単純なメ
カニズムを提供します.独自のライブラリに依存するすべてのライブラリ
`libname'に対しライブラリを作成するとき,対応する
-lname
オプションをリンク行に単純に加えます.`libm'に依
存する`libhello'の例をビルドしてみます.
burger$ libtool gcc -g -O -o libhello.la foo.lo hello.lo \ -rpath /usr/local/lib -lm burger$ |
プログラムを`libhello'に対しリンクするとき,`-l'オプションを再 び指定する必要はありません.必要なライブラリがすべて見つかることを保証す るため,libtoolがそれを行います.この制約は,静的なライブラリシステムと, 単純な動的ライブラリシステムとの互換性を保つために必要です.
AIXのように,この柔軟性さえ許可されないプラットフォームもあります.共有 ライブラリをビルドするため,それは完全に自己内蔵型である必要があり(すな わち,`.lo'ファイルや`-l'で指定されたライブラリでシンボルが見 つかるもののみを参照する),-no-undefinedフラグを指定する必要があり ます.デフォルトで,libtoolはこの種のプラットフォームではスタティックラ イブラリのみをビルドします.
1.2以前のlibtoolのリリースのコードにおける,単純に考えられたライブラリ内 部の依存性の追跡は,ライブラリを他のライブラリとリンクすることが可能なと きが明白でないため,それが利用ができず,複雑な異常終了が発生します.この 概念のより複雑な実装は,リリース1.3の前に再導入されましたが,libtoolがサ ポートするすべてのプラットフォームに移植されませんでした.デフォルトで, 保守的な動作は,ライブラリが他のライブラリとリンクすることを避け,プログ ラムがリンクされるときのみに,その内部依存性が導入されます.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Akihiro Sagawa on June, 15 2005 using texi2html 1.70.