インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
ここでは、インテルが提供するリンクツール、xild (Linux* および macOS*) と xilink (Windows*) を使用する方法を説明します。
インテルのリンクツールは、プラットフォームごとに動作が異なります。次のセクションでは、リンク動作の主な違いをまとめています。
リンク動作のまとめ (Linux* および macOS*) |
---|
IR (中間表現) を含むオブジェクトが見つかった場合、リンクツールはインテル® C++ コンパイラーを起動して IPO を実行します。これらは擬似オブジェクトです。GNU* ld を起動してアプリケーションをリンクします。 xild のコマンドラインの構文は、GNU* リンカーと同じです。 説明:
IPO を使用して app を作成する場合、o[filename]オプションを次のように使用します。
リンクツールは、IR を含むオブジェクトの IPO を実行するためにインテル® コンパイラーを呼び出し、リンクされるオブジェクトの新しい一覧を生成します。そして、リンカーは ld を呼び出して新しいリストで指定されたオブジェクト・ファイルにリンクし、o オプションで指定されたアプリケーションを生成します。リンカーは、ipo[n] および ipo-separate オプションをサポートします。 xild からサポートされているリンクオプションのリストを表示するには、次のコマンドを使用します。
|
リンク動作のまとめ (Windows*) |
---|
IR (中間表現) を含むオブジェクトが見つかった場合、リンクツールはインテル® C++ コンパイラーを起動して複数ファイル IPO を実行します。これらは擬似オブジェクトです。Microsoft* リンカー link.exe を起動し、アプリケーションをリンクします。 インテル・リンカーのコマンドライン構文は、Microsoft* リンカーと同じです。 説明:
複数ファイル IPO の実行ファイルを ipo_file.exe に格納するには、リンカーオプション out:filename を使用します。次に例を示します。
リンカーは、IR を含むオブジェクトの IPO を実行するためにインテル® コンパイラーを呼び出し、リンクされるオブジェクトの新しい一覧を生成します。リンカーは、Microsoft* link.exe を呼び出し、新しいリストで指定されたオブジェクト・ファイルにリンクして、out:[:filename] リンカーオプションで指定されたアプリケーションを生成します。 xilink からサポートされているリンクオプションのリストを表示するには、次のコマンドを使用します。
xilink.exe では link.exe のすべてのオプションを使用することができ、最後のリンク段階で link.exe に渡されます。 |
次のような状況の場合、インテルが提供するリンクツールを使用してアプリケーションをリンクする必要があります。
ソースファイルが複数ファイル IPO を有効にしてコンパイルされた場合。[Q]ipo を指定して複数ファイル IPO が有効にされた場合。
通常、アプリケーションをリンクするのに GNU* リンカー (ld) を起動する場合。
通常、アプリケーションをリンクするのに Microsoft* リンカー (link.exe) を起動する場合。
次の表は、リンクオプションに関する情報を示したものです。
リンクツールのオプション |
説明 |
---|---|
qdiag-[type]=[diag-list] |
診断情報の表示を制御します。 type は診断に対して行う処理です。設定可能な値は以下のとおりです。
diag-list は診断グループまたは ID の値です。設定可能な値は以下のとおりです。
注このオプションにより生成される診断メッセージは、/arch (Windows*)、-m (Linux* および macOS*)、または [Q]x などの一部のオプションによる影響を受けます。 |
m32 (Linux* のみ)、m64 (Linux* および macOS*) Qm32、Qm64 (Windows*) |
[Q]m32: IA-32 アーキテクチャー用のコードを生成します。-m32 オプションは、Linux* でのみ利用できます。 [Q]m64: インテル® 64 アーキテクチャー用のコードを生成します。 例えば、インテル® 64 アーキテクチャー向けに構成されたコンパイル環境で [Q]m32 を使用する場合、IPO コンパイルや最終リンクで適切なターゲットが設定されるように、リンカーのコマンドラインでも qm32 を使用する必要があります。 |