LD(1)

名称
ld - リンクエディタ

書式
ld [-fMNnrSstXxz] [-A symbol-file] [-assert keyword] [-Blinkmode] [-D datasize] [-d c] [-d p] [-e entry] [-llibrary-specifier] [-Llibrary-search-path] [-nostdlib] [-O filename] [-o filename] [-Rrecord-library-search-path] [-T address] [-u symbol] [-V shlib-version] [-y symbol]

解説
ld はコマンドラインで指定されたオブジェクトとアーカイブファイルを結合 し、新しいオブジェクトファイルを生成します。生成されるオブジェクトファイルは 実行可能プログラム、実行時ロードに対応した共有オブジェクト、もう一度 ld により処理可能なオブジェクトのいずれかになります。オブジェクト ファイルとアーカイブはコマンドラインで指定された順に処理します。

オプションは以下の通りです。

-A symbol-file
    symbol-file を、コマンドラインで指定されたオブジェクトファイルをリンクする ためのベースとして用います。

-assert keyword
    本オプションは主に SunOS の ld との互換性のために存在します。 Sun の assert が失敗する条件のほとんどは、本 ld ではエラーになるか、警告メッセージが発せられます。 ld が実装している唯一のキーワードは pure-text です。これを使用すると、位置独立オブジェクトが生成され、 位置独立でないファイルとリンクされるときに警告が生成されます。

-Bdynamic
    ダイナミックライブラリとのリンクを指定します。 ライブラリが -lx オプションによりコマンドラインから指定されると、libx.so.n.m ( -l オプションの項を参照) を検索ルールに基づき有効な範囲で検索します。もしこの形式 のライブラリが発見できなければ、検索ルールに基づき通常の libx.a を検索します。 本オプションはコマンドラインのどこにでも置くことが可能であり、 -Bstatic と相補的なものです。

-Bforcedynamic
    これは -Bdynamic と似ていますが、ダイナミックライブラリとリンクしようとしなくても、 ld はダイナミックな実行可能ファイルを生成します。 スタティックプログラムでありかつ、 実行時にダイナミックオブジェクトをロードする プログラムに有用です。

-Bstatic
    -Bdynamic の逆の効果を持ちます。本オプション以降に指定されたライブラリに 関しては、もう一度 -Bdynamic が指定されるまで、ダイナミックリンクが行われなくなります。 -Bstatic が有効な位置においてコマンドラインから明示的に共有オブジェクトが 指定された場合は、エラーとなります。

-Bshareable
    通常の実行可能イメージではなく、共有オブジェクトを生成するよう指示します。

-Bsymbolic
    リンク時に、すべてのシンボル参照が解決されるように指示します。 実行時に必要なリロケーションは ベース相対 リロケート、すなわちロードアドレスに関する変換のみです。 シンボル参照の解決に失敗した場合はエラーとなります。

-Bforcearchive
    アーカイブ中の全メンバをロードします。 メンバが通常のオブジェクトファイルに対して定義を提供するか否かには無関係です。 PIC オブジェクトのアーカイブを展開することなく、共有ライブラリを 作成するのに便利です。

-Bsilly
    共有オブジェクトのための愚かな .sa アーカイブを作成します。これは、version 3 の共有オブジェクトとの互換性のために存在します。

-D data-size
    データセグメントのサイズを設定します。 正気を保つためには、 サイズを入力ファイルの全データサイズの合計より大きくすべきです。

-d c
    リロケータブルな出力を作成している時でも、 コモンエリアのアロケートを強制します。

-d p
    非 PIC コード中の手続き呼び出しの別名定義を強制します。 手続きリンク表 (Procedure Linkage Table) による呼び出しのリダイレクト のような、実行時リロケーションを含む共有コードを作成するのに便利です。 ( link(5) を参照)

-e entry-symbol
    実行可能ファイルのエントリのシンボルを指定します。

-f  全てのオブジェクトファイルとライブラリの解決されたパスを 標準出力にリストし、終了します。

-Lpath
    -l オプションで指定したライブラリの検索パスに path を追加します。

-llib-spec
    出力に含めるとされるライブラリを指定します。もし、 -Bdynamic オプションが有効ならば、まず lib<spec>.so.m.n ( m はメジャーバージョン番号、 n はマイナーバージョン番号) 形式の共有ライブラリを検索します。検索パス中に見つかった、 最もバージョンが高いライブラリを選択します。共有ライブラリが見つからないか、 -Bstatic オプションが有効なら、lib<spec>.a 形式のアーカイブを ライブラリ検索パスより探します。

-M  入力ファイルのセグメントマッピングと、 出力ファイルの (大域) シンボルに割り付けられた値 に関する報告を出力します。

-N  OMAGIC 形式ファイル を生成します。

-n  NMAGIC 形式ファイル を生成します。

-nostdlib
    -l で指定されたライブラリの検索時に、組み込みのライブラリ検索パス ( 通常は “/usr/lib”) を使用しません。

-O filename
    出力ファイル名を指定します。 ファイルは filename .tmp として生成され、出力が完了すると、 filename にリネームされます。

-o filename
    出力ファイル名を指定します。デフォルトは “a.out” です。

-Q  QMAGIC (FreeBSD/BSDi-i386)形式のファイルを生成します。これがデフォルトです。

-r  さらに、 ld によって処理可能なリロケータブルオブジェクトを生成します。

-R  実行時のライブラリ検索のために、与えられたバスを実行可能ファイルに記録します。 ダイナミックリンクされた実行可能ファイルにのみ適用されます。

-S  出力にデバッガシンボルを含めません。

-s  出力にすべてのシンボルを含めません。

-T  テキストセグメントの開始アドレスを指定します。このアドレスを基準に、すべ ての入力ファイルがリロケートされます。

-t  入力ファイルの処理状況を出力します。

-u symbol
    シンボル symbol を強制的に未定義とマークします。 他からの参照がない状況で、あるアーカイブのメンバをロードするのに便利です。

-V version
    (共有ライブラリ生成時に) 共有ライブラリにバージョン番号を埋め込みます。SunOS 4.x 等の他 のシステムと互換性のある共有ライブラリを作成するのに便利です。 SunOS 4.x ではバージョン番号は 3、本 ld のデフォルトは 8 です。

-X  入力ファイル中の文字 “L” から始まるローカルシンボルを削除します。

-x  入力ファイル中のすべてのローカルシンボルを削除します。

-y symbol
    シンボル symbol に関する処理状況を報告します。

-Z  386BSD ZMAGIC 形式ファイルを生成します。

-z  NetBSD ZMAGIC 形式ファイルを生成します。

環境変数
ld は以下の環境変数を使用します:

LD_LIBRARY_PATH
    これはコロンで区切るディレクトリリストであり、ライブラリ検索パスとして、 -L オプションで指定されたディレクトリの後であり組み込みパスの前であるところに 挿入されます。

関連ファイル

関連項目
ldd(1), rtld(1), link(5), ldconfig(8)

警告
通常の実行可能ファイルを生成するなら、エントリポイントを明示する必要が あります。以前のバージョンの ld では、このようなことは不要でした。

バグ
共有オブジェクトに対しては、正しく未定義シンボルの検査が行われません。

共有オブジェクトをカスケードすると “-Bstatic” オプションは失敗します。

実行時に必要なシンボルを必要とされなくとも、 ld に指定された共有オブジェクトは実行時ロードのためのマークが含まれます。

歴史
ld コマンドは AT&T UNIX から登場しました。 ld による共有ライブラリモデルは SunOS 4.0 より登場しています。