TOP(サイトマップ) | Solaris man マニュアル | |
(はじめに) はじめに Solarisって・・・ SunのセミナーとSDC Solaris 10概要 資格(SCSA,SCNA) Solarisフォーラム 管理人に連絡 (Solaris基本) Solarisのインストール システムの起動と停止 ファイルシステム オートマウントとマウント パッケージとパッチ ユーザの追加と削除 ファイル権限(セキュリティ) バックアップとリストア CDE環境 プロセス管理/監視 (ネットワーク管理) OSIを理解してみる TCP/IPの設定 (TCP/IP入門) DNSの設定 NISの設定 NFSの設定(WebNFS,CacheFS) (NIS、NIS+、DNS違い) DHCPの設定 1つのNICで複数IP設定 (IO関連) インタフェース概要 SAFの管理 プリンタ管理概要 プリンタコマンド SunSolve Online SCSI情報(KEY,ASC,ASCQ) (ソフトウェア関連) Bash Apache Solstice DiskSuite (SDS OSミラー回復) Veritas VxVM (OBPについて) PROM(OBP)の概要 OBPでのキーボード操作 一般的なOBPコマンド SolarisでOBPの設定 OBPに関するFAQ (トラブル時の対応) 基本情報 エラーメッセージ (主要メッセージ一覧) 性能関連コマンド トレースコマンド クラッシュダンプ SunSolve Online (その他) 小技集 UNIXコマンド (manマニュアル) システムチューニング ネットワークチューニング UltraSPARC T1について (FAQ) rootのPASSが不明 ハングアップかな? ハードトラブル OSが起動しない(b) swap領域の拡張方法 (リンク) Sun関連リンク その他リンク アバウトなJava入門 Perlメモ(逆引き用) |
ユーザーコマンド ld(1) 【名前】 ld - オブジェクトファイル用リンカー 【形式】 /usr/ccs/bin/ld [-64] [-a | -r] [-b] [-c name] [-C] [-G] [-i] [-m] [-s] [-t] [-V] [-B direct] [-B dynamic | static] [-B group] [-B local] [-B eliminate] [-B reduce] [-B sym- bolic] [-d y | n] [-D token, ...] [-e epsym] [-F name | -f name] [-h name] [-I name] [-L path] [-l x] [-M mapfile] [-N string] [-o outfile] [-p auditlib] [-P auditlib] [-Q y | n] [-R path] [-S supportlib] [-u symname] [-Y P,dirlist] [-z absexec] [-z allextract | defaultextract | weakextract ] [-z combreloc] [-z defs | nodefs] [-z direct | nodirect] [-z endfiltee] [-z finiarray=function] [-z groupperm | nogroupperm] [-z ignore | record] [-z initarray=function] [-z initfirst] [-z interpose] [-z lazyload | nolazyload] [ -z ld32=arg1,arg2, ...] [ -z ld64=arg1,arg2, ...] [-z loadfltr] [-z muldefs] [-z nodefaultlib] [-z nodelete] [-z nodlopen] [-z nodump] [-z nopartial] [-z noversion] [-z now] [-z origin] [-z preinitarray=function] [-z redlocsym] [-z rescan] [-z text | textwarn | textoff] [-z verbose] filename ... 【機能説明】 ld コマンドは、複数の再配置可能オブジェクトファイルの結 合、 再配置の実行、外部シンボルの解釈処理を行います。ld は 2 つの モード (静的モードと動的モード) で動作します。モードの指定に は、-d オプションを使用します。いずれの場合も、ld の実行結果 はデフォルトで a.out ファイルに出力されます (「注意事項」 を 参照)。 静的モード (-dn) では、引数として指定した再配置可能オブ ジェ ク ト ファイルが結合され、静的な実行可能ファイルが生成されま す。-r オプションを指定した場合、再配置可能オブジェクト ファ イルが結合され、1 つの再配置可能オブジェクトファイルが生成さ れます。「静的な実行可能ファイル」を参照してください。 動的モード (-dy、デフォルト) では、引数として指定した再配 置 可能オブジェクトファイルが結合され、実行可能オブジェクトファ イルが生成されます。このファイルは、実行時に、引数として指定 し た共有オブジェクトファイルにリンクされます。-G オプション を指定した場合、再配置可能オブジェクトファイルが結合され、共 有オブジェクトが生成されます。 ライブラリを引数として指定した場合、ld がそのライブラリを 検 索するのは、デフォルトでは、引数リスト内でそのライブラリに遭 遇したときに 1 度だけです。ライブラリとして指定できるの は、 共 有 オブジェクトまたは再配置可能アーカイブのどちらかです。 ar.h(3HEAD) を参照してください。 アーカイブライブラリの場合、ld は、未解決の外部参照を定義 す る ルーチンだけを読み込みます。ld は、アーカイブライブラリの シンボルテーブルを順番に検索して、ライブラリメンバーで外部参 照を解決しようとします。この検索は、アーカイブで外部参照を解 決できなくなるまで繰り返されます。したがって、1 つの外部シン ボルを複数のライブラリメンバーが定義する場合を除いて、ライブ ラリ内の順序は機能的には重要ではありません。相互に依存 す る アーカイブライブラリを使用する場合には、複数のコマンド行定義 を指定するか、-z rescan オプションを使用する必要がある場合が あります。 共有オブジェクトは不可分の完全なユニットで、1 つ以上の 入 力 ファイルをリンクすることによって生成されます。リンカーが共有 オブジェクトを処理すると、共有オブジェクトの内容すべてが、結 果の出力ファイルイメージの論理部分になります。共有オブジェク トが実際に取り込まれるのはプロセスの実行時であるため、リンク 処理中に物理的なコピー処理が行われることはありません。リンク 時の共有オブジェクトの論理的な取り込みによって、このオブジェ クト内に定義されているすべてのシンボルのエントリがリンク処理 可能になります。 64 ビットオブジェクトをリンクするためのオプションは 不 要 で す。リンカーは、コマンド行に最初に指定されている再配置可能オ ブジェクトファイルの ELF クラスによって、32 ビットまたは 64 ビッ トのどちらにリンクを実行するかを決定します。32 ビットオ ブジェクトと 62 ビットオブジェクトを混在させることはできませ ん。-64 オプションと LD_NOEXEC_64 の記述も参照してください。 [静的な実行可能ファイル] 多くのリリースにおいて、静的な実行可能ファイルを作成すること は 推奨されていませんでした。事実、64 ビットのシステムアーカ イブライブラリが提供されたことはありません。静的な実行 可 能 ファ イ ルはシステムアーカイブライブラリに対して構築されるた め、実行可能ファイルにはシステム実装の詳細が含まれます。この ため、次のような欠点があります。 o 共有オブジェクトとして配信されるシステムパッチが効き ま せ ん。したがって、数多くのシステム改善の恩恵を受けるに は、実行可能ファイルを再構築する必要があります。 o 将来のリリース上で動作する可能性が低下します。 o システム実装の詳細を複製することによって、システム性 能 に悪影響を与えます。 Solaris 10 では、32 ビットのシステムアーカイブライブラリは提 供されません。これらのライブラリ (特に、libc.a) がなくなるた め、特別なシステム知識がなければ、静的な実行可能ファイルは作 成できません。なお、リンクエディタの静的リンクオプションを処 理する機能とアーカイブライブラリを処理する機能に変更はありま せん。 【オプション】 次のオプションを指定できます。 -64 64 ビットオブジェクトを作成します。デフォルトでの生成 さ れるオブジェクトのクラスは、コマンド行から処理される最初 の ELF オブジェクトによって決まります。このオ プ ショ ン は、アーカイブライブラリまたは mapfile (-M の説明を参照) からの入力のみで ld を使用してオブジェクトを直接作成する 時に便利です。 -a 静的モード専用です。実行可能なオブジェクトファイルを生成 し、未定義の参照があるとエラーを発行します (静的モードの デフォルトの動作)。-r オプションと同時に使用することはで きません。「静的な実行可能ファイル」を参照してください。 -b 動的モード専用です。実行可能ファイルを作成する際、共有オ ブジェクト内のシンボルを参照するような特殊な再配置処理を 行いません。-b オプションを指定しない場合、リンカー は、 位置に依存しない特殊な再配置を作成し、これを使って共有オ ブジェクト内に定義されている関数を参照します。また、共有 オブジェクト内に定義されているデータオブジェクトが実行時 に実行可能ファイルのメモリーイメージにコピーされるように します。 このオプションは、特殊化された動的オブジェクトを対象とし ているため、一般的な用途に使用することはお勧めしません。 このオプションを使用すると、オブジェクトに共有性を持たせ るために必要なすべての特殊処理が無効になります。また、64 ビット実行可能オブジェクトの再配置を妨げることもあ り ま す。 -B direct 各シンボル参照と定義を提供している依存関係との関連を記録 することによって、直接結合の情報を確立します。実行時リン カーは、デフォルトのシンボル検索を行わずに、この情報を使 用して、関連付けられたオブジェクト中のシンボルを直接検索 します。直接結合の情報は、リンク時に指定された依存関係に 対 してのみ確立されるため、リンク時に -z defs オプション を使用する必要があります。直接結合中のシンボルよりも優先 さ せたいオブジェクトは、-z interpose オプションを使用し て指定する必要があります。-B direct オプションを使用する と、 すべての依存関係に対して -z lazyload が有効になりま す。 -B dynamic | static ライブラリの取り込みを制御するオプションです。-B dynamic は、 動的モードでのみ有効です。-B dynamic オプション、-B static オプションは、コマンド行のトグルとして何度でも 指 定できます。たとえば、-B static オプションを指定すると、 次に -B dynamic オプションが指定されるまで共有オブジェク ト は受け付けられなくなります。-l オプションも参照してく ださい。 -B eliminate バージョン定義に割り当てられていない大域シンボルを、シン ボ ルテーブルから削除します。このオプションでは、mapfile バージョン定義の一部として使用する auto-elimination 指令 と同じようなシンボル削除処理が行われます。 -B group 共有オブジェクトとその依存オブジェクトを 1 つのグルー プ に ま とめます。グループ内のオブジェクトは、実行時に、グ ループ内の他のメンバーに結合されます。このフラグを持つオ ブ ジェ ク ト の 実 行 時プロセスは、RTLD_GROUP モードで dlopen(3C) を使用してプロセスにオブジェクトを追加した 場 合 と 同じように動作します。あるグループに属しているオブ ジェクトに対して明示的な依存関係を持つオブジェクトは、自 分自身もそのグループのメンバーになります。 グループは自己完結している (依存関係がグループ内で解決さ れている) 必要があるため、-z defs オプションを追加して、 グループが自己完結していることを確認してください。 -B local バージョン定義に割り当てられていない大域シンボルの割り当 てを変更して、ローカルシンボルにします。バージョン定義と は、生成されたオブジェクト内で外部から参照可能なままにし ておく必要がある大域シンボルを指定するもので、mapfile に よって提供されます。このオプションでは、mapfile バージョ ン定義の一部として使用する auto-reduction 指令と同じよう なシンボルの割り当て変更処理を実行できます。この機能は、 バージョン化された再配置可能オブジェクトとバージョン化さ れていないオブジェクトを統合する場合に便利です。 -B reduce 再配置可能オブジェクトを生成する際、バージョン定義で指定 されているシンボル情報を縮約します。バージョン定義は、生 成されたオブジェクト内で外部から参照可能なままにしておく 必要がある大域シンボルを指定するもので、mapfile によって 提供されます。デフォルトでは、再配置オブジェクトが生成さ れ る と、バージョン定義は出力イメージに単純に転記されま す。シンボル情報の縮約は、動的実行可能ファイルまたは共有 オブジェクトの構築にオブジェクト自体が使用されるまで、実 際には行われません。動的実行可能ファイルや共有オブジェク ト を 生成する時には、自動的にこのオプションが適用されま す。 -B symbolic 動的モード専用です。共有オブジェクトを作成する際、可能で あれば、大域シンボルへの参照を共有オブジェクト内の参照定 義に結合します。通常、共有オブジェクト内の大域シンボルへ の参照は、定義が使用可能でも実行時まで結合されません。こ のため、実行可能オブジェクト内または他の共有オブジェクト 内に定義された同一のシンボルによって、オブジェクト自体の 定義が無効になる可能性があります。-z defs オプショ ン に よっ て無効にしない限り、ld はシンボルが未定義であること を知らせる警告を出力します。 このオプションは、特殊化された動的オブジェクトを対象とし ているため、一般的な用途に使用することはお勧めしません。 オブジェクトの実行時に再配置のオーバーヘッドを軽減するに は、バージョン定義を作成することをお勧めします。 -c name 実行時に使用する構成ファイル name を記録します。構成ファ イ ル は、デフォルト検索パスの変更に使用されます。また、 ディレクトリキャッシュや代替オブジェクトの依存関係を提供 します (crle(1) を参照)。 -C 診断メッセージに表示される C++ シンボル名を復号 化 し ま す。 -d y | n -d y が指定されている場合 (デフォルト)、ld は動的リン ク を使用します。-d n が指定されている場合、ld は静的リンク を使用します。「機能説明」の「Static Executables」と -B dynamic | static の項目を参照してください。 -D token,token,.. token に指定したデバッグ情報を標準エラーに出力し ま す。 help は、使用可能なトークンをすべて指定した場合と同じ意 味を持つ特殊なトークンです。 -e epsym 出力ファイルのエントリポイントのアドレスとして、シンボル epsym に設定します。 -f name 共有オブジェクトの作成時に使用するオプションです。このオ プションを指定すると、共有オブジェクトのシンボルテーブル が、name に指定した共有オブジェクトのシンボル テー ブ ル で、補助フィルタとして使用されるようになります。このオプ ションは複数回指定できますが、-F オプションと同時に指 定 することはできません。 -F name 共有オブジェクトの作成時に使用するオプションです。このオ プションを指定すると、共有オブジェクトのシンボルテーブル が、name に指定した共有オブジェクトのシンボル テー ブ ル で、フィルタとして使用されるようになります。このオプショ ンは複数回指定できますが、-f オプションと同時に指定す る ことはできません。 -G 動的モード専用です。共有オブジェクトを生成します。未定義 のシンボルも許容されます。 -h name 動的モード専用です。共有オブジェクトの作成時、name を オ ブジェクトの動的セクションに記録します。 ファイルシステムにおけるオブジェクトの名前ではなく、name がこのオブジェクトにリンクされた任意の動的オブジェクトに 記録されます。このため、実行時リンカーは、実行時に検索す る共有オブジェクト名として name を使用します。 -i LD_LIBRARY_PATH の設定を無視します。LD_LIBRARY_PATH の設 定がリンク処理の妨げになる場合は、このオプションを使用し て、実行時のライブラリ検索への影響を防ぎます。 -I name 実行可能オブジェクトの作成時、プログラムヘッダーに書き込 まれるインタプリタのパス名として name を使用します。静的 モードのデフォルトの設定では、インタプリタは使用されませ ん。 動 的 モー ドのデフォルトの設定では、実行時リンカー ld.so.1(1) が使用されます。どちらの場合も、-I name で デ フォルトの設定を無効にできます。exec(2) は、a.out を読み 込む際にこのインタプリタを読み込み、a.out ではなくインタ プリタに制御を渡します。 -l x ライブラリ libx.so (共有オブジェクトの慣例的な名前) また は libx.a (アーカイブライブラリの慣例的な名前) を検索し ます。動的モードでは、-B static オプションが有効になって いる場合を除けば、ライブラリ検索パスに指定された各ディレ クトリ内で、libx.so ファイルまたは libx.a ファイルが検索 されます。ディレクトリ検索は、どちらかのファイルが入って いるディレクトリを検出した時点で終了し ま す。 -lx が、 libx.so、 libx.a という形式の名前を持つ 2 つのファイルに 展開される場合、.so ファイルが選択され、libx.so が見つか らない場合は libx.a が選択されます。静的モードを使用して いる場合や -B static オプションが有効になってい る 場 合 は、.a ファイルだけが選択されます。ld は、ライブラリの名 前を検出した時点でライブラリの検索を実行するので、-l の 位置は重要な意味を持ちます。 -L path path をライブラリ検索ディレクトリに追加します。ld のライ ブラリ検索は、まず -L オプションで指定したディレクトリで 行われ、次に標準ディレクトリで行われます。このオプション は、同一コマンド行の -l オプションより前に指定した場合の み有効です。環境変数 LD_LIBRARY_PATH を使用してライブ ラ リ検索パスを追加することもできます (LD_LIBRARY_PATH を参 照)。 -m メモリーマップ (入出力セクションのリスト) と、致命的では ない多重定義シンボルを生成し、標準出力に出力します。 -M mapfile マップファイル mapfile を、ld への指令が記述されているテ キストファイルとして読み取ります。このオプションは複数回 指定できます。mapfile がディレクトリの場合、stat(2) で定 義されるように、そのディレクトリ内のすべての通常ファイル が処理対象になります。マップファイルの詳細につい て は、 『リンカーとライブラリ』を参照してください。mapfile の例 については、/usr/lib/ld を参照してください。 -N string このオプションを指定すると、作成されるオブ ジェ ク ト の .dynamic セクションに DT_NEEDED エントリが追加されます。 DT_NEEDED 文字列の値はコマンド行で指定した string です。 こ の オ プションは位置に依存します。このため、DT_NEEDED .dynamic エントリはリンク行にある他の動的な依存オブ ジェ クトに対して相対的になります。デバイスドライバの再配置可 能オブジェクト間の依存関係を指定するときに、このオプショ ン をオプション -dy および -r と組み合わせて使用すると便 利です。 -o outfile outfile という名前の出力オブジェクトファイルを生成 し ま す。デフォルトのオブジェクトファイル名は、a.out です。 -p auditlib 作成されたオブジェクトの実行時に監査に使用する監査ライブ ラリ auditlib を識別します。自分自身の監査を行うような共 有オブジェクトと依存関係にあるオブジェクトは、この共有オ ブ ジェ クトの性質を継承し、自分自身の監査を行います (-P オプションを参照)。 -P auditlib 作成されたオブジェクトの実行時に依存関係の監査に使用する 監査用ライブラリ auditlib を識別します。この監査は、この オブジェクトと依存関係にあり、監査を行う必要がある オ ブ ジェ クトから継承される場合もあります (-p オプションを参 照)。 -Q y | n -Q y を指定すると、出力ファイルの作成に使用され た リ ン カー のバージョンを識別する ident 文字列が、出力ファイル の .comment セクションに追加されます。このため、複数のリ ンク手順 (ld -r を使用した場合など) を経て作成されたファ イルには、複数の ld ident があることになります。この識別 は、cc コマンドのデフォルト時の動作と同じです。-Q n は、 バージョンの識別を抑止します。 -r 再配置可能オブジェクトファイルを結合して、1 つの再配置可 能 オブジェクトファイルを生成します。ld は、未解決の参照 があってもメッセージを出力しません。このオプションは、-a と同時には使用できません。 -R path 複数のディレクトリをコロンで区切って指定します。このリス トは、実行時リンカーにライブラリ検索ディレクトリを指定す る際に使用されます。NULL 以外の文字列は、出力オブジェ ク トファイルに記録され、実行時リンカーに渡されます。このオ プションを複数回指定する場合と、コロンで区切って path を 指定する場合の結果は同じになります。 -s 出力ファイルからシンボル情報を取り除きます。デバッグ情報 (.line、 .debug*、.stab の各セクション) と、これらに関連 する再配置エントリは、すべて削除されます。再配置可能ファ イルを除き、シンボルテーブル SHT_SYMTAB とそれに関連する 文字列テーブルのセクションは、出力オブジェクトファイルに 作成されません (-z redlocsym オプションを参照)。 -S supportlib リンカーによって共有オブジェクト supportlib が読み 込 ま れ、このオブジェクトにリンクのプロセスに関する情報が提供 されます。環境変数 SGS_SUPPORT を使用すると、サポート さ れている共有オブジェクトにも同じ情報が提供されます。詳細 については、『リンカーとライブラリ』を参照してください。 -t サイズの異なる多重定義シンボルを検出した場合の警告の出力 を抑止します。 -u symname symname を、未定義シンボルとしてシンボルテーブルに入力し ます。このオプションは、すべてのルーチンをアーカイブライ ブラリから読み込む場合に便利です。これは、最初のルーチン を読み込むために、未解決の参照が必要になるからです。コマ ンド行内でのこのオプションの位置は重要な意味を持ち、シン ボルを定義するライブラリより前に配置する必要があります。 -V 使用する ld のバージョン情報を示すメッセージを出力 し ま す。 -Y P,dirlist ライブラリ検索に使用するデフォルトのディレクトリを変更し ます。dirlist には、複数のパスをコロンで区切って指定しま す。 -z absexec 動的な実行可能オブジェクトを構築する場合にのみ効果を発揮 し ま す。このオプションは、外部の絶対的シンボルへの参照 を、実行時ではなく今すぐに解決するよう指示します。これに よっ て、 ある条件が整った場合には、動的オブジェクトがス ワップ領域を大量に消費する可能性のあるテキストの再配置を 行わなくなります。 -z allextract | defaultextract | weakextract 後続のすべてのアーカイブのオブジェクトの抽出条件を変更し ます。デフォルトでは、アーカイブメンバーは、未定義の参照 を解決し、データ定義による仮の定義を行うために抽出されま す。弱いシンボル参照は抽出を行いません。-z allextract を 指定すると、すべてのアーカイブメンバーがアーカイブから抽 出 されます。-z weakextract を指定すると、弱い参照によっ てアーカイブの抽出が行われます。-z defaultextract を指定 す る と、既に指定されている抽出オプションを無効にし、デ フォルトの状態に戻すことができます。 -z combreloc 複数の再配置セクションを結合します。通常、再配置セクショ ンは、再配置の対象となるセクションと 1 対 1 の対応で保持 されています。実行可能オブジェクトまたは共有オブジェクト を作成する際に ld は、データ再配置セクションのエントリを 各エントリのシンボル参照によってソートして、実行時のシン ボル参照を最低限に抑えます。複数のデータ再配置セクション を結合することで、このソート処理を最適化できるため、複数 の オ ブジェクトをメモリーに読み込むときの再配置オーバー ヘッドを最低限に抑えることができます。 -z defs | nodefs -z defs オプションは、リンク終了時に未定義のシンボルがあ ると、致命的エラーを強制的に出力します。これは、実行可能 オブジェクトを作成する場合のデフォルトの設定ですが、歴史 的経緯から、共有オブジェクトを作成する場合にはデフォルト ではありません。共有オブジェクト作成時に、そのオブジェク トが自己完結していること (シンボル参照がそのオブジェクト 内またはそのオブジェクトの依存関係の中で解決されているこ と) を確認できるため、-z defs オプションを使用することを お勧めします。 -z nodefs オプションは、未定義のシンボルを許可します。歴 史的経緯から、共有オブジェクトを作成する場合には、この動 作がデフォルトになっています。このオプションを実行 可 能 ファイルに対して指定した場合の、未定義のシンボルに対する 参照の動作は不定です。-z nodefs オプションを使用すること は、お勧めしません。 -z direct | nodirect コマンド行であとに続くすべての依存関係への直接結合を有効 または無効にします。このオプションにより、グローバルな複 製 -B direct よりも直接結合を効率よく制御できます。 -z endfiltee フィルタ処理の対象オブジェクトに印をつけます。フィルタに よる検索処理は、このオブジェクトを検出した時点で終了しま す。 -z finiarray=function 構築するオブジェクトの .finiarray セクションにエントリを 追 加 します。.finiarray セクションが存在しない場合は、1 つのセクションを新たに作成します。追加されたエント リ は function を指すように初期化されます。詳細については『リ ンカーとライブラリ』を参照してください。 -z groupperm | nogroupperm 一意のグループにつながる依存関係の割り当て、または割り当 ての解除を行います。グループに対して依存関係の割り当てを 行うと、-B group オプションを使って依存関係を構築した 場 合と同じ効果が得られます。 -z ignore | record リンク処理の一部として参照されない動的依存関係を無視また は記録します。リンク処理の一部として読み込まれたが参照さ れない再配置オブジェクトの ELF セクションを無視または 記 録します。デフォルトでは -z record が有効です。 ELF セクションを無視すると、このセクションは生成される出 力 ファ イルから削除されます。あるセクションを無視するに は、次の 3 つの条件が真である必要があります。つまり、 そ のセクションが割り当て可能なセグメントで使用されているこ と、そのセクションがグローバルシンボルを提供していないこ と、そして、リンク処理で使用するオブジェクトのセクション がそのセクションを参照していないことです。 -z initarray=function 構築するオブジェクトの .initarray セクションにエントリを 追 加 します。.initarray セクションが存在しない場合は、1 つのセクションを新たに作成します。追加されたエント リ は function を指すように初期化されます。詳細については『リ ンカーとライブラリ』を参照してください。 -z initfirst オブジェクトの実行時初期設定が完了してから、他のオブジェ クトの実行時初期設定を同時処理します。また、同時プロセス から除去された他のすべてのオブジェクトの実行時最終設定が 完了してから、オブジェクトの実行時最終設定が行われるよう にします。このオプションは共有オブジェクトの作成時にのみ 有用です。 -z interpose 直接結合よりも優先して検索するオブジェクトを指定します。 直 接結合が有効な時 (-B direct の説明を参照してください )、実行時リンカーは、直接結合に関連付けられてい る オ ブ ジェクトよりも先に、このオブジェクト中のシンボルを検索し ます。-B direct を参照してください。 -z lazyload | nolazyload 遅延して読み込まれる動的な依存オブジェクトの指定を有効ま た は 無 効にします。lazyload と指定された動的な依存オブ ジェクトは、初期プロセスの起動では読み込まれません。オブ ジェクトの読み込みは、はじめてこのオブジェクトへの結合が 行われたときに行われます。注: 遅延読み込みには、プロセス 内で使用する動的なオブジェクトごとに、正しい依存宣言と関 連する runpath が必要です。詳細は、『リンカーとライブ ラ リ』を参照してください。 -z ld32=arg1,arg2,... -z ld64=arg1,arg2,... リンカーのクラスは、作成される出力ファイルのクラスおよび リンカーが実行されているオペレーティングシステムの機能に よって変わります。このオプションを使用すると、指定した引 数 が、 32 ビットリンカーのクラスとしてのみ、または、64 ビットリンカーのクラスとしてのみ解釈されます。 たとえば、サポートするライブラリがクラスに固有のものであ る場合に、そのライブラリに正しいクラスを指定するには、次 のようにします。 ld ... -z ld32=-Saudit32.so.1 -z ld64=-Saudit64.so.1 ... 注: 起動されたリンカーのクラスは、コマンド行に入力ファイ ル として最初に指定されている再配置可能ファイルの ELF ク ラスによって、特定されます。これは、-z ld[32|64] によ る 処理の前に行われます。 -z loadfltr フィルタ対象が実行時ただちに処理されることを要求するよう に、フィルタに指定します。通常、フィルタ処理は、シンボル 参照がフィルタに結合されたときにはじめて行われます。この フ ラ グ を 持つオブジェクトの実行時プロセスは、環境変数 LD_LOADFLTR が設定されている場合と同じように動作します。 ld.so.1(1) を参照してください。 -z muldefs 複数のシンボル定義を許容します。デフォルトでは、再配置可 能オブジェクト間で重複したシンボル定義が発生すると、致命 的なエラーになります。ところが、このオプションを指定する と、エラーにはならずに、最初の定義が有効な定義として使用 されます。 -z nodefaultlib オブジェクトが、実行時デフォルトライブ ラ リ 検 索 パ ス (LD_LIBRARY_PATH や実行パス runpath の後に使用) を無視す るように指定します。このように指定すると、すべての依存オ ブジェクトが実行パス runpath を使用することになります。 -z nodelete 実行時に削除できないように、オブジェクトに指定します。こ の フ ラ グ を 持 つ オ ブ ジェ クトの実行時プロセスは、 RTLD_NODELETE モードで dlopen(3C) を使用して、オブジェク トをプロセスに追加する場合と同じように動作します。 -z nodlopen オブジェクトを、dlopen(3C) では利用できないように指定 す る か、dlopen() によって指定されたオブジェクトとして指定 します。または dlopen() によって指定されたオブジェクトに 必 要 な依存オブジェクトとして指定します。このオプション は、共有オブジェクトを作成している場合にのみ有用です。 -z nodump オブジェクトを、dldump(3C) では利用できないように指定 し ます。 -z nopartial 部分的に初期化されたシンボルが、再配置可能な入力オブジェ クトファイル内に定義されている場合、このシンボルは、生成 される出力ファイルで展開されます。 -z noversion どのバージョンのセクションも記録しません。バージョンセク ショ ン や関連する .dynamic セクションエントリは、出力イ メージ内に生成されません。 -z now オブジェクトが遅延のない実行時結合を要求するように指定し ま す。 こ れ は、 dlopen(3C) を 使用してオブジェクトを RTLD_NOW モードでプロセスに 追 加 し た り、 環 境 変 数 LD_BIND_NOW を設定したりすることに似ています。ld.so.1(1) を参照してください。 -z origin 実行時ただちに $ORIGIN を処理することを要求するよう に、 オ ブ ジェクトに指定します。この動作は現在はデフォルトで す。このオプションは、従来機能との互換性のためにのみ残さ れています。 -z preinitarray=function 構築するオブジェクトの .preinitarray セクションにエン ト リを追加します。.preinitarray セクションが存在しない場合 は、1 つのセクションを新たに作成します。追加されたエント リは function を指すように初期化されます。詳細については 『リンカーとライブラリ』を参照してください。 -z redlocsym SHT_SYMTAB シンボルテーブルから、SECT シンボル以外のすべ てのローカルシンボルを削除します。ローカルシンボルを参照 する配置はすべて更新され、SECT シンボルを参照するよう に なります。 -z rescan リンカーに渡されたアーカイブファイルを再走査しま す。 デ フォルトでは、アーカイブの検索は、コマンド行に指定された ときに一度だけ処理されます。通常アーカイブは、そのシンボ ル定義でアーカイブの前に指定されている参照を解決できるよ うに、コマンド行の最後に指定します。しかし実際には、アー カイブ間での相互依存関係を解決するために、アーカイブ自体 を複数回指定しなければならないことがあります。 -z rescan オプションを指定すると、アーカイブリスト全体を 再度処理して、シンボル参照を解決するアーカイブメンバーが あるかどうかを調べます。このアーカイブ再走査は、渡された アーカイブリストに新しいメンバーが検出されなくなるまで続 けられます。 -z text 動的モード専用です。書き込み不可の割り当て可能セクション に 対 する再配置があると、強制的に致命的エラーを出力しま す。歴史的理由から、この動作は、実行可能オブジェクトまた は共有オブジェクトを作成するときのデフォルトではありませ ん。しかし作成される動的オブジェクトのテキスト部分を実行 中の複数のプロセス間で共有可能にするため、このオプション を使用することをお勧めします。オブジェクトをメモリーに読 み込むときの再配置オーバーヘッドが最低限に抑えられること を共有テキストセグメントは保証します。 -z textoff 動的モード専用です。書き込み不可の割り当て可能セクション をはじめとするすべての割り当て可能セクションに対して、再 配置を許可します。共有オブジェクト作成時のデフォルトの設 定です。 -z textwarn 動的モード専用です。書き込み不可の割り当て可能セクション に 対 する再配置があると、警告を出力します。実行可能オブ ジェクト作成時のデフォルトの設定です。 -z verbose このオプションはリンクエディット時、警告診断を追加 し ま す。現在このオプションは置換再配置について疑いのある使用 方法を見つけて報告します。将来このオプションは、デフォル トで生成される詳細な診断を提供するように拡張される予定で す。 【環境】 LD_LIBRARY_PATH -l オプションで指定されたライブラ リ を検索するディレクトリのリストを指定 します。複数のディレクトリを指定する 場合は、ディレクトリとディレクトリの 間をコロンで区切ります。次のように、 2 つのディレクトリをセミコロンで区切 る方式が最も一般的です。 dirlist1;dirlist2 以下のように ld の呼び出し時に -L が 複数回指定されている場合、 ld ... -Lpath1 ... -Lpathn ... 検索の順番は、次のようになります。 dirlist1 path1 ... pathn dirlist2 LIBPATH ディレクトリリストにセミコロンが含ま れ ていない場合、dirlist2 と解釈され ます。 LD_LIBRARY_PATH 環境変数も、動的な依 存関係を検索する実行時リンカーに影響 を及ぼします。 この環境変数には、_32 または _64 と いう接尾辞を指定できます。この接尾辞 を追加することで、LD_LIBRARY_PATH 環 境 変 数は 32 ビットのプロセスまたは 64 ビットのプロセス専用になり、接 尾 辞のない LD_LIBRARY_PATH環境変数が有 効な場合でも、優先的に使用されます。 LD_NOEXEC_64 64 ビットのリンカーが自動的には実 行 さ れ ないようにします。デフォルトで は、最初に読み取った再配置可能ファイ ル の ELF クラスが 64 ビットオブジェ クトである場合は、自動的に 64 ビット 版 のリンカーが起動されます。32 ビッ ト版のリンカーが作成できる 64 ビット イメージにはいくつかの制限があります が、リンク編集の中には、32 ビット の リンカーを使用した方が速いものも存在 します。 LD_OPTIONS ld のデフォルトのオプションセット で す。 LD_OPTIONS の値は、コマンド行で ld の起動コマンドの直後に指定され た ものと解釈されます。つまり、次のよう に指定した場合と同じ結果になります。 ld $LD_OPTIONS ... other-arguments ... LD_RUN_PATH リンカーに実行パスを指定する代替手段 で す ( -R オ プ ショ ンを参照)。 LD_RUN_PATH と -R オプションを両方指 定 すると、-R オプションが優先されま す。 SGS_SUPPORT リンカーによって読み込まれ、リンクプ ロセスの情報を与えられた共有オブジェ クトを、コロンで区切った形式で一覧し ます。この環境変数には、接尾辞として _32 または _64 を指定できます。こ う することで、この環境変数を、ld の 32 ビットクラスまたは 64 ビットクラスの どちらか専用にすることができます。こ の指定は、現在有効になっている接尾辞 の付いていない環境変数の指定より優先 されます。-S オプションも参照して く ださい。 文字列 LD_ で始まる環境変数名は、ld と ld.so.1(1) の拡張用と して予約されています。 【ファイル】 libx.so 共有オブジェクトライブラリ libx.a アーカイブライブラリ a.out デフォルトの出力ファイル LIBPATH 32 ビットのライブラリの場合、デフォルトの検索パスは、 順 番 に、/usr/ccs/lib、/lib、そして /usr/lib です。64 ビッ トのライブラリの場合、デフォルトの検索パスは、順 番 に、 /lib/64、そして /usr/lib/64 です。 /usr/lib/ld/map.bssalign bss 整列用のテンプレートを提供するマップファイル /usr/lib/ld/map.default 32 ビットプログラムのデフォルトの配置を指定す る マッ プ ファイル /usr/lib/ld/map.noexstk 実行不可能なスタックの定義を指定するマップファイル /usr/lib/ld/sparcv9/map.default 64 ビット SPARC V9 プログラムのデフォルトの配置を指定 す るマップファイル /usr/lib/ld/sparcv9/map.above4G 4G バイト以上の 64 ビット SPARC V9 プログラムの望まし い 配置を指定するマップファイル /usr/lib/ld/sparcv9/map.below4G 4G バイト以下の 64 ビット SPARC V9 プログラムの望まし い 配置を指定するマップファイル 【属性】 次の属性については attributes(5) のマニュアルページを参照 し てください。 ____________________________________________________________ | 属性タイプ | 属性値 | |_____________________________|_____________________________| | 使用条件 | SUNWtoo | |_____________________________|_____________________________| 【関連項目】 as(1), crle(1), gprof(1), ld.so.1(1), pvs(1), exec(2), stat(2), dlopen(3C), dldump(3C), elf(3ELF), ar.h(3HEAD), a.out(4), attributes(5) リンカーとライブラリ 【注意事項】 ld のデフォルト動作を指定するためのオプションは、歴史的理 由 から残されています。しかし、動的オブジェクトが広く使用されて いる現在のプログラミング環境では、従来とは異なるデフォルトの 方が有効である場合が少なくありません。しかし、従来のデフォル トは、既存のプログラム開発環境との互換性を維持するために残し ておく必要があります。このマニュアルでは従来のデフォルトは、 可能な限り、そのことを明示する方法で記述します。現在推奨され ているオプションについては、『リンカーとライブラリ』の「リン カーのクイックリファレンス」を参照してください。 ld により作成されるファイルがすでに存在する場合、そのファ イ ル は、 すべての入力ファイルが処理された後に破棄され、新しい ファイルに置き換えられます。サイズの大きな出力ファイルが複数 存 在 すると、システムのリソースを消費してしまうことが多いた め、ld は、リンク編集中に一時ファイルを作成しませ ん。 し か し、既存のファイルが実行中のプロセスで使用されている場合は、 問題が発生します。既存のファイルを使用していたプロセスは、出 力ファイルのイメージが作成された時点で終了させられてしまうこ とがあります。この問題を回避するには、リンク編集を実行する前 に、 出 力ファイルを削除してください。出力ファイルを削除して も、実行中のプロセスに影響はありません。これは、新しい 出 力 ファイルを作成するために解放されるのは、実際のディスク領域で はなく、ファイルシステムのネームスペースであるためです。削除 されたファイルのディスク領域は、そのファイルを参照している最 後のプロセスが終了した時点で解放されます。 |
|