/INCREMENTAL (増分リンク)

増分リンクするか、または常にフル リンクを実行するかを指定します。

構文

/INCREMENTAL[:NO]

解説

/INCREMENTAL リンカー オプションは、リンカーがインクリメンタル リンクを処理する方法を制御します。

既定では、インクリメンタル リンクは実行されます。 既定の増分リンクをオーバーライドするには、 /INCREMENTAL:NOを指定します。

インクリメンタル リンクされたプログラムは、インクリメンタル リンクではないプログラムと機能的には同等です。 ただし、後続の増分リンク用に準備されているため、増分リンクされた実行可能ファイル、スタティック ライブラリ、またはダイナミック リンク ライブラリ ファイルは次のようになります。

  • コードとデータのパディングにより、インクリメンタル リンクされていないプログラムより大きくなります。 パディングを行うと、リンカーは、ファイルを再作成することなく、関数やデータのサイズを拡張できます。

  • ジャンプ サンクを使って、新しいアドレスに関数を再配置する場合があります。

    Note

    最終リリース ビルドにパディングやサンクが含まれないようにするには、プログラムをインクリメンタルにしないでリンクします。

既定値に関係なく増分リンクするには、 /INCREMENTALを指定します。 このオプションを選択すると、リンカーは増分リンクできない場合に警告を発行し、プログラムを非増分リンクします。 特定のオプションと状況によって、 /INCREMENTALがオーバーライドされます。

大半のプログラムでは、インクリメンタル リンクができます。 ただし、変更箇所が大きすぎたり、インクリメンタル リンクと矛盾するオプションが指定されていると、実行できません。 フル リンクを実行するには、次のいずれかを行います。

  • [増分リンク] が選択されていない (/INCREMENTAL:NO)

  • /OPT:REF が選択されている

  • /OPT:ICF が選択されている

  • /OPT:LBR が選択されている

  • /ORDER が選択されている

/INCREMENTAL は、 /DEBUG が指定されている場合は暗黙的です。

以下の場合もフル リンクが行われます。

  • 増分状態 (.ilk) ファイルがありません。 (LINK は、後続の増分リンクの準備として新しい .ilk ファイルを作成します。

  • .ilk ファイルに対する書き込みアクセス許可がありません。 (LINK は .ilk ファイルを無視し、リンクを増分的に行います)。

  • .exeまたは.dll出力ファイルがありません。

  • .ilk.exe、または.dllのタイムスタンプが変更されます。

  • LINK オプションを変更した場合。 ビルド間で LINK オプションを変更すると、ほとんどの場合、フル リンクが行われます。

  • オブジェクト (.obj) ファイルが追加または省略されます。

増分リンクは、増分リンク データベース .ilk ファイルを作成または更新します。 /ILK (増分データベース ファイルの名前) リンカー オプションを使用して、このファイルの名前と場所を指定できます。 .ilk ファイルの詳細については、「リンカー入力としてファイルを.ilkする」を参照してください。

Visual Studio 開発環境でこのリンカー オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。

  2. [構成プロパティ]>[リンカー]>[全般] プロパティ ページを選択します。

  3. [インクリメンタル リンクを有効にする] プロパティを変更します。

このリンカーをコードから設定するには

  1. 以下を参照してください。LinkIncremental

関連項目

MSVC リンカーのリファレンス
MSVC リンカー オプション
.ilk リンカー入力としてのファイル