LD(1)

名称
ld - リンカ

書式
ld [-MNnrSstXxz] [-A symbol-file] [-assert keyword] [-B linkmode] [-D datasize] [-d c] [-d p] [-e entry] [-l library-specifier] [-L library-search-path] [-nostdlib] [-o filename] [-T address] [-u symbol] [-V shlib-version] [-y symbol]

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

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

-A symbol-file
    symbol-file を、指定されたオブジェクトをリンクするためのベースとして用います。

-assert keyword
    本オプションは、現在までのところ、意味を持ちません。これは、SunOS の ld との 互換性のために存在します。Sun の assert がサポートする条件は、 本 ld ではエラーになるか、警告メッセージが発せられます。

-B dynamic
    ダイナミックライブラリとのリンクを行ってもよいことを指定します。-lx 形式で コマンドラインにライブラリが指定されると、libx.so.n.m ( l オプション の項を参照) を検索し、リンクしようと試みます。もしこの形式のライブラリが発見できなければ、 通常の libx.a を検索し、リンクします。本オプションはコマンドラインの どこにも置くことができ、-Bstatic と交互に用いることができます。

-B static
    -Bdynamic の逆の効果を持ちます。本オプション以降に指定されたライブラリに 関しては、ダイナミックリンクが行われなくなります。さらに -Bdynamic オプションが指定されると、それ以降に指定されたライブラリに関しては ダイナミックリンクを試すようになります。-Bstatic オプションが有効な位置で 明示的にダイナミックライブラリ名が指定された場合はエラーとなります。

-B shareable
    通常の実行可能イメージではなく、共有オブジェクトを生成します。

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

-B forcearchive
    アーカイブのすべてのメンバーがリンクされるように指定します。 いったん PIC オブジェクトのアーカイブを展開することなく、 共有ライブラリを作成するのに便利です。

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

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

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

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

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

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

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

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

-N  OMAGIC 形式ファイル ( a.out(5) を参照) を生成します。

-n  NMAGIC 形式ファイル ( a.out(5) を参照) を生成します。

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

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

-Q  QMAGIC 形式ファイルを生成します。

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

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

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

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

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

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

-V version
    出力される共有ライブラリのバージョン番号を指定します。SunOS 4.x 等の 他のシステムと互換性のある共有ライブラリを作成するのに便利です ( SunOS 4.x ではバージョン番号は 4、本 ld のデフォルトは 8 です) 。

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

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

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

-z  ZMAGIC 形式ファイルを生成します。これがデフォルトです。

関連項目
ldconfig(1), link(5)

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

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

たとえ、実行時に必要としなくても、 ld に指定された共有オブジェクトに対する実行時ロードのためのマークは つねに出力されます。