ノード:Link mode, 次:, 前:Compile mode, 上:Invoking libtool



リンクモード

リンクモードは,(ライブラリオブジェクトを含む)オブジェクトファイ ルと,その他のライブラリや作成された実行可能なプログラムをリンクします.

mode-argsは,いくつかのオブジェクトファイルから(-oフラグ を用いた)出力ファイルを作成するためにCコンパイラが使用するコマンドから 成り立ちます.

以下のmode-argsの組は特別に扱われます.

-all-static
output-fileがプログラムの場合,共有ライブラリと全くリンクしませ ん.output-fileがライブラリの場合,スタティックライブラリのみ作 成します.
-avoid-version
ライブラリとモジュールに対しバージョン管理(see Versioning)を避けよ うとし,すなわち,バージョン情報は保存されず,シンボリックリンクも作成 されません.プラットフォームがバージョニングを要求する場合,このオプショ ンは効果がありません.
-dlopen file
ネイティブなdlopenがホストプラットフォームでサポートされていない場合 (see Dlopened modules)や,プログラムが-static-all-staticでリンクされている場合,-dlpreopen file と同じです.それ以外では効果はありません.fileselfの場 合,-export-dynamicを可能にする,または,-dlpreopen self に後退することにより,libtoolはプログラムがそれ自身をdlopen可能 であることを確かめます.
-dlpreopen file
fileを出力プログラムにリンクし,そのシンボルを lt_preloaded_symbolsに含めます(see Dlpreopening).fileselfの場合,プログラムのシンボル自身が lt_preloaded_symbols に加えられます.fileforceの 場合,libtoolは,lt_preloaded_symbolsが空であろうがなかろうが, 常に定義済であることを確実にします.
-export-dynamic
output-fileからのシンボルがdlsymで解決されることを可能に します(see Dlopened modules).
-export-symbols symfile
リンカにsymfileでリストアップされているシンボルのみエクスポート するよう伝えます.シンボルファイルは.symで終わるべきで,一行ご とに一シンボル名を含める必要があります.このオプションに効果がないプラッ トフォームがあります.デフォルトですべてのシンボルがエクスポートされま す.
-export-symbols-regex regex
正規表現regexに一致するシンボルのみエクスポートされる以外, -export-symbolsと同じです.デフォルトですべてのシンボルがエクス ポートされます.
-Llibdir
既にインストールされている,要求されているライブラリに対し, libdirを検索します.
-lname
output-fileはインストールされているライブラリ libnameを要求します.このオプションはoutput-fileが 実行形式でないときも要求されます.
-module
dlopen可能なライブラリを作成します(see Dlopened modules).このオプ ションはプログラムでは動作しません.モジュール名の'lib'の前置は不要で す.しかし,名前の破壊を避けるため,'libname'と'name' パッケージで同時 に使用してはなりません.
-no-fast-install
実行形式output-fileの高速インストールモードを利用不可にします. プログラムをインストールする必要がないとき役に立ちます.
-no-install
インストール不可能で,そのためラップスクリプトが不要な実行形式 output-fileをリンクします.プログラムがビルドツリーでのみ使用さ れる場合,例えば,テストしたり他のファイルを生成するプログラムに対して 役に立ちます.
-no-undefined
output-fileが他のライブラリに依存しないことを宣言します.他のラ イブラリに依存する共有ライブラリを作成不可能なプラットフォームもありま す(see Inter-library dependencies).
-o output-file
指定されたオブジェクトとライブラリからoutput-fileを作成します.
-release release
ユーザが他より新しいバージョンを簡単に伝えられるよう,パッケージのリリー スreleaseで生成されたライブラリを指定します.このフラグを使用す る場合,パッケージの二つのリリースがバイナリ互換でないことを警告されま す.バイナリ互換が欲しい場合,代わりに-version-infoフラグを使用 してください(see Versioning).
-rpath libdir
output-fileがlibtoolライブラリの場合,それをビルドするために,バー ジョン情報currentrevision,そしてageを使用します (see Versioning).このフラグをパッケージのリリース情報の指定に使用 せず,そのためには-releaseを参照してください.
-shrext suffix
output-fileがlibtoolライブラリの場合,システム標準の共有ライブラ リに対するファイル名の拡張子をsuffixに置換します(ほとんどのシス テムでは,これに.soを使用します).このオプションは,アプリケー ションが要求する共有ライブラリ(一般的にはモジュール)の拡張子が,デフォ ルトのものではない状況で役に立ちます.前置するドットを含めた完全なファ イル名の拡張子を提供する必要があることに注意してください.
-R libdir
output-fileがプログラムの場合,プログラムの実行時のパスを libdirに加えます.output-fileがライブラリの場合,ライブラ リがプログラムとリンクされるときは,常にlibdirが実行時のパスに加 えられるように,そのdependency_libsに-Rlibdirを加えます.
-static
output-fileがプログラムの場合,インストールされていない共有ライ ブラリとリンクしません.output-fileがライブラリの場合,スタティッ クライブラリのみ作成します.
-version-info current[:revision[:age]]
output-fileがlibtoolライブラリの場合,それをビルドするために,バー ジョン情報currentrevision,そしてageを使用します (see Versioning).このフラグをパッケージのリリース情報の指定に使用 せず,そのためには-releaseを参照してください.
-version-number major[:minor[:revision]]
output-fileがlibtoolライブラリの場合,結果として得られるライブラ リが使用する指定されたメジャー,マイナーそしてリビジョンナンバーを使用 するように,インターフェースバージョンの情報を計算します.これは,特定 のバージョンナンバーがすでにオペレーティングシステムで使用されている既 存のプロジェクトで,libtoolが使用できるように設計されています.新しい プロジェクトでは,代わりに-version-infoフラグを使用すべきです.
-Wl,flag
-Xlinker flag
リンカ指定のフラグを直接リンカに渡します.
-XCClinker flag
リンク指定フラグをコンパイラドライバ(CC)にリンク時に渡します.

output-file.laで終わる場合,libtoolライブラリが作成され, それはライブラリオブジェクト(.loファイル)のみから作成される必要 があります.-rpathオプションは要求されません.現在の実装では, libtoolライブラリが他のインストールされていないlibtoolライブラリに依存 することはできません(see Inter-library dependencies).

output-file.aで終わる場合,標準的なライブラリは arと,おそらくranlibを使用して作成されます.

output-file.o.loで終わる場合,リロード可能なオ ブジェクトファイルは,(通常ld -rを用いて)入力ファイルから作成さ れます.この手法は部分的なリンクと呼ばれることが多いです.

それ以外の場合,実行可能なプログラムが作成されます.