ILINK64.EXE - 64 ビット インクリメンタル リンカ
ILINK64.EXE は、ILINK64(64 ビット Windows 用 C++ リンカ)のコマンドライン インターフェイスです。
コマンドライン構文
ILINK64 <objfiles>, <exefile>, <mapfile>, <libfiles>, <deffile>, <resfiles>
コマンドライン要素
また、64 ビット リンカは ILINK64.CFG という構成ファイルを作成し、通常はコマンド ラインから入力するオプションを設定しておくこともできます。
要素 | 説明 |
---|---|
|
リンクをどのように行うかを制御するためのリンカ オプションです。たとえば、.EXE または .DLL のいずれのファイルを生成するかは、オプションで指定します。リンカ オプションの前には、スラッシュ( |
|
プログラムのさまざまなセグメントの順序を設定する、実行可能ファイルおよび DLL のための初期化モジュールです。正しい初期化モジュールのリンクに失敗すると、通常、ある識別子が未解決である、あるいはスタックが作成されていないといったエラー メッセージが、大量に出力されます。 |
|
リンクするオブジェクト ファイル( |
|
実行可能ファイル(.EXE または .DLL)に付ける名前です。実行可能ファイル名を指定しない場合、ILINK64 は、列挙されている最初のオブジェクト ファイル名に .EXE または .DLL を付けて、実行可能ファイルの名前を作成します (実行可能ファイルの拡張子が指定されていない場合、リンカは、拡張子を .EXE とみなして、.EXE を付加します。また、ダイナミック リンク ライブラリの拡張子が指定されていない場合は、拡張子 .DLL を付加します)。 |
|
マップ ファイルに付ける名前です。名前を指定しない場合、マップ ファイルには .EXE ファイルと同じ名前が付けられます(ただし、拡張子は .MAP)。拡張子を指定しないと、リンカが拡張子 .MAP を付加します。 |
|
リンク時に組み込むライブラリ ファイル(
|
|
Windows 実行可能ファイルのモジュール定義ファイルです。モジュール定義(.DEF)ファイルを指定せずに、 |
|
実行可能ファイルにバインドする .RES ファイル(コンパイル済みリソース ファイル)のリストです (拡張子がない場合は、リンカが拡張子 .RES を付加します)。 |
コマンドライン ヘルプ
ILINK64 のコマンドライン ヘルプを表示するには、次のように入力します。
ilink64
次の画面が表示されます。
Turbo Incremental Link 6.40 Copyright (c) 1997-2012 Embarcadero Technologies, Inc. Syntax: ILINK objfiles, exefile, mapfile, libfiles, deffile, resfiles @xxxx indicates use response file xxxx General Options: -Af:nnnn Specify file alignment -C Clear state before linking -Ao:nnnn Specify object alignment -wxxx Warning control -ax Specify application type -Enn Max number of errors -b:xxxx Specify image base addr -r Verbose linking -Txx Specify output file type -q Suppress banner -H:xxxx Specify heap reserve size -c Case sensitive linking -Hc:xxxx Specify heap commit size -v Full debug information -S:xxxx Specify stack reserve size -Gn No state files -Sc:xxxx Specify stack commit size -Gi Generate import library -Vd.d Specify Windows version -GD Generate .DRC file -Dstring Set image description Map File Control: -Vd.d Specify subsystem version -M Map with mangled names -Ud.d Specify image user version -m Map file with publics -GC Specify image comment str -s Detailed segment map -GF Set image flags -x No map -Gl Static package Paths: -Gpd Design time only package -I Intermediate output dir -Gpr Runtime only package -L Specify library search paths -GS Set section flags -j Specify object search paths -Gt Fast TLS Image Control: -Gz Do image checksum -d Delay load a .DLL -Rr Replace resources
コマンドライン オプション
ILINK64.EXE コマンドライン オプションでは、大文字と小文字が区別されます。
ILINK64.EXE では、以下の表に示すコマンドライン オプションをサポートしています。
メモ:
ilink64
のコマンドライン オプションは、先頭の/
の代わりに-
を使って記述することもできます (たとえば、/Tpe
オプションは-Tpe
と記述することもできます)。
リンカ オプション
オプション | 説明 |
---|---|
|
|
|
ファイルのアラインメントを指定します。 |
|
オブジェクトのアラインメントを指定します。 |
|
64 ビット Windows アプリケーションをビルドします。 |
|
64 ビット Windows デバイス ドライバをビルドします。 |
|
64 ビット Windows コンソール アプリケーションをビルドします。 |
|
イメージのベース アドレスを指定します(再配置テーブルは削除します)。 |
|
イメージのベース アドレスを指定します(DLL 再配置テーブルは保持します)。後続のオブジェクトは、64KB の連続したアドレス境界に配置されます。読み込み時や実行時のパフォーマンスが向上します。
DLL 生成時には指定することをお勧めします。 |
|
リンカのステート ファイルを更新します。リンクの前に、毎回、リンカ ステート ファイルをすべて消去します。その後、そのファイルを再作成し、リンク処理を続行します。 |
|
パブリック シンボルおよび外部シンボルで大文字と小文字の区別を重視します。 |
|
DLL を遅延読み込みします。指定した DLL は、DLL 内のエントリ ポイントが実際に呼び出されないと、読み込みおよび初期化されません。 |
|
指定された説明が PE イメージに保存されます。 |
|
エラーの最大数を指定します。 |
|
イメージの PE ファイル ヘッダーにあるオブジェクト テーブルの直後に、コメント文字列を挿入します。複数の文字列を指定できます。 |
|
Delphi 互換の RC ファイル(DRC ファイル)を生成します。 |
|
イメージ フラグを設定します。xxxx に指定するフラグは以下のとおりです。
|
|
エラー時に出力ファイルを保持します。 |
|
.LIB ファイルを生成します。 |
|
設計時専用パッケージを生成します。デフォルトでは、パッケージは設計時と実行時の両方で動作します。 |
|
実行時専用パッケージを生成します。デフォルトでは、パッケージは設計時と実行時の両方で動作します。 |
|
ステート ファイルを生成しません(インクリメンタル リンクを無効にします)。次回以降のリンクは、最初のリンクと同程度の時間がかかります。デフォルトはオフです。 |
|
セクション フラグを設定します。指定したセクションの既存のフラグに対して、指定したフラグを追加します。セクションからデフォルトのフラグを削除することはできません。セクション フラグには以下のものがあります。 例 -Gs:.rsrc=W このスイッチを指定すると、RSRC セクションが書き込み可能になります。 |
|
ターゲットのチェックサムを計算し、その結果を PE ヘッダーに挿入します。これは、NT のカーネル モード ドライバとシステム DLL で使用されます。 |
|
アプリケーションのヒープ予約サイズを 16 進数または 10 進数で指定します。最小値は 0 です。このスイッチは、モジュール定義ファイルで設定された HEAPSIZE よりも優先されます。 |
|
アプリケーションのヒープ コミット サイズを指定します。 |
|
中間出力ファイルのディレクトリを指定します。リンカ ステート ファイルはこの指定に従いますが、マップ デバッグ ファイルとデバッグ シンボル ファイルは出力イメージと同じディレクトリに保存されます(ただし、マップ デバッグ ファイルに関しては他で指定されていない場合のみ)。 |
|
オブジェクト検索パスを指定します。 例 ILINK64 /jc:\myobjs;.\objs splash ^ .\common\logo,,,utils logolib このコマンドは、最初に現在のディレクトリで SPLASH.OBJ を検索するようにリンカに指示します。ファイルが現在のディレクトリに見つからない場合、リンカは、そのファイルを C:\MYOBJS ディレクトリで検索し、次に .\OBJs ディレクトリで検索します。ただし、LOGO.OBJ ファイルのパスは明示的に指定されているため、リンカは、このファイルを検索する際にはオブジェクト検索パスを使用しません。 |
|
LIB ファイルのパスが明示的に指定されず、かつリンカが現在のディレクトリで LIB ファイルを見つけられない場合に使用する、ライブラリ検索パスを指定します。 ILINK64 /Lc:\mylibs;.\libs splash ^ .\common\logo,,,utils logolib 最初に現在のディレクトリで SPLASH.LIB を検索するようにリンカに指示します。ファイルが現在のディレクトリに見つからない場合、リンカは、C:\MYLIBS ディレクトリで検索し、次に .\LIBs ディレクトリで検索します。ただし、LOGO.LIB ファイルのパスは明示的に指定されているため、リンカは、このファイルを検索する際にはライブラリ検索パスを使用しません。 |
|
マップ ファイル内に完全名ではなく変形した C++ 識別子を出力します。 |
|
セグメントのリストでは、各セグメントについて 1 行を使い、セグメントの開始アドレス、セグメント長、セグメント名、およびセグメント クラスを示します。パブリック シンボルは 2 つのリストに分けられ、そのうちの 1 つはアルファベット順で、もう 1 つはアドレスの昇順でシンボルを表示します。絶対アドレスを持つシンボルには、タグ |
|
コマンドライン バナーを表示しません。 |
|
リンク時に詳細を表示します。デフォルトはオフです。 |
|
リソースを置換します。 |
|
アプリケーションのスタック予約サイズを指定します。 |
|
アプリケーションのスタック コミット サイズを指定します。 |
|
リンカで生成されるデフォルト マップ ファイルにグループやモジュールの情報などの詳細を追加することで、セグメントの詳細マップ ファイルを生成します。 |
|
64 ビット Windows DLL ファイルをターゲットにします。 |
|
64 ビット Windows EXE ファイルをターゲットにします。 |
|
パッケージを生成します。 |
|
リンクに要した時間を表示します。 |
|
デバッグ シンボル ファイルを生成します。 |
|
すべての警告をオンにします。 |
|
以下の警告を無効にします。 |
|
以下の警告を無効にします。 |
|
以下の警告を無効にします。 |
|
以下の警告を有効にします。 |
|
以下の警告を無効にします。 |
|
以下の警告を有効にします。 |
|
以下の警告を無効にします。 |
|
以下の警告を無効にします。 |
|
以下の警告を無効にします。 |
|
マップ デバッグ ファイルを作成しません。 |
|
セグメントのデフォルト マップ ファイル(リンカ スイッチなし)。 デフォルトでは、リンカは、以下を始めとする一般的なセグメント情報が記載されたマップ ファイルを生成します。
|
ILINK64 のメモリ不足エラーの処理
IDE では "致命的: メモリ不足です" というメッセージを表示するだけですが、ILINK64 からは各ヒープやメモリの使用量についてのさらに詳しい情報が出力されます。
以下に例を示します。
Turbo Incremental Link64 6.40 Copyright (c) 1997-2012 Embarcadero Technologies,
Inc.
Overrun on linker heap: info
Linker Heaps
------------
info 0x12271000 0x12000000
code 0x0487d000 0x08000000
rodata 0x00159000 0x06000000
data 0x029bb000 0x08000000
bss 0x08000000 0x08000000
dwarf_aranges 0x00010000 0x00200000
dwarf_macinfo 0x00010000 0x00200000
dwarf_pubtypes 0x00275000 0x02000000
dwarf_info 0x04e57000 0x06000000
dwarf_abbrev 0x00040000 0x00200000
dwarf_line 0x0124d000 0x02000000
dwarf_str 0x036e0000 0x06000000
dwarf_loc 0x00070000 0x02000000
dwarf_ranges 0x00275000 0x02000000
Fatal: Out of memory
-GH<heapname>=size
を使用すると、より大きなヒープや複数のヒープ領域を確保することができます。
たとえば、社内の C++Builder 開発者は、DLL OWLNext ライブラリのリリース版をリンクするために -GHinfo=0x12000000
と指定しています。