| Current File : //usr/share/man/ja_JP.UTF-8/man1/ld.so.1.1 |
'\" te
.\" Copyright (c) 1998, 2014, Oracle and/or its affiliates.All rights reserved.
.TH ld.so.1 1 "2014 年 4 月 23 日" "SunOS 5.11" "ユーザーコマンド"
.SH 名前
ld.so.1 \- 動的オブジェクト用の実行時リンカー
.SH 形式
.LP
.nf
\fB/lib/ld.so.1\fR
.fi
.LP
.nf
\fB/lib/ld.so.1\fR [\fB-e\fR \fIenvar\fR] \fIdynamic-object\fR [\fIobject args\fR]...
.fi
.SH 機能説明
.sp
.LP
動的アプリケーションは、1 つ以上の動的オブジェクトで構成されています。動的アプリケーションとは、通常、1 つの動的実行可能ファイルと 1 つ以上の共有オブジェクト依存関係のことです。動的アプリケーションの初期化と実行の一部として、「インタプリタ」が呼び出されます。\fB\fRこのインタプリタは、アプリケーションをその共有オブジェクト依存関係に結合する作業を完了させます。Solaris では、このインタプリタを実行時リンカーと呼びます。
.sp
.LP
動的実行可能ファイルのリンク編集中は、特別な \fB\&.interp\fR セクションが、関連のプログラムヘッダーとともに作成されます。このセクションには、プログラムのインタプリタを指定するパス名が組み込まれています。インタプリタのパス名は、\fB-I\fR オプションを \fBld\fR(1) (リンカー) に使用して実行可能ファイルが作成される場合に指定できます。リンカーによって提供されるデフォルトの名前は、実行時リンカーの名前 \fBld.so.1\fR です。
.sp
.LP
動的実行可能ファイルの実行プロセスの間は、カーネルがファイルをマッピングし、必要なインタプリタを見つけ出します。\fBexec\fR(2) および \fBmmapobj\fR(2) を参照してください。カーネルはこのインタプリタ内でマッピングを行い、このインタプリタに制御を渡します。十分が情報がインタプリタに渡されるため、インタプリタは引き続きアプリケーションを結合および実行できます。
.sp
.LP
アプリケーションの初期化に加え、実行時リンカーは、アプリケーションが自分のアドレス空間を拡張できるサービスを使用できるようにするサービスも提供します。追加の共有オブジェクトがマッピングされ、共有オブジェクト内のシンボルが結合できるようになります。
.sp
.LP
実行時リンカーは次の関数を実行します。
.RS +4
.TP
.ie t \(bu
.el o
構成ファイルが存在する場合は、そのファイルが処理されます。構成ファイルは、デフォルト検索パスの変更に使用されます。また、ディレクトリキャッシュや代替オブジェクトの依存関係を提供します。\fBcrle\fR(1) を参照してください。デフォルトでは、32 ビットオブジェクトの場合には、構成ファイル \fB/var/ld/ld.config\fR が使用されます。64 ビットオブジェクトの場合には、デフォルトの構成ファイル \fB/var/ld/64/ld.config\fR が使用されます。代替の構成ファイルは、\fBLD_CONFIG\fR 環境変数で指定できます。また、代替の構成ファイルは、\fBld\fR(1) の \fB-c\fR オプションを使用すると、動的実行可能ファイル内にもエンコードできます。
.RE
.RS +4
.TP
.ie t \(bu
.el o
実行時リンカーは、アプリケーションの動的な情報セクション \fB\&.dynamic\fR を分析し、どの共有オブジェクト依存関係が必要になるかを判断します。
.RE
.RS +4
.TP
.ie t \(bu
.el o
次に、実行時リンカーはこれらの依存関係を検索し、マッピングします。その後、各依存関係の動的な情報セクションを分析し、さらに依存関係が必要かどうかを判断します。
.RE
.RS +4
.TP
.ie t \(bu
.el o
共有オブジェクトの依存関係がすべて読み込まれると、実行時リンカーは必要な再配置をすべて行います。これらの再配置により、実行プロセスに備えて共有オブジェクトが結合されます。
.RE
.RS +4
.TP
.ie t \(bu
.el o
共有オブジェクトの依存関係 (場合によっては、動的実行可能ファイル) によって提供された初期化関数がすべて呼び出されます。関数は、位相的にソートされた依存関係とは逆の順序で呼び出されます。循環型依存関係が存在すると、初期化関数は循環が排除されたソート順序で呼び出されます。\fBldd\fR(1) を使用すると、共有オブジェクトの依存関係の初期化順序を表示できます。
.RE
.RS +4
.TP
.ie t \(bu
.el o
アプリケーションに制御が引き渡されます。
.RE
.RS +4
.TP
.ie t \(bu
.el o
アプリケーションの実行中は、実行時リンカーを呼び出すことで、遅延関数結合を実行できます。
.RE
.RS +4
.TP
.ie t \(bu
.el o
共有オブジェクトがプロセスから削除されると、終了関数が呼び出されます。デフォルトでは、これらの関数は、位相的にソートされた依存関係の順序で呼び出されます。
.RE
.RS +4
.TP
.ie t \(bu
.el o
アプリケーションは、実行時リンカーのサービスを呼び出し、\fBdlopen\fR(3C) を使用して追加の共有オブジェクトを取得することもできます。これらのオブジェクトによって提供されるシンボルは、\fBdlsym\fR(3C) を使用して結合できます。
.RE
.sp
.LP
これらの各トピックの詳細については、\fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.sp
.LP
実行時リンカーは、指定した検索パスを使って、オブジェクトの動的な依存関係を検索します。デフォルトの検索パスは、オブジェクト内に記録された runpath と、それに続く一連のデフォルトのパスです。32 ビットオブジェクトの場合、デフォルトは、順番に、\fB/lib\fR、そして \fB/usr/lib\fR です。64 ビットオブジェクトの場合、デフォルトは、順番に \fB/lib/64\fR、そして \fB/usr/lib/64\fR です。これらのデフォルトのコンポーネントは、\fBcrle\fR(1) で作成された構成ファイルを使用して変更できます。runpath は、\fB-R\fR オプションを \fBld\fR(1) に使用して動的オブジェクトを作成する場合に指定されます。環境変数 \fBLD_LIBRARY_PATH\fR は、デフォルトのディレクトリの前に検索されるディレクトリを指定するために使用できます。
.sp
.LP
\fI「Directories Searched by the Runtime Linker」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.SS "コマンド行の使用法"
.sp
.LP
通常、実行時リンカーは、実行時リンカーをインタプリタとして宣言した動的実行可能ファイルを実行することで間接的に呼び出されます。また、実行時リンカーはコマンド行から直接実行できます。このメカニズムは、実行時リンカーの新規実装を試す場合によく使用されます。コマンド行で指定された引数は、実行時リンカーに適用可能なオプションで構成されます。これらのオプションのあとには、実行する動的オブジェクトの名前とそのオブジェクトで必要なオプションが続きます。事実上、実行時リンカーは、動的オブジェクトによって指定されたすべてのインタプリタを置き換えます。
.sp
.LP
次のオプションがサポートされています。
.sp
.ne 2
.mk
.na
\fB\fB-e\fR \fIenvar\fR\fR
.ad
.RS 12n
.rt
実行時リンカー固有の環境変数を指定します。\fB環境変数\fRを参照してください。このオプションを使用する変数セットは、すべての環境変数、または同名の構成ファイル変数よりも優先されます。変数 \fBLD_NOENVIRON\fR は、\fB-e\fR オプションの処理後に処理すべき環境変数がないことを示すために指定できます。
.RE
.SH 環境
.sp
.LP
実行時リンカーでは、次の環境変数が認識されます。リンカーでは、\fBLD_\fR という接頭辞の付いた環境変数も使用できます。\fBld\fR(1) を参照してください。
.sp
.LP
各環境変数には、\fB_32\fR または \fB_64\fR という接尾辞を指定できます。この接尾辞は、環境変数をそれぞれ 32 ビットまたは 64 ビットプロセス固有のものにします。この環境変数は、接尾辞の付いてない環境変数が有効な場合でも、それに優先します。値なしに指定された環境変数で、\fB_32\fR または \fB_64\fR の接尾辞が付いている場合は、事実上、関連する汎用の環境変数設定が取り消されます。
.sp
.ne 2
.mk
.na
\fB\fBLD_AUDIT\fR、\fBLD_AUDIT_32\fR、および \fBLD_AUDIT_64\fR\fR
.ad
.sp .6
.RS 4n
コロンで区切られたオブジェクトの一覧が実行時リンカーによって読み込まれます。各オブジェクトがロードされると、そのオブジェクトは \fILink-Auditing\fR インタフェースルーチンがないかどうか検査されます。
.sp
詳細は、\fI「Runtime Linker Auditing Interface」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。\fBld\fR(1) の \fB-p\fR および \fB-P\fR オプションも参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_BIND_LAZY\fR、\fBLD_BIND_LAZY_32\fR、および \fBLD_BIND_LAZY_64\fR\fR
.ad
.sp .6
.RS 4n
実行時リンカーがレイジー結合を実行するデフォルトのモードは、環境変数 \fBLD_BIND_LAZY\fR を NULL 以外の任意の値に指定することで、強制的に設定できます。この設定により、実行時リンカーは、プロセスに読み込まれたすべてのオブジェクトに対して\fBレイジー\fR参照再配置のみを実行します。個々のオブジェクトは、オブジェクトの読み込み時に\fBレイジー\fR参照再配置を実行するように要求できます。\fBld\fR(1) の \fB-z\fR \fBnow\fR オプションおよび \fBRTLD_NOW\fR モードの \fBdlopen\fR(3C) を参照してください。\fBLD_BIND_LAZY\fR が有効になっている場合、\fBレイジー\fR参照再配置の実行要求は抑制されます。
.sp
\fBLD_BIND_LAZY\fR と \fBLD_BIND_NOW\fR が両方とも指定されている場合は、\fBLD_BIND_NOW\fR が優先されます。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_BIND_NOW\fR、\fBLD_BIND_NOW_32\fR、および \fBLD_BIND_NOW_64\fR\fR
.ad
.sp .6
.RS 4n
実行時リンカーがレイジー結合を実行するデフォルトのモードは、環境変数 \fBLD_BIND_NOW\fR を NULL 以外の任意の値に指定することで、強制的に設定できます。この設定により、実行時リンカーは、プロセスに読み込まれたすべての遅延のないオブジェクトに対して\fB即時\fR参照と\fBレイジー\fR参照の両方の再配置を実行します。個々のオブジェクトは、オブジェクトの読み込み時に遅延のない\fBレイジー\fR参照再配置を実行するように要求できます。\fBld\fR(1) の \fB-z\fR \fBnow\fR オプションおよび \fBRTLD_NOW\fR モードの \fBdlopen\fR(3C) を参照してください。遅延依存関係は、\fBLD_BIND_NOW\fR および \fBRTLD_NOW\fR の影響を受けません。\fBld\fR(1) の \fB-z\fR \fBdeferred\fR オプションを参照してください。
.sp
\fBLD_BIND_NOW\fR と \fBLD_BIND_LAZY\fR が両方とも指定されている場合は、\fBLD_BIND_NOW\fR が優先されます。
.sp
詳細は、\fI「When Relocations Are Performed」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_CAP_FILES\fR、\fBLD_CAP_FILES_32\fR、および \fBLD_CAP_FILES_64\fR\fR
.ad
.sp .6
.RS 4n
すべての代替機能に対して検証すべきコンマ区切りのファイル一覧を識別します。\fBLD_PLATCAP\fR、\fBLD_MACHCAP\fR、\fBLD_HWCAP\fR、および \fBLD_SFCAP\fR。
.sp
詳細は、\fI「Exercising a Capability Family」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_CONFIG\fR、\fBLD_CONFIG_32\fR、および \fBLD_CONFIG_64\fR\fR
.ad
.sp .6
.RS 4n
代替構成ファイルを提供します。構成ファイルは、デフォルト検索パスの変更に使用されます。また、ディレクトリキャッシュや代替オブジェクトの依存関係を提供します。\fBcrle\fR(1) を参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_DEBUG\fR、\fBLD_DEBUG_32\fR、および \fBLD_DEBUG_64\fR\fR
.ad
.sp .6
.RS 4n
コンマまたはコロン区切りのトークン一覧を提供し、実行時リンカーがデバッグ情報を標準エラーに出力するようにします。\fBhelp\fR は、使用可能なトークンをすべて指定した場合と同じ意味を持つ特殊なトークンです。環境変数 \fBLD_DEBUG_OUTPUT\fR は、デバッグ情報の送信先となるファイルを指定するためにも与えられます。ファイル名の末尾には、デバッグ情報を生成するアプリケーションのプロセス \fBID\fR が付けられます。\fBlari\fR(1) を参照してください。
.sp
詳細は、\fI「Runtime Linker Debugging Facility」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_DEMANGLE\fR、\fBLD_DEMANGLE_32\fR、および \fBLD_DEMANGLE_64\fR\fR
.ad
.sp .6
.RS 4n
診断メッセージの一部として使用されるシンボル名はすべて、\fBELF\fR ファイル内で定義されたとおりに表示されます。\fBLD_DEMANGLE\fR が NULL 以外の値に設定された場合、実行時リンカーはすべての C++ シンボル名をデコード (復号化) しようとします。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_FLAGS\fR、\fBLD_FLAGS_32\fR、および \fBLD_FLAGS_64\fR\fR
.ad
.sp .6
.RS 4n
環境変数情報を与える代替手段を提供します。\fBLD_\fR\fIXXX\fR 環境変数はすべて、\fIxxx\fR トークンとして指定できます。トークンが複数ある場合は、コンマで区切って指定できます。「使用例」を参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_HWCAP\fR、\fBLD_HWCAP_32\fR、および \fBLD_HWCAP_64\fR\fR
.ad
.sp .6
.RS 4n
代替ハードウェア機能の値を識別します。
.sp
.in +2
.nf
LD_HWCAP=[+-]{\fItoken\fR | [\fIindex\fR]\fInumber\fR},....
.fi
.in -2
.sp
接頭辞 "+" を付けると、その機能が代替機能に追加されます。接頭辞 "-" を付けると、その機能が代替機能から削除されます。"+-" がない場合は、その機能が代替機能を置き換えます。
.sp
\fBCA_SUNW_HW_1\fR や \fBCA_SUNW_HW_2\fR など、異なるマスクに対する数値を設定するには、角括弧で囲まれたインデックスを数値の前に指定します。たとえば、\fBLD_HWCAP=[2]0x80\fR は \fBCA_SUNW_HW_2\fR を値 \fB0x80\fR に設定します。インデックスを指定しなかった場合は、1 とみなされます。無効なインデックスは無視されます。
.sp
詳細は、\fI「Identifying Capability Requirements」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_LIBRARY_PATH\fR、\fBLD_LIBRARY_PATH_32\fR、および \fBLD_LIBRARY_PATH_64\fR\fR
.ad
.sp .6
.RS 4n
\fBLD_LIBRARY_PATH\fR 環境変数が設定されている場合、この変数は、実行時リンカーが動的依存関係を探すために使用する検索パスの拡張に使用されます。\fBLD_LIBRARY_PATH\fR は、デフォルトのディレクトリの前に検索されるディレクトリのコンマ区切りの一覧を指定します。\fBLD_LIBRARY_PATH\fR は、\fBld\fR(1) にセマンティクスを追加します。
.sp
詳細は、\fI「Directories Searched by the Runtime Linker」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_LOADFLTR\fR、\fBLD_LOADFLTR_32\fR、および \fBLD_LOADFLTR_64\fR\fR
.ad
.sp .6
.RS 4n
フィルタは共有オブジェクト形式です。フィルタは、実行時に代替の共有オブジェクトを選択できるようにして、フィルタ内で定義されるシンボルに実装を提供します。\fBld\fR(1) の \fB-f\fR および \fB-F\fR オプションを参照してください。デフォルトでは、フィルタに対してシンボル解決が発生するまで代替共有オブジェクト処理は延期されます。\fBLD_LOADFLTR\fR が NULL 以外の値に設定されている場合、どのフィルタ対象も、フィルタがロードされるとただちに処理されます。\fBld\fR(1) の \fB-z\fR \fBloadfltr\fR オプションも参照してください。
.sp
詳細は、\fI「Shared Objects as Filters」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_MACHCAP\fR、\fBLD_MACHCAP_32\fR、および \fBLD_MACHCAP_64\fR\fR
.ad
.sp .6
.RS 4n
代替マシンハードウェアの名前を識別します。
.sp
詳細は、\fI「Identifying Capability Requirements」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_NOAUDIT\fR、\fBLD_NOAUDIT_32\fR、および \fBLD_NOAUDIT_64\fR\fR
.ad
.sp .6
.RS 4n
ローカル監査ライブラリは、アプリケーションと共有オブジェクト内で定義できます。\fBld\fR(1) の \fB-p\fR および \fB-P\fR オプションを参照してください。\fBLD_NOAUDIT\fR が NULL 以外の値に設定されている場合、実行時リンカーはローカルの監査ライブラリをすべて無視します。
.sp
詳細は、\fI「Generating Auxiliary Filters」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_NOAUXFLTR\fR、\fBLD_NOAUXFLTR_32\fR、および \fBLD_NOAUXFLTR_64\fR\fR
.ad
.sp .6
.RS 4n
補助フィルタは共有オブジェクト形式です。補助フィルタは、実行時に代替の共有オブジェクトを選択できるようにして、フィルタ内で定義されるシンボルに実装を提供します。\fBld\fR(1) の \fB-f\fR オプションを参照してください。\fBLD_NOAUXFLTR\fR が NULL 以外の値が設定されている場合、実行時リンカーはこの代替共有オブジェクトの検索を無効にします。
.sp
詳細は、\fI「Shared Objects as Filters」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_NOCONFIG\fR、\fBLD_NOCONFIG_32\fR、および \fBLD_NOCONFIG_64\fR\fR
.ad
.sp .6
.RS 4n
デフォルトでは、実行時リンカーは構成ファイルを開いて処理しようとします。\fBLD_NOCONFIG\fR が NULL 以外の値に設定されている場合、実行時リンカーはこの構成ファイル処理を無効にします。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_NODIRCONFIG\fR、\fBLD_NODIRCONFIG_32\fR、および \fBLD_NODIRCONFIG_64\fR\fR
.ad
.sp .6
.RS 4n
構成ファイル内で提供されるすべてのディレクトリキャッシュ情報は無視されるため、\fBLD_NOCONFIG\fR のサブセットを提供します。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_NODIRECT\fR、\fBLD_NODIRECT_32\fR、および \fBLD_NODIRECT_64\fR\fR
.ad
.sp .6
.RS 4n
直接結合情報は、実行時リンカーに関連オブジェクト内のシンボルを直接検索するように指示します。\fBld\fR(1) の \fB-B\fR \fBdirect\fR オプションを参照してください。直接結合がない場合、実行時リンカーによって実行されるシンボル検索はデフォルトのモデルに従います。\fBLD_NODIRECT\fR が NULL 以外の値に設定されている場合、実行時リンカーは直接結合情報をすべて無視します。
.sp
詳細は、Chapter 6, \fI「Direct Bindings,」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_NOENVCONFIG\fR、\fBLD_NOENVCONFIG_32\fR、および \fBLD_NOENVCONFIG_64\fR\fR
.ad
.sp .6
.RS 4n
構成ファイル内で提供されるすべての環境変数は無視されるため、\fBLD_NOCONFIG\fR のサブセットを提供します。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_NOLAZYLOAD\fR、\fBLD_NOLAZYLOAD_32\fR、および \fBLD_NOLAZYLOAD_64\fR\fR
.ad
.sp .6
.RS 4n
レイジー読み込みとラベル付けされている依存関係は、その依存関係への明示的な参照が作成されるまでメモリーに読み込まれません。\fBld\fR(1) の \fB-z\fR \fBlazyload\fR オプションを参照してください。\fBLD_NOLAZYLOAD\fR が NULL 以外の値に設定されている場合、実行時リンカーは依存関係のレイジー読み込みのラベルを無視し、その依存関係をただちに読み込みます。
.sp
詳細は、\fI「Lazy Loading of Dynamic Dependencies」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_NOOBJALTER\fR、\fBLD_NOOBJALTER_32\fR、および \fBLD_NOOBJALTER_64\fR\fR
.ad
.sp .6
.RS 4n
構成ファイル内で提供されるすべての代替オブジェクト依存関係は無視されるため、\fB LD_NOCONFIG\fR のサブセットを提供します。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_NOVERSION\fR、\fBLD_NOVERSION_32\fR、および \fBLD_NOVERSION_64\fR\fR
.ad
.sp .6
.RS 4n
デフォルトでは、実行時リンカーは、プライマリ実行可能ファイルおよびそのすべての依存関係についてバージョンの依存関係を検証します。\fBLD_NOVERSION\fR が NULL 以外の値が設定されている場合、実行時リンカーはこのバージョンチェックを無効にします。
.sp
詳細は、\fI「Internal Versioning」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_ORIGIN\fR、\fBLD_ORIGIN_32\fR、および \fBLD_ORIGIN_64\fR\fR
.ad
.sp .6
.RS 4n
\fB$ORIGIN\fR の即時処理は、環境変数 \fBLD_ORIGIN\fR を NULL 以外の値に設定することによって開始できます。Solaris 9 より前のバージョンでは、このオプションは、\fB$ORIGIN\fR 文字列トークンを使用する依存関係を検索する前に \fBchdir\fR(2) を呼び出すアプリケーションにとって便利なオプションでした。現在では、デフォルトで実行時リンカーが現在の作業用ディレクトリを作成するため、このオプションは不要です。
.sp
詳細は、\fI「Locating Associated Dependencies」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_PLATCAP\fR、\fBLD_PLATCAP_32\fR、および \fBLD_PLATCAP_64\fR\fR
.ad
.sp .6
.RS 4n
代替プラットフォームの名前を識別します。
.sp
詳細は、\fI「Identifying Capability Requirements」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_PRELOAD\fR、\fBLD_PRELOAD_32\fR、および \fBLD_PRELOAD_64\fR\fR
.ad
.sp .6
.RS 4n
スペース区切りの共有オブジェクトの一覧を提供します。これらのオブジェクトは、実行されるプログラムのあとに読み込まれますが、そのプログラムが参照するほかの共有オブジェクトより早く読み込まれます。事前に読み込まれたオブジェクトによって提供されるシンボル定義は、プログラムが参照する共有オブジェクトによって作成された参照に挿入されます。事前に読み込まれたオブジェクトによって提供されるシンボル定義は、プログラムによって提供されるシンボル定義には挿入されません。
.sp
詳細は、\fI「Preloading Additional Objects」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_PROFILE\fR、\fBLD_PROFILE_32\fR、および \fBLD_PROFILE_64\fR\fR
.ad
.sp .6
.RS 4n
実行時リンカーによってプロファイルが作成される共有オブジェクトを定義します。プロファイルの作成が有効な場合、プロファイリングバッファーファイルが作成され、マッピングされます。バッファーファイル名はプロファイルが作成される共有オブジェクトの名前で、拡張子は \fB\&.profile\fR となります。デフォルトでは、このバッファーは \fB/var/tmp\fR の下に置かれます。また、環境変数 \fBLD_PROFILE_OUTPUT\fR が、プロファイリングバッファーを置く代替ディレクトリを示すために設定されます。
.sp
プロファイリングバッファーには、\fBprofil\fR(2) と呼び出し回数情報が含まれます。この情報は、\fBcc\fR の \fB-xpg\fR オプションにリンクされたプログラムによって生成される \fIgmon.out\fR 情報と同様です。指定された共有オブジェクトを使用し、この環境変数が設定されているときに動作するアプリケーションはすべて、プロファイルバッファーにデータを蓄積します。「注意事項」も参照してください。プロファイルバッファー情報は、\fBgprof\fR(1) を使用して検査できます。
.sp
\fBLD_PROFILE\fR によるプロファイル作成方法は、コンパイルシステムによって提供されることがあるほかの方法の代替手段です。プロファイルが作成される共有オブジェクトでは設定を行う必要はまったくなく、\fBLD_PROFILE\fR をプロファイルが設定されているアプリケーションと組み合わせてはいけません。
.sp
詳細は、\fI「Profiling Shared Objects」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_SFCAP\fR、\fBLD_SFCAP_32\fR、および \fBLD_SFCAP_64\fR\fR
.ad
.sp .6
.RS 4n
代替ソフトウェア機能の値を識別します。
.sp
.in +2
.nf
LD_SFCAP=[+-]{\fItoken\fR | \fInumber\fR},....
.fi
.in -2
.sp
接頭辞 "+" を付けると、その機能が代替機能に追加されます。接頭辞 "-" を付けると、その機能が代替機能から削除されます。"+-" がない場合は、その機能が代替機能を置き換えます。
.sp
詳細は、\fI「Identifying Capability Requirements」\fR in \fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fRを参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fBLD_SIGNAL\fR、\fBLD_SIGNAL_32\fR、および \fBLD_SIGNAL_64\fR\fR
.ad
.sp .6
.RS 4n
致命的な実行時エラーの発生時に、実行時リンカーがプロセスを強制終了するために使用する「数値」シグナル番号を提供します。\fB\fR\fBthr_kill\fR(3C) を参照してください。デフォルトでは、\fBSIGKILL\fR が使用されます。たとえば、代替シグナル番号が \fB6\fR (\fBSIGABRT\fR) の場合、デバッグを支援するコアファイルを作成できます。\fBdlinfo\fR(3C) への \fBRTLD_DI_SETSIGNAL\fR 要求も参照してください。
.RE
.sp
.LP
文字列「\fBLD_\fR」で始まる環境変数名は、\fBld\fR(1) と \fBld.so.1\fR の拡張用として予約されています。
.SH セキュリティ
.sp
.LP
セキュリティー保護されたプロセスでは、悪意のある依存関係の置換またはシンボルの割り込みを防ぐため、依存関係と runpath の評価にいくつかの制約があります。
.sp
.LP
実行時リンカーは、\fBissetugid\fR(2) システム呼び出しがプロセスに対して true を返した場合、そのプロセスをセキュアとして分類します。
.sp
.LP
32 ビットオブジェクトの場合、実行時リンカーが認識しているデフォルトのトラストディレクトリは、\fB/lib/secure/\fR と \fB/usr/lib/secure/\fR です。64 ビットオブジェクトの場合、デフォルトのトラストディレクトリは \fB/lib/secure/64\fR と \fB/usr/lib/secure/64\fR です。ユーティリティー \fBcrle\fR(1) を使用すれば、セキュアなアプリケーション向けに追加のトラストディレクトリを指定できます。この方法を使用する場合には、管理者は、ターゲットディレクトリを悪意のある侵入から適切に保護する必要があります。
.sp
.LP
あるセキュリティー保護されたプロセスに対して \fBLD_LIBRARY_PATH\fR ファミリ環境変数が有効になっている場合、実行時リンカーの検索規則を拡張するために使用されるのは、この変数に指定された「トラスト」ディレクトリだけです。\fB\fR
.sp
.LP
セキュリティー保護されたプロセスでは、アプリケーションまたはその依存関係のいずれかによって提供される runpath コンポーネントは、そのコンポーネントがフルパス名 (つまり、'\fB/\fR' で始まるパス名) である場合に使用されます。
.sp
.LP
セキュリティー保護されたプロセスでは、\fB$ORIGIN\fR 文字列の拡張は、その文字列がトラストディレクトリに拡張されるときに限り許可されます。\fB\fRただし、\fB$ORIGIN\fR を展開することですでに依存関係を提供したディレクトリに一致する場合、そのディレクトリは暗黙にセキュリティー保護されます。このディレクトリは、追加の依存関係を提供するために使用できます。
.sp
.LP
セキュリティー保護されたプロセスでは、\fBLD_CONFIG\fR は無視されます。ただし、セキュリティー保護されたアプリケーションで記録された構成ファイルは使用されます。\fBld\fR(1) の \fB-c\fR オプションを参照してください。記録される構成ファイルは、フルパス名 (つまり、'\fB/\fR' で始まるパス名) にする必要があります。記録される構成ファイルが \fB$ORIGIN\fR 文字列を使用する場合、そのファイルは既知のトラストディレクトリに制限されます。セキュリティー保護されたアプリケーション内の構成ファイルを記録する開発者は、構成ファイルディレクトリを悪意のある侵入から適切に保護する必要があります。記録された構成ファイルがない場合、セキュリティー保護されたプロセスは、構成ファイルがあれば、デフォルトの構成ファイルを使用します。\fBcrle\fR(1) を参照してください。
.sp
.LP
セキュリティー保護されたプロセスでは、\fBLD_SIGNAL\fR は無視されます。
.sp
.LP
追加のオブジェクトは、\fBLD_PRELOAD\fR または \fBLD_AUDIT\fR 環境変数を使用すると、セキュリティー保護されたプロセスで読み込むことができます。これらのオブジェクトは「フル」パス名または「単純」ファイル名で指定しなければなりません。\fB\fR\fB\fRフルパス名は、既知の「トラスト」ディレクトリに限定されます。\fB\fR単純ファイル名 (名前に '\fB/\fR' が付いていない) は、前述した検索パスの制約に従って配置されます。単純ファイル名は、既知の「トラスト」ディレクトリにのみ解決されることになります。\fB\fR
.sp
.LP
セキュリティー保護されたプロセスでは、単純ファイル名を構成する依存関係は、前述のパス名の制約を使用して処理されます。フルパス名または相対パス名で表示された依存関係は、そのまま使用されます。したがって、セキュリティー保護されたプロセスの開発者は、フルパス名または相対パス名依存関係として参照されるターゲットディレクトリを悪意のある侵入から適切に保護する必要があります。
.sp
.LP
セキュアなプロセスを作成する場合、依存関係を表したり、\fBdlopen\fR(3C) パス名を作成したりするために相対パス名を使用してはいけません\fB\fR。この制約は、アプリケーションと「すべての」依存関係に適用するようにしてください。\fB\fR
.SH 使用例
.LP
\fB例 1 \fRLD_FLAGS のグループ環境変数情報への使用
.sp
.LP
\fBLD_FLAGS\fR の次の使用法は、環境変数 \fBLD_BIND_NOW\fR と \fBLD_LIBRARY_PATH\fR をそれぞれ 32 ビットアプリケーション用に設定することと同等です。
.sp
.in +2
.nf
example% \fBLD_FLAGS_32=bind_now,library_path=/lib/one:/lib/two\fR
.fi
.in -2
.sp
.sp
.LP
\fBLD_FLAGS\fR の次の使用法は、環境変数 \fBLD_LIBRARY_PATH\fR と \fBLD_PRELOAD\fR をそれぞれ 64 ビットアプリケーション用に設定することと同等です。
.sp
.in +2
.nf
example% \fBLD_FLAGS_64=library_path=/lib/one/64,preload=foo.so\fR
.fi
.in -2
.sp
.SH ファイル
.sp
.ne 2
.mk
.na
\fB\fB/lib/ld.so.1\fR\fR
.ad
.sp .6
.RS 4n
デフォルトの実行時リンカー。
.RE
.sp
.ne 2
.mk
.na
\fB\fB/lib/libc.so.1\fR\fR
.ad
.sp .6
.RS 4n
\fBSVID ABI\fR 互換性のための代替インタプリタ
.RE
.sp
.ne 2
.mk
.na
\fB\fB/usr/lib/0@0.so.1\fR\fR
.ad
.sp .6
.RS 4n
NULL 文字ポインタをサポートする互換性ライブラリ。「注意事項」を参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fB/lib/secure\fR および \fB/usr/lib/secure\fR\fR
.ad
.sp .6
.RS 4n
セキュリティー保護されたアプリケーション用の \fBLD_PRELOAD\fR の位置。
.RE
.sp
.ne 2
.mk
.na
\fB\fB/lib/secure/64\fR および \fB/usr/lib/secure/64\fR\fR
.ad
.sp .6
.RS 4n
セキュリティー保護された 64 ビットアプリケーション用の \fBLD_PRELOAD\fR の位置。
.RE
.sp
.ne 2
.mk
.na
\fB\fB/lib/64/ld.so.1\fR\fR
.ad
.sp .6
.RS 4n
64 ビットアプリケーション用のデフォルトの実行時リンカー。
.RE
.sp
.ne 2
.mk
.na
\fB\fB/usr/lib/64/0@0.so.1\fR\fR
.ad
.sp .6
.RS 4n
NULL 文字ポインタをサポートする 64 ビット互換性ライブラリ。「注意事項」を参照してください。
.RE
.sp
.ne 2
.mk
.na
\fB\fB/var/ld/ld.config\fR\fR
.ad
.sp .6
.RS 4n
32 ビットアプリケーション用のデフォルトの構成ファイル。
.RE
.sp
.ne 2
.mk
.na
\fB\fB/var/ld/64/ld.config\fR\fR
.ad
.sp .6
.RS 4n
64 ビットアプリケーション用のデフォルトの構成ファイル。
.RE
.SH 属性
.sp
.LP
属性についての詳細は、マニュアルページの \fBattributes\fR(5) を参照してください。
.sp
.sp
.TS
tab() box;
cw(2.75i) |cw(2.75i)
lw(2.75i) |lw(2.75i)
.
属性タイプ属性値
_
使用条件system/linker
.TE
.SH 関連項目
.sp
.LP
\fBcrle\fR(1), \fBld\fR(1), \fBgprof\fR(1), \fBlari\fR(1), \fBld\fR(1), \fBldd\fR(1), \fBexec\fR(2), \fBissetugid\fR(2), \fBmmapobj\fR(2), \fBprofil\fR(2), \fBdladdr\fR(3C), \fBdlclose\fR(3C), \fBdldump\fR(3C), \fBdlerror\fR(3C), \fBdlinfo\fR(3C), \fBdlopen\fR(3C), \fBdlsym\fR(3C), \fBthr_kill\fR(3C), \fBproc\fR(4), \fBattributes\fR(5)
.sp
.LP
\fI『Oracle Solaris 11.3 Linkers and Libraries Guide』\fR
.SH 注意事項
.sp
.LP
\fBLD_PROFILE\fR を、\fBproc\fR(4) のユーザーなど、ほかのプロセスモニタリング方法と組み合わせて使う場合は注意してください。プロセス監視方法が複数あると、デッドロック条件が発生してプロファイルバッファーがロックされたままになるおそれがあります。ロックされたバッファーは、プロファイル情報を記録しようとするプロセスをすべてブロックします。この問題が発生する可能性を減らすために、実行時リンカーのプロファイル実装は、起動時にプロセスが監視されているどうかを確認します。その場合、プロセスのプロファイル作成は何も出力されずに無効にされます。ただし、このメカニズムでは、このプロセスに付随する監視プロセスをプロセスの実行中に取得できません。
.sp
.LP
ユーザー互換性ライブラリ \fB/usr/lib/0@0.so.1\fR では、\fB0\fR の値を位置 0 で設定するメカニズムを利用できます。アプリケーションの中には、NULL 文字ポインタを NULL 文字列へのポインタと同じように処理するべきだと誤って解釈するものがあります。このようなアプリケーションでは、NULL 文字ポインタに対してアクセスがあるとセグメンテーション違反が発生します。\fBLD_PRELOAD\fR を使用して実行時にこのライブラリがそのようなアプリケーションに追加されると、こうした誤動作が起こりやすい環境が作られます。しかし、ユーザー互換性ライブラリは、このようなアプリケーションを生成するためのものでも、こうした特殊なプログラミング作業を奨励するためのものでもありません。
.sp
.LP
ほとんどの場合、\fB/usr/lib/0@0.so.1\fR が存在していても問題はなく、これを必要としないプログラムに事前に読み込まれてもかまいません。ただし、例外があります。\fBJVM\fR (Java 仮想マシン) など一部のアプリケーションでは、NULL ポインタへのアクセスによってセグメント違反が発生する必要があります。\fBJVM\fR などのアプリケーションでは、\fB/usr/lib/0@0.so\fR を事前に読み込まないようにしてください。