次: , 前: Platform quirks, 上: Maintaining


13.4 libtoolスクリプトの内容

バージョン1.4からは,libtoolスクリプトはconfigureによっ て生成されます(see Configuring.以前のバージョンでは, ltconfig と呼ばれるへルパースクリプトを呼び出すことで, configureはそれを達成していました.libtoolのバージョン0.7から 1.0までは,このスクリプトは,単純にシェル変数を設定し,libtoolのバック エンドのltmain.shの源となっていました.libtoolバージョン1.1から 1.3までのltconfigは,ltmain.shの内容を,生成された libtoolにインライン化し,それは多くのシステムでパフォーマンスを 改善しました.ltconfigが実行するために使用するテストは,現在 libtool.m4にあり,そこで我々はAutoconfを使用して書くことが可能 となっています.これは,インライン化されたltmain.shの実行時の動 作に有利で,そして,管理が必要な生のシェルコードの量をかなり取 り除くことで,ビルド時間を短くする改善を行いました.

後で評価するもの対するシェルコマンドを保持する変数の命名に使用される規 則は,有効な単一行のシェルスクリプトが必要とされるところで接尾子 _cmd,複数行のシェルスクリプトが後で評価することが可能 なところで接尾子_cmdsを使用することです.規則では, _cmds変数は,必要なところで,~文字で評価ユニットを区切り ます.

それぞれのコンフィグレーション変数と,ltmain.shで使用する方法の リストは,以下のようになります(see Configuring).

— 変数: AR

システムライブラリアーカイバの名前です.

— 変数: CC

ibtoolをコンフィグレーションするために使用するCコンパイラの名前です.

— 変数: LD

リロード可能にするリンクとおそらく共有ライブラリに対し,libtoolが内部 で使用するリンカの名前です.

— 変数: NM

BSD互換のnmプログラムの名前で,それは以下の書式の一つで,大域的 なシンボルを生成します.

          address C global-variable-name
          address D global-variable-name
          address T global-function-name
     
— 変数: RANLIB

存在する場合,ranlibプログラムの名前を設定します.

— 変数: allow_undefined_flag

結果として生じる共有ライブラリに,未解決のシンボルがあることを宣言する ために,`archive_cmds'で使用されるフラグです.そのようなフラグが 不要な場合は空です.ライブラリで定義されていないシンボルを参照して,共 有ライブラリを生成する方法がない場合,`unsupported'を設定します.

— 変数: always_export_symbols

アーカイブとリンクする前に,export_symbols_cmdsを使用してエクス ポートされるシンボルのリストを,libtoolが自動的に生成するかどうかです. `yes'または`no'に設定します.デフォルトは`no'です.

— 変数: archive_cmds
— 変数: archive_expsym_cmds
— 変数: old_archive_cmds

それぞれ,共有ライブラリ,`-export-symbols'を用いた共有ライブラリ, そしてスタティックライブラリを生成するために使用するコマンドです.

— 変数: old_archive_from_new_cmds

共有ライブラリがスタティックライブラリに依存する場合, `old_archive_from_new_cmds'はスタティックライブラリを生成するため に使用するコマンドを含みます.この変数が空の場合, `old_archive_cmds'は使用されません.

— 変数: old_archive_from_expsyms_cmds

スタティックライブラリが,共有ライブラリで正しくリンクするために,エク スポートシンボルリストから作成される必要がある場合, `old_archive_from_expsyms_cmds'は,そのスタティックライブラリを作 成するために必要なコマンドを含みます.これらのコマンドが実行されるとき, 変数sonameは,共有ライブラリの名前を疑問符の中に含み, $objdir/$newlibは,これらのコマンドがビルドするスタティックライ ブラリのパスを含みます.これらのコマンドを実行した後,libtoolは, sonameの代わりに$objdir/$newlibに対してリンクするための処 理を行います.

— 変数: build_libtool_libs

このシステムで,libtoolが共有ライブラリをビルドできるかどうかです. `yes'または`no'に設定します.

— 変数: build_old_libs

このシステムで,libtoolがスタティックライブラリをビルドできるかどうか です.`yes'または`no'に設定します.

— 変数: compiler_c_o

コンパイラが,同時に-c-oオプションをサポートするかどう かです.`yes'または`no'に設定します.

— 変数: compiler_o_lo

コンパイラが,直接".lo"ファイルへのコンパイルをサポートするかどうかで, 例えば,オブジェクトファイルが,接尾子".o"を持つ必要があるかどうかです. `yes'または`no'に設定します.

— 変数: dlopen_support

プラットフォームで,dlopenをサポートするかどうかです. `yes'または`no'に設定します.

— 変数: dlopen_self

実行形式自身がdlopen可能かどうかです.`yes'または`no' に設定します.

— 変数: dlopen_self_static

スタティックにリンクされているとき(`-all-static'),実行形式自身が dlopen可能かどうかです.`yes'または`no'に設定します.

— 変数: echo

バックスラッシュをエスケープ文字と解釈しないechoプログラムです.

— 変数: exclude_expsyms

プリリードされているシンボルにリストアップされないシンボルのリストです.

— 変数: export_dynamic_flag_spec

dlopenされる共有ライブラリが,プログラムで定義されているシンボルへの参 照を可能にするコンパイラリンクフラグです.

— 変数: export_symbols_cmds

libobjsからファイルexport_symbolsへエクスポートされたシン ボルを抽出するコマンドです.

— 変数: extract_expsyms_cmds

共有ライブラリからエクスポートされたシンボルリストを抽出するコマンドで す.これらのコマンドは,ファイル$objdir/$soname-defが無い場合に 実行され,`old_archive_from_expsyms_cmds'が使用するため,エクスポー トされたシンボル名をそのファイルに書き出します.

— 変数: fast_install

libtoolが特権を与える人を,インストール者または開発者のどちらかに決定 します.インストール者がビルドツリーでプログラムを実行することは滅多に なく,開発者は滅多にインストールしないしないと仮定します.これは, shlibpath_overrides_runpathが`yes'でないプラットフォーム上 でのみ意味があるので,この場合,fast_installは`needless'設 定されます.fast_installが`yes'に設定される場合,libtoolは インストールされたライブラリを検索するプログラムを作成し,プログラムが ビルドツリーで実行される場合,まだインストールされていないライブラリを 使用するため,要求があれば,新しいコピーがリンクされます.`no'に 設定されている場合,libtoolは,まだインストールされていないライブラリ を使用するプログラムを作成し,インストール時にプログラムの新しいコピー をリンクします.デフォルト値は`yes'または`needless'で,それ は,プラットフォームとコンフィグレーションフラグに依存し,コンフィグレー ションフラグ`--disable-fast-install'を用いると,`yes'から `no'に切り替えられます.

— 変数: finish_cmds

指定されたディレクトリで共有ライブラリを見つける方法を,ダイナミックリ ンカに伝えるコマンドです.

— 変数: finish_eval

コマンドが表示されない以外,finish_cmdsと同じです.

— 変数: fix_srcfile_path

コンパイラに対するシェル変数$srcfileを修正する式です.

— 変数: global_symbol_pipe

NMの出力を受け,Cの名前が続く生のシンボルのリストを生成するパイ プラインです.例えば,以下のようになります.

          $ eval "$NM progname | $global_symbol_pipe"
          D symbol1 C-symbol1
          T symbol2 C-symbol2
          C symbol3 C-symbol3
          ...
          $
     

最初の列は,(いくつかのプラットフォーム上でコードからデータを伝えるた めに使用される)シンボル形式を含みますが,その意味はシステムに依存しま す.

— 変数: global_symbol_to_cdecl

global_symbol_pipeの出力を厳密なC宣言に変換するパイプラインです. HP/UXのような,リンカがコードとデータを区別するプラットフォームでは, データシンボルはそのように宣言され,コードシンボルは関数として宣言され ます.気にしないプラットフォームではすべてがデータと仮定されます.

— 変数: hardcode_action

`immediate'または`relink'のいずれかで,共有ライブラリパスが インストールされる前に実行形式にハードコードされるか,または,再リンク する必要があるかに依存します.

— 変数: hardcode_direct

hardcode_libdir_flag_specが指定されたとき, (`dir/libname.a'のような)コマンド行でライブラリが直接 していされる場合,リンカがディレクトリをハードコードするかどうかに依存 し,`yes'または`no'に設定します.

— 変数: hardcode_into_libs

ライブラリ内の実行パスのハードコードをプラットフォームがサポートするか どうかです.可能な場合,プログラムのリンクはより単純になりますが,ライ ブラリはインストール時に再リンクが必要です.`yes'または`no' に設定します.

— 変数: hardcode_libdir_flag_spec

実行時に,共有ライブラリに対しダイナミックリンカがlibdirを検索す るために,バイナリにlibdir変数をハードコードするためのフラグです. 空の場合,libtoolは他のハードコーディングメカニズムの使用を試みます.

— 変数: hardcode_libdir_separator

コンパイラが単一のhardcode_libdir_flagのみ受け入れる場合,この変 数はそのフラグに対する複数の引数を分ける文字列を含みます.

— 変数: hardcode_minus_L

hardcode_libdir_flag_specが指定されたとき,結果として生じる実行 形式に`-L'フラグで指定されるディレクトリを,リンカがハードコード するかどうかに依存し,`yes'または`no'に設定します.

— 変数: hardcode_shlibpath_var

hardcode_libdir_flag_specが指定されたとき,結果として生じる実行 形式に`$shlibpath_var'の内容を書き込むことで,リンカがディレクト リをハードコードするかどうかに依存し,`yes'または`no'に設定 します.`$shlibpath_var'で指定されたディレクトリが,リンク時では なく実行時に検索される場合,`unsupported'に設定します.

— 変数: host
— 変数: host_alias

情報を目的として,libtoolがコンフィグレーションされたシステムの指定さ れた標準名に設定します.

— 変数: include_expsyms

export_symbolsの使用時に,常にエクスポートされる必要があるシンボ ルのリストです.

— 変数: libext

標準的な,古いアーカイブの接尾子(通常は"a")です.

— 変数: libname_spec

ライブラリ名の接頭辞の書式です.Unixシステムでは,スタティックライブラ リは`libname.a'と命名されますが,(OS/2やMS-DOSのような)シス テムでは,ライブラリは`name.a'のみで命名されることもありま す.

— 変数: library_names_spec

共有ライブラリ名のリストです.最初はファイル名で,残りはファイルへのシ ンボリックリンクです.リスト内の名前は,`-lname'で与えられ たときリンカが見つけるファイル名です.

— 変数: link_all_deplibs

libtoolが,全ての依存するプログラムに対しプログラムをリンクする必要が あるかどうかです.`yes'または`no'に設定します.デフォルトは `unknown'で,それは`yes'と同じです.

— 変数: link_static_flag

ダイナミックリンクを避けるために使用する(Cコンパイラに渡す)リンカフラ グです.

— 変数: need_lib_prefix

自動的にモジュール名に'lib'接頭辞を付けるかどうかです.`yes'また は`no'に設定します.デフォルトで,それは`unknown'になり,そ れは`yes'と同じ意味ですが,本当に確かめたわけではないことを告げて います.`yes'はdlopenと'lib'接頭辞がないライブラリにリンク 可能なことを意味し,すなわち,それはhardcode_directを`yes' にすることを要求します.

— 変数: need_version

バージョン管理がライブラリに必要とされるかどうかで,すなわち,ダイナミッ クリンカが,すべてのライブラリに対しバージョンの接尾子を必要とするかど うかです.`yes'または`no'に設定します.デフォルトで,それは `unknown'で,それは`yes'と同じ意味を持ちますが,それを実際に は確かめていないことを告げています.

— 変数: need_locks

同時にコンパイルするとき,衝突を避けるためにファイルをロックする必要が あるかどうかです.`yes'または`no'に設定します.

— 変数: no_builtin_flag

charとして外部グローバルシンボルを宣言することと衝突する組み込 み関数を,利用不可能にするコンパイラフラグです.

— 変数: no_undefined_flag

結果として生じる共有ライブラリに,未解決のシンボルがないことを宣言する ための,`archive_cmds'で使用されるフラグです.

— 変数: objdir

一時的なlibtoolファイルが含まれるディレクトリ名です.

— 変数: objext

標準的なオブジェクトファイルの接尾子(通常は"o")です.

— 変数: pic_flag

ライブラリオブジェクトファイルをビルドするための,あらゆる追加のコンパ イルフラグです.

— 変数: postinstall_cmds
— 変数: old_postinstall_cmds

それぞれ,共有またはスタティックライブラリをインストールした後に実行す るコマンドです.

— 変数: postuninstall_cmds
— 変数: old_postuninstall_cmds

それぞれ,共有またはスタティックライブラリをアンインストールした後に実 行するコマンドです.

— 変数: reload_cmds
— 変数: reload_flag

リロード可能なオブジェクトを作成するコマンドです.

— 変数: runpath_var

結果として生じる実行形式内にハードコードするディレクトリをリンカに伝え る環境変数です.

— 変数: shlibpath_overrides_runpath

環境変数でプログラムのハードコードされたライブラリ検索パスを優先可能か どうかを示します.これが`no'に設定されている場合,libtoolはビルド ツリーにプログラムのコピーを二つ作成する必要がある可能性があり,一つは インストールされ,もう一つはビルドツリーのみで実行されます.これらのコ ピーのどちらかが作成されるとき,fast_installの値に依存します. デフォルト値は`unknown'で,それは`no'と同じです.

— 変数: shlibpath_var

ダイナミックリンカに共有ライブラリを探す場所を伝える環境変数です.

— 変数: soname_spec

共有ライブラリがファイルの本当の名前と異なる場合,その中に符号化された コードされた名前です.

— 変数: striplib
— 変数: old_striplib

共有(striplib)やスタティック(old_striplib)のライブラリを stripするコマンドです.これらの変数が空の場合,インストールモードの stripフラグは,ライブラリに対し無視されます(see Install mode).

— 変数: sys_lib_dlsearch_path_spec

実行時にライブラリの検索パスを取得する式です.このリストに現れるディレ クトリが実行形式にハードコードされることは決してありません.

— 変数: sys_lib_search_path_spec

コンパイル時にライブラリの検索パスを取得する式です.この変数は,特定の ライブラリが共有かスタティックかをテストする必要があるとき,libtoolが 使用します.shlibpath_varでリストアップされるディレクトリは,こ のリストに自動的に現れ,ライブラリ検索パスを拡張するためにこの変数を使 用するリンカもあるので,毎回(すなわち,コンフィグレーション時以外) libtoolは実行します.リンカは-Lのような検索パス引数も切り替えま す.

— 変数: thread_safe_flag_spec

スレッドセーフなライブラリを生成するために使用する(Cコンパイラに渡す) リンカフラグです.

— 変数: version_type

ライブラリバージョンナンバーの形式です.`libtool', `freebsd-aout',`freebsd-elf',`irix',`linux', `osf',`sunos',`windows',または`none'の一つです.

— 変数: whole_archive_flag_spec

コンビニエンスアーカイバから共有ライブラリを生成するコンパイラフラグで す.

— 変数: wl

libtoolが直接リンカにフラグを渡すことを可能とするCコンパイラフラグです. ${wl}some-flagとして使用されます.

`_cmds'や`_eval'で終わる変数は,`~'で分けられた,順番に evalされるコマンドのリストを含みます.ゼロ以外の終了ステータス を返すコマンドがある場合,libtoolは一般的にエラーメッセージとともに終 了します.

`_spec'で終わる変数は,libtoolで使用される前にevalされます.