リンカーとライブラリ

32 ビットリンカーと 64 ビットリンカー

リンカーは 32 ビットアプリケーションおよび 64 ビットアプリケーションとして提供されています。各リンカーは 32 ビットオブジェクトおよび 64 ビットオブジェクトで動作可能です。ただし、リンク編集に 32 ビットオブジェクトと 64 ビットオブジェクトを混在させることはできません。32 ビットリンカーも 64 ビットオブジェクトを生成できますが、生成されるオブジェクトのサイズは、.bss を除いて、2G バイトに制限されます。

デフォルトでは、コンパイラドライバにより 32 ビットリンカーが実行されます。このリンカーは、コマンド行をチェックして、リンク編集を完了するために 64 ビットリンカーを実行すべきかどうかを判別します。

32 ビットのリンク編集と 64 ビットのリンク編集を区別する際、通常はコマンド行オプションは必要ありません。リンカーの操作モードは、コマンド行の最初の入力再配置可能オブジェクトの ELF クラスによって制御されます。mapfile またはアーカイブライブラリからだけ行われるリンクなどの特別なリンク編集は、コマンド行オブジェクトの影響を受けません。これらのリンク編集はデフォルトで 32 ビットモードなので、64 ビットリンク編集を行うときはコマンド行オプションを指定する必要があります。

64 ビットリンカーは、次のいずれかの条件の下で実行されます。

きわめて大規模な 32 ビットオブジェクトを作成すると、32 ビットリンカーで使用可能な仮想メモリーを使い果たしてしまうことがあります。-z altexec64 オプションを指定することで、対応する 64 ビットリンカーの使用を強制できます。64 ビットリンカーは、32 ビットオブジェクトの構築に、より大きな仮想アドレス空間を提供します。


注 –

LD_ALTEXEC 環境変数を使用して、代替リンカーを指定することもできます。