ld - リンク・オブジェクト・ファイル

関連情報

形式

ld [–cVv]
[–b option[,option]…]…
[–e function]
[–f filename]…
[–L directory]…
[–l libname]…
[–O name[,name]…]
[–o outfile]
[–S syslibdset]…
[–u function]
[–x sidefile]
[file.o ] … [file.a ] … [file.x]… [–l libname] …

説明

ld ユーティリティーは外部参照を解決し、オブジェクト・ファイルと アーカイブ・ファイルを結合して出力実行可能ファイルを作成します。 ld はプログラム管理バインダーを実行します。

変更の始まりトレース出力を z/OS UNIX ファイルに エクスポートするには、_LD_DEBUG_TRACE 環境変数を使用します。変更の終わり

オプション

-b option[,option]…
バインダーに渡されるオプションを指定します。バインダーおよびそのオプションについて 詳しくは、「z/OS MVS プログラム管理: ユーザーズ・ガイドおよび解説書」を参照してください。指定されていない バインダー・オプションは、バインダー・オプションに影響を与える ld オプションが 他に指定されていない限り、デフォルトのバインダーを使用します。
–c
実際にはバインダーを実行せずに、疑似 -JCL を stdout に 書き込みます。疑似 -JCL はどのバインダー・オプションが渡されている か、さらにどのデータ・セットが使用されているかに関する正確な情報を 提供します。

–v も参照してください。

-e function
プログラムのエントリー・ポイントとして使用される関数の名前を指定します。

-e オプションのデフォルト値は、環境変数 _LD_ENTRY_POINT の 設定に影響されます (「環境変数」を参照してください)。-e オプションが 指定されていないうえに _LD_ENTRY_POINT がヌルである場合、または function が ヌルである場合は、バインダーのデフォルト規則によりプログラムのエントリー・ポイントが 判別されます。バインダーおよび ENTRY 制御ステートメントについて詳しくは、「z/OS MVS プログラム管理: ユーザーズ・ガイドおよび解説書」 を参照してください。

-O も参照してください。

-f filename
入力として使用されるオブジェクト・ファイルおよびアーカイブ・ファイルの 名前のリストを含むファイルを指定します。オペランドとして指定された ファイルに加えて、リストされたファイルも使用されます。
-L directory
これは、-l のオペランドで指定されたアーカイブ・ライブラリーを 検索するために使用されるディレクトリーを指定します。 このディレクトリーにおいて、指定の順序で検索が行われます。 その次に、_LD_LIBDIRS 環境変数で指定されているディレクトリー、またはこの環境変数のデフォルト・ディレクトリーにおいて、 検索が行われます。 MVS™ データ・セットをアーカイブ・ライブラリー・ディレクトリー として指定することはできません。
-l libname
アーカイブ・ライブラリーの名前を指定します。ld は 、ファイル lib libname.a-L オプション で指定されたディレクトリーで探し、次に _LD_LIBDIRS 環境変数で 指定されたディレクトリー、またはデフォルトのディレクトリーで探します。アーカイブ・ライブラリーの最初のオカレンスが使用されます。

MVS データ・セットを指定することもできます。ライブラリー・ディレクトリーの検索の規則がないため、データ・セットの完全な名前を指定する必要があります。

指定するデータ・セットは、C370LIB オブジェクト・ライブラリーまたは ロード・ライブラリーでなければなりません。ライブラリーとして指定されたデータ・セットのレコード・フォーマットが未定義 (U) である場合は、そのデータ・セットはロード・ライブラリーであると想定されます。オブジェクト・ライブラリー・ユーティリティーについては、「z/OS XL C/C++ ユーザーズ・ガイドz/OS XL C/C++ ユーザーズ・ガイド」を参照してくださ い。

-O name[, name]…
実行可能ファイルの先頭に位置づけられるコード・トピックの 名前を指定します。バインダー制御ステートメントの順序が生成されます。 環境変数 _LD_ORDER でデフォルト値の -O を 指定することができます (「環境変数」を参照してください)。
-o outfile
ld で作成される実行可能ファイルの名前を指定します。デフォルトの 出力ファイルは a.out です。
-S syslibdset
シンボルの解決に使用されるシステム・ライブラリー (SYSLIB) データ・セットの 名前を指定します。
-u function
解決される外部シンボルのリストに追加する関数の名前 を指定します。このオプションは、唯一の入力がアーカイブ・ライブラリーで ある場合に役立ちます。このオプションが指定されないと、外部シンボルは 追加されません。
-V
この詳細オプションはバインダー・リストを作成して、stdout に送信します。
-v
この詳細オプションにより、バインダーを実行する前に、疑似 JCL が stdout に 書き込まれます。これにより、どのバインダー・オプションが渡されている か、さらにどのデータ・セットが使用されているかに関する正確な情報を 提供します。
-X sidefile
これは、ld が DLL (ダイナミック・リンク・ライブラリー) の生成時に書き込み先とする サイド・デック・ファイルまたはデータ・セットの名前を指定します。

オペランド

file.a
外部参照を解決するためにバインダーが使用するアーカイブ・ファイルの名前を 指定します。この名前は、ar コマンドで作成されたときのものです。ダブル スラッシュ (//) の付いた名前を先行させることにより、MVS データ・ セット名を指定することができますが、その場合は、データ・セット名の最後の 修飾子は LIB でなければなりません。指定するデータ・セットは、C370LIB オブジェクト・ライブラリーまたは ロード・ライブラリーでなければなりません。データ・セットをライブラリーとして 使用することについては、-l libname オペランドの説明を参照してください。
file.o
C/C++ ランタイム コンパイラーまたはアセンブラーにより生成された、リンク・エディット されるオブジェクト・ファイルの名前を指定します。

ダブルスラッシュ (//) の付いたファイル名を先行させることにより、リンク・ エディットされる MVS データ・セット名を指定することができますが、その場合は データ・セット名の最後の修飾子は OBJ でなければなりません。

区分データ・セットを指定している場合は、コンマでその間を区切って 複数のメンバー名を指定することができます。例えば、以下のとおりです。
ld //file.OBJ(mem1,mem2,mem3)
file.x
DLL (ダイナミック・リンク・ライブラリー) の作成時に ld で作成され、DLL を使用するアプリケーションのリンク時に ld に使用される定義サイド・デックの名前を指定します。サイド・デック処理について 詳しくは、「z/OS MVS プログラム管理: ユーザーズ・ガイドおよび解説書」を参照してください。

ダブルスラッシュ (//) の付いたファイル名を先行させることにより、MVS データ・ セット名を指定することができますが、その場合は、データ・セット名の最後の 修飾子は EXP でなければなりません。

区分データ・セットを指定している場合は、コンマでその間を区切って 複数のメンバー名を指定することができます。例えば、以下のとおりです。
ld //file.EXP(mem1,mem2,mem3)

環境変数

環境変数を使用すると、必要なシステム情報および操作情報を ld に対して指定することができます。特定の環境変数が設定されていない場合は、ld は以下に示すデ フォルトを使用します。そのような環境変数に使用されている JCL パラメーターについては、「z/OS MVS JCL ユーザーズ・ガイド」を 参照してください。

_LD_ACCEPTABLE_RC
バインダー呼び出しの戻りコード (結果) として許可される 最大値。結果がゼロとこの値の間 (この値も含む) にある場合は、ld はメッセージ IEW5033 を出すという点を除いては、それがゼロであった場合と全く同じに処理します。バインダーの戻りコードの詳細については、「z/OS MVS プログラム管理: ユーザーズ・ガイドおよび解説書」を 参照してください。デフォルト値は、次のとおりです。
"4"
_LD_ASUFFIX
ld がアーカイブ・ファイルの認識に使用する 接尾部です。この環境変数は、-l のオペランドとして指定されたアーカイブ・ライブラリーの 処理には影響しません。このライブラリーには常に lib という接頭部が付けられ 、.a という接尾部が付けられています。デフォルト値は、次のとおりです。
"a"
_LD_ASUFFIX_HOST
ld がライブラリー・データ・セットの認識に 使用する接尾部です。この環境変数は、-l オペランドとして指定された データ・セット・ライブラリーの処理には影響しません。このライブラリーは常に指定された通りに使用されます。 デフォルト値は、次のとおりです。
"LIB"
_LD_DAMPLEVEL
動的割り振りメッセージ処理より戻された、動的割り振りメッセージの最小の重大度レベルです。 この数値と等しいかより大きい重大度のメッセージ は stderr に書き込まれます。しかし、この数値が ここに示される範囲以外 (つまり 0 より小さいか 8 より大きい) のものであれば、ld 動的割り振りメッセージ処理は使用不可となります。デフォルト値は、次のとおりです。
"4"
他に値としては、以下のものがあります。
0
通知
1–4
警告
5–8
重大
_LD_DAMPNAME
ld により呼び出される動的割り当てメッセージ処理プログラムの 名前です。これは 、MVS プログラムに使用される検索順序内の データ・セットのメンバーでなければなりません。デフォルトの動的割り振りメッセージ処理プログラムについては、「z/OS MVS Programming: Authorized Assembler Services Guide」に説明があります。 デフォルト値は、次のとおりです。
"IEFDB476"
_LD_DCBU
レコード・フォーマットが未定義で、データ・セット編成が区分であるという 属性のデータ・セットに対して ld が使用する DCB パラメーター です。この DCB は、出力ファイルをデータ・セットに 書き込むときに、ld が使用します。デフォルト値は、次のとおりです。
"(RECFM=U,LRECL=0,BLKSIZE=6144,DSORG=PO)"
_LD_DCB80
レコード・フォーマットが固定長ブロック化で論理レコード長が 80 の 属性のデータ・セットに対して ld が 使用する DCB パラメーターです。デフォルト値は、次のとおりです。
"(RECFM=FB,LRECL=80,BLKSIZE=5680)"
_LD_DEBUG_DUMP
バインダーの実行中に、診断データを獲得するために使用されるデータ・セットの 名前。バインダーの異常終了状況 (通常はメッセージ IEW2900W が表示される) が発生したとき、 またはバインダー・オプション DUMP が指定されたときに、バインダーによって不定形式ダンプがこのデータ・セットに書き込まれます。 データ・セットは ld が 呼び出される前に作成する必要があり、また RECFM=VBA および LRECL=125 で 作成する必要があります。この環境変数がヌルである場合、バインダー・ ダンプは獲得されません。デフォルト値は、次のとおりです。
"" (ヌル)
変更の始まり_LD_DEBUG_TRACE変更の終わり
変更の始まりバインダーの 実行時に診断データを収集するために使用されるデータ・セットまたは UNIX ファイルの名前。 不定形式のトレースがバインダーにより必要に応じてデータ・セットまたは UNIX ファイルに書き込まれます。 変数の先頭にスラッシュが 2 つ付いている場合、その変数はデータ・セット名です。 この場合、このデータ・セットは ld が 呼び出される前に RECFM=VB および LRECL=84 で作成されていなければなりません。 この環境変数がヌルである場合、バインダー・ トレースは獲得されません。デフォルト値は、次のとおりです。
"" (ヌル)

トレース出力ファイルは z/OS UNIX ファイルにすることもできます。 バインダーは不定形式のトレースをデータ・セットに書き込みます。 先頭にスラッシュが付いていないファイル名は、相対ディレクトリーを持つ UNIX ファイル名として扱われます。 先頭にスラッシュが 1 つ付いているファイル名は、絶対ディレクトリーを持つ UNIX ファイル名として扱われます。

変更の終わり
_LD_ENTRY_POINT
-e が指定されていない場合に、-e オプション として使用される値。デフォルト値は、次のとおりです。
"" (ヌル)
_LD_EXTRA_SYMBOL
-u が指定されていない場合に、-u オプション として使用される値。デフォルト値は、次のとおりです。
"" (ヌル)
_LD_LIBDIRS_
-l オペランドを使用して指定される アーカイブ・ライブラリーを検索するためにデフォルトの場所として ld で使用されるディレクトリーです。 デフォルト値は、次のとおりです。
"/lib /usr/lib"
_LD_ORDER
-O が指定されていない場合に、-O オプション として使用される値。デフォルト値は、次のとおりです。
"" (ヌル)
_LD_NEW_DATACLAS
ld が 新たに作成するすべてのデータ・セットに対して使用する DATACLAS パラメーターです。 デフォルト値は、次のとおりです。
"" (ヌル)
_LD_NEW_DSNTYPE
ld が 新たに作成するすべてのデータ・セットに対して使用する DSNTYPE パラメーターです。 デフォルト値は、次のとおりです。
"LIBRARY"
これは、新規データ・セットはタイプ PDSE として作成されることを意味します。
_LD_NEW_MGMTCLAS
ld が 新たに作成するすべてのデータ・セットに対して使用する MGMTCLAS パラメーターです。 デフォルト値は、次のとおりです。
"" (ヌル)
_LD_NEW_SPACE
ld が 新たに作成するすべてのデータ・セットに対して使用する SPACE パラメーターです。 デフォルト値は、次のとおりです。
"" (ヌル)
_LD_NEW_STORCLAS
ld が 新たに作成するすべてのデータ・セットに対して使用する STORCLAS パラメーターです。 デフォルト値は、次のとおりです。
"" (ヌル)
_LD_NEW_UNIT
ld が 新たに作成するすべてのデータ・セットに対して使用する UNIT パラメーターです。 デフォルト値は、次のとおりです。
"" (ヌル)
_LD_OPERANDS
これらのオペランドは、ld コマンド行上の 他のすべてのオペランドよりも後に指定されたかのように 構文解析されます。デフォルト値は、次のとおりです。
"" (ヌル)
_LD_OPTIONS
これらのオプションは、ld コマンド行上の 他のすべてのオペランドよりも後に指定されたかのように 構文解析されます。デフォルト値は、次のとおりです。
"" (ヌル)
_LD_OSUFFIX
ld がオブジェクト・ファイルの認識に使用する 接尾部です。デフォルト値は、次のとおりです。
"o"
_LD_OSUFFIX_HOST
ld がオブジェクト・データ・セットの認識に 使用する接尾部です。デフォルト値は、次のとおりです。
"OBJ"
_LD_SYSLIB
シンボルを解決するために使用する、システム・ライブラリー・ データ・セットの連結です。デフォルト値は、次のとおりです。
"" (ヌル)
_LD_SYSIX
シンボルを解決するために使用する、システム定義サイド・デックのリストです。定義サイド・デックには、DLL によって エクスポートされるシンボルを指定するリンク・エディット・フェーズ IMPORT 制御ステートメントが含まれています。 デフォルト値は、次のとおりです。
"" (ヌル)
_LD_XSUFFIX
ld が、エクスポートされたシンボルの定義サイド・デック・ファイルを認識するための接尾部です。デフォルト値は、次のとおりです。
"x"
_LD_XSUFFIXHOST
ld が、エクスポートされたシンボルの定義サイド・デック・データ・セットを認識するための接尾部です。デフォルト値は、次のとおりです。
"EXP"

使用上の注意

  1. ld コマンドに使用により生成されるメッセージは、「z/OS MVS システム・メッセージ 第 8 巻 (IEF-IGD)」に記載されています。
  2. ldc89 コマンドのリンク・エディット・ステップと 同等の機能を提供します。ldc89 のコンパイルおよび アセンブリー・フェーズの機能を提供せず、またリンク・エディット・ステップの リンク・エディット・フェーズ例外のステップも提供せずに、プログラム管理 バインダーを呼び出すのみです。さらに大きな違いとして、c89 の デフォルト設定は、C/C++ ランタイム コンパイラーで 生成されたオブジェクト・ファイルを、Language Environment® で 実行するためにリンクするよう設計されていますが、ld のデフォルト設定は、コンパイラーや環境の前提事項を持たないため、 他のコンパイラーで生成されたオブジェクトや、Language Environment 以外の環境を対象とした オブジェクトをリンクするために容易に使用できます。
    ld のオプション、オペランド、または環境変数を 使用して、c89 がデフォルトで作成する実行可能モジュールと互換性のある実行可能 モジュールを ld に作成させることができます。
    オプション/オペランド 環境変数 c89 互換性の値
    -e _LD_ENTRY_POINT
    CEESTART
    または、AMODE 64 コードで使用する、
    CELQSTRT
    -O _LD_ORDER
    CEESTART
    または、AMODE 64 コードで使用する、
    CELQSTRT
    -S _LD_SYSLIB
    //'CEE.SCEELKEX':
    //'CEE.SCEELKED':
    //'CBC.SCCNOBJ':
    //'SYS1.CSSLIB'
    またはインストールと同等の名前
    -u _LD_EXTRA_SYMBOL
    CEEMAIN
    または、AMODE 64 コードで使用する、
    CELQMAIN
    file.a _LD_OPERANDS
    //CEE.SCEEOBJ
  3. データ・セット名が指定される場合、引数はダブルスラッシュ(//) を先頭に持つデータ・セット名でなければなりません。単一引用符で 囲まれている名前は完全修飾名とみなされ、そのまま使用されます。 そうでない場合は、ピリオドを末尾に持つユーザー・ログイン名が 先頭に指定されます。
  4. ダッシュ (-) で始まるオペランドを指定できるようにするためには、 オプションの終わりの区切りを示す二重ダッシュ (--) を使用してください。
  5. シェルから ld を起動するときには、シェルにとって特別な 意味を持つ文字を含むオプションの引数またはオペランドは、エスケープする 必要があります。例えば、PDS メンバー名として指定されたソース・ファイルは括弧を含みます。 さらに、そのソース・ファイルは完全修飾名として指定された場合に単一引用符を含みます。 これらの特殊文字をエスケープするためには、オプションの引数またはオペランドを 二重引用符で囲むか、あるいは各文字の前に円記号を入れてください。
  6. オプションおよび引数は、読み取られた順序 (左から右) で処理され ます。矛盾がある場合は、最後の指定が使用されます。引数を必要とする オプションが二度以上指定されている場合は、最後の指定が使用されます。 以下に例外を示します。
    -b
    指定された順序でバインダー・オプションを追加します
    -f
    -f オプションが検出されると各ファイルが処理されます
    -L
    指定された順序でライブラリー・ディレクトリーを追加します
    -l
    -l オプションが検出されるとライブラリーが検索されます
    -S
    SYSLIB データ・セットは、指定された順序で付加されます。
    すべてのオペランドは指定された順序で処理されます
  7. アーカイブ・ライブラリー・ファイルは、それらの名前が検出されたときに 検索されるため、-l オペランドおよび file.a オペランドの 配置が大切です。1 つのライブラリーをコマンド・ストリング上で 複数回指定しなければならない場合があります。これは、後の file.o ファイルの指定によって、そのライブラリーから追加のシンボルを解決する必要がある場合です。
  8. 以下の環境変数は実行される MVS プログラムの名前を指定し、 変数の長さは最長 8 文字です。STEPLIB 環境変数を使用して 必要に応じて検索順序を変更し、MVS プログラムを検索することができ ます。STEPLIB 環境変数について詳しくは、「z/OS UNIX System Services 計画」のよく使われる環境変数に関するセクションを参照してください。これについては、sh コマンドの説明も参照してください。
    • _LD_DAMP_NAME
  9. 以下の環境変数は、長さを 15 文字以内にする必要があります。これらの環境変数を設定するときにピリオド (.) は指定しないでください。 ピリオドを指定すると、これらの環境変数が、対応するオペランドと一致しなくなるためです。
    • _LD_ASUFFIX
    • _LD_ASUFFIX_HOST
    • _LD_OSUFFIX
    • _LD_OSUFFIX_HOST
    • _LD_XSUFFIX
    • _LD_XSUFFIX_HOST
  10. 以下の環境変数は、コロンで区切られたデータ・セットの名前として 構文解析され、データ・セットの連結またはデータ・セット・リストを表します。
    • _LD_SYSLIB
  11. 以下の環境変数は MVS データ・セットの名前を指定します。長さは 44 文字以内にする必要があります。
    • _LD_DEBUG_DUMP
    • _LD_DEBUG_TRACE
  12. 以下の環境変数は、長さを 63 文字以内にする必要があります。
    • _LD_NEW_DATACLAS
    • _LD_NEW_DSNTYPE
    • _LD_NEW_MGMTCLAS
    • _LD_NEW_SPACE
    • _LD_NEW_STORCLAS
    • _LD_NEW_UNIT
  13. 以下の環境変数は SPACE パラメーターを指定するためのもので、すべてのコンマと小括弧を含めて、 以下に示す構文のみをサポートします (例: "(,(10,10,10))")。PRIMARY は 割り振られる 1 次トラックの数で、SECONDARY は 2 次トラックの数、DIRBLOCKS は ディレクトリー・ブロックの数です。DIRBLKS はディレクトリー・ブロックが 必要ない場合にも指定する必要があります。
    • _LD_NEW_SPACE
  14. 以下の環境変数は、DSNTYPE パラメーターを指定するために 使用し、LIBRARY または PDS サブパラメーターのみをサポートします (デフォルト の LIBRARY の場合はヌル)。
    • _LD_NEW_DSNTYPE
  15. 以下の環境変数は、長さを 127 文字以内にする必要があります。
    • _LD_DCBU
    • _LD_DCB80
    制約事項: これらの環境変数は DCB 情報の指定のためで、以下の DCB サブパラメーターだけを注記の制限付きでサポートします。
    RECFM
    正しくない値は無視されます。
    LRECL
    なし
    BLKSIZE
    なし
    DSORG
    正しくない値は、あたかも値が指定されなかったかのように処理されます。
  16. 以下の環境変数は、ブランクで区切られたワードとして構文解析されます。したがって、組み込まれたブランクやホワイト・スペースは指定された値 としては 認められません。各ワードの最大長は 1024 文字です。
    • _LD_LIBDIRS
    • _LD_OPTIONS
    • _LD_OPERANDS

ローカライズ

ld は、以下のローカライズ環境変数を使用します。
  • LANG
  • LC_ALL
  • LC_CTYPE
  • LC_MESSAGES

詳しくは、ローカライズを参照してください。

終了値

0
正常終了。
>0
処理中にエラーが発生しました。

関連情報

c89