libtool
の呼び出し
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
libtool
の呼び出しlibtool
の呼び出し"へのコメント(無し)
libtool
プログラムは以下の構文になります.
libtool [option]... [mode-arg]... |
そして,以下のオプションを受け入れます.
less
(やmore
)にパイプしたり,ファイルにリ ダイレクトしたいかもしれません.
modeは以下の一つに設定する必要があります.
mode-argsは引数の変数の数で,それは処理モードの選択に依存します. 一般的に,それぞれのmode-argは,libtool自身ではなく,libtoolが呼 び出すプログラムで解釈されます.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
コンパイルモードに対し,mode-argsは,`標準的な'オブジェク トファイルを作成するとき使用するコンパイルコマンドです.これらの引数は, Cコンパイラの名前で始まり,オブジェクトファイルのみを作成するための `-c'コンパイラフラグが含まれます.
libtoolは,ソースファイル名からディレクトリ要素を削除して出力ファイル 名を決定し,ソースコードの接尾子(例えば,Cソースコードに対する `.c')をライブラリオブジェクト接尾子`.lo'に置換します.
共有ライブラリをビルドする場合は,必要なPIC生成フラグがコンパイルコマ ンドに置換されます.`-XCClinker flag'を使用したり,リンカフ ラグ`-Wl,flag'と`-Xlinker flag'を渡すことで,リ ンク指定のフラグをコンパイラドライバに渡すことが可能です.また, `-Wc,flag'と`-Xcompiler flag'を使用することで, コンパイル指定のフラグを渡すことも可能です.
`-static'オプションが与えられている場合は,libtoolが `--disable-static'でコンフィグレーションされていた場合でも, `.o'ファイルがビルされてます.
現在は`-o'オプションが,完全にサポートされていることに注意してく ださい.それがサポートされていないプラットフォームでは,(オブジェクト のロックと移動によって)エミュレートされるので,Makefileを少し編集する だけでlibtoolは本当に簡単に使用できます.入力例は以下のようになります.
libtool gcc -c foo/x.c -o foo/x.lo |
しかし,コンパイラが`-c'と`-o'をサポートしていない場合,既存 の`./x.o'を上書きせずに`foo/x.c'をコンパイルすることが不可能 なことに注意してください.そのため,ソースファイル`./x.c'がある場 合,`./x.o'(や`./x.lo')が,サブディレクトリのあらゆる `x.lo'の後で再作成されることを確実にするため,`Makefile'に依 存性の導入を必ず行ってください.
x.o x.lo: foo/x.lo bar/x.lo |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
リンクモードは,(ライブラリオブジェクトを含む)オブジェクトファイ ルと,その他のライブラリや作成された実行可能なプログラムをリンクします.
mode-argsは,いくつかのオブジェクトファイルから(`-o'フラグ を用いた)出力ファイルを作成するためにCコンパイラが使用するコマンドから 成り立ちます.
以下のmode-argsの組は特別に扱われます.
self
の場 合,-export-dynamic
を可能にする,または,`-dlpreopen self' に後退することにより,libtoolはプログラムがそれ自身をdlopen
可能 であることを確かめます.
self
の場合,プログラムのシンボル自身が lt_preloaded_symbols に加えられます.fileがforce
の 場合,libtoolは,lt_preloaded_symbolsが空であろうがなかろうが, 常に定義済であることを確実にします.
dlsym
で解決されることを可能に します(see 節 9. dlopenモジュール).
output-fileが`.la'で終わる場合,libtoolライブラリが作成され, それはライブラリオブジェクト(`.lo'ファイル)のみから作成される必要 があります.`-rpath'オプションは要求されません.現在の実装では, libtoolライブラリが他のインストールされていないlibtoolライブラリに依存 することはできません(see 節 8. ライブラリ内部の依存性).
output-fileが`.a'で終わる場合,標準的なライブラリは ar
と,おそらくranlib
を使用して作成されます.
output-fileが`.o'や`.lo'で終わる場合,リロード可能なオ ブジェクトファイルは,(通常`ld -r'を用いて)入力ファイルから作成さ れます.この手法は部分的なリンクと呼ばれることが多いです.
それ以外の場合,実行可能なプログラムが作成されます.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
`実行'モードに対し,ライブラリパスは自動的に設定され,プログラム は実行されます.
mode-argsの最初は,プログラム名として扱われ,残りはプログラムの 引数となります.
以下のmode-argsの組は特別に扱われます.
このモードは,あらゆる`-dlopen'フラグによって,ライブラリパス環境 変数を設定します.
すべてのargsがlibtoolの実行形式のラッパーの場合,それらは対応す るインストールされていないバイナリの名前に変換され,それらが要求するす べてのライブラリディレクトリがライブラリパスに加えられます.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
インストールモードでは,libtoolはmode-argsのほとんどの要素 を,cp
で始まるインストールコマンドやBSD互換のinstall
プロ グラムとして解釈します.
mode-argsの残りは,特別扱いされます.
automake
で DESTDIRを使用する方法とほとんど同じです.例えば,prefixが /usr/local
でinst-prefix-dirが/tmp
の場合,オブジェ クトは/tmp/usr/local/
にインストールされます.インストールされた オブジェクトがlibtoolライブラリの場合,ライブラリの内部フィールドは inst-prefix-dirではなくprefixだけに反映されます.
# Directory that this library needs to be installed in: libdir='/usr/local/lib' |
以下ではありません.
# Directory that this library needs to be installed in: libdir='/tmp/usr/local/lib' |
inst-prefix
は,インストールされたオブジェクトがインストール時に 再リンクする必要がある場合にも,それがprefixではなく inst-prefix-dir/prefixのライブラリと再リンクするのを確実に するためにも使用されます.
実際は,このオプションはlibtoolで直接呼び出すときに使用することが本当 の目的ではありません.それはlibtool --mode=install
が libtool --mode=relink
を呼び出すとき自動的に使用されます. libtoolは元々のlibtool --mode=install
コマンドで与えられたインス トール先のパスを解析し,libtool --mode=link
で確定した予測される インストールパスと比較することで,これを行ないます.
このため,エンドユーザは変更する必要はなく,automake
形式の make install DESTDIR=/tmp
でJust Work(tm) (うまく動作します)にな ります.
残りのmode-argsは,cp
やinstall
コマンドの引数として 解釈されます.
コマンドが実行され,特権の不要な必要なインストール後のコマンドも完全に 実行されます.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
フィニッシュモードは,ユーザプログラムにlibtoolライブラリを配置し リンクできるよう,システム管理者のインストールを助けます.
それぞれのmode-argはライブラリのディレクトリの名前として解釈され ます.このコマンドの実行は,`--dry-run'オプションが役に立つように, スーパーユーザの特権を要求するかもしれません.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
アンインストールモードはインストールされているライブラリ,実行形 式,そしてオブジェクトを削除します.
mode-argの最初はファイルの削除に使用するプログラム名(通常は `/bin/rm')です.
残りのmode-argsは,(`-'で始まる)削除プログラムに対するフラグ,ま たは削除するファイル名です.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
クリーンモードはアンインストールされたライブラリ,実行形式,オブ ジェクト,そして,それらに関連があるlibtoolの一時ファイルを削除します.
最初のmode-argは,ファイルを削除するために使用するプログラムの名 前(通常は`/bin/rm')です.
残りのmode-argsは削除プログラムに対する(`-'で始まる)フラグ,また は削除するファイル名です.
[ << ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |