互換性保持のためのコンパイラ・オプション

インテル® C++ コンパイラのオプションで gcc* との互換性保持に影響するオプションは次のとおりです:

-gcc-name option

-gcc-name=name  は、-cxxlib-gcc とともに使用するオプションで、コンパイラが gcc C++ ライブラリを見つけられない場合に gcc の場所を指定します。標準の gcc インストールを行わなかった場合、このオプションを使用する必要があります。

-gcc-version option

-gcc-version=nnn  オプションは、コンパイラの動作を gcc バージョン nnn  と互換にします。-gcc-version オプションは、デフォルトでオンです。nnn  の値はシステムにインストールされた gcc のバージョンによって異なります。このオプションは、ABI との互換性が保持される gcc のバージョンを選択します。

インストールされた gcc のバージョン -gcc-version のデフォルト値
バージョン 3.2 より前 セットされません
3.2 320
3.3 330
3.4 340

-cxxlib-gcc option

-cxxlib-gcc[=GCC-root-dir] オプションは、gcc コンパイラに含まれている C++ ライブラリとヘッダファイルを使用してアプリケーションをビルドします。次のファイルをインクルードします:

オプションの引数 =GCC-root-dir を使用して、gcc バイナリとライブラリのトップレベルの場所を指定します。

インテル C++ コンパイラは、gcc 3.2、3.3、および 3.4 と互換性があります。これらのバージョンのいずれかを使用する場合、-cxxlib-gcc オプションはデフォルトでオンです。

-cxxlib-gcc オプションを使用してアプリケーションをコンパイルおよびリンクして生成された C++ オブジェクト・ファイルとライブラリは、gcc 3.2 で生成された C++ オブジェクト・ファイルおよびライブラリと相互運用可能です。これは、インテル・コンパイラで生成された C++ コードが gcc 3.2 でビルドされたサードパーティの C++ ライブラリとともに使用できることを意味します。

-cxxlib-gcc オプションは gcc 3.2 を含む Linux ディストリビューションでのみ使用することができます。これは C++ ABI 規格で必要です。

デフォルトでは、インテル C++ コンパイラは製品に含まれているライブラリとヘッダファイルを使用します。g++ でコンパイルされた (gnu C++ ヘッダに対してコンパイルされた) コードをリンクすると、ヘッダの違いにより互換性がなくなるため、実行時にエラーが発生する可能性があります。

インテル C++ ライブラリに対して 1 つの共有ライブラリをビルドし、gnu C++ ライブラリに対して 2 つ目の共有ライブラリをビルドし、1 つのアプリケーションで両方のライブラリを使用すると、2 つの C++ ランタイム・ライブラリを使用することになります。アプリケーションは両方のライブラリからシンボルを使用するため、次の問題が発生します:

インテル C++ コンパイラは 1 つのアプリケーションで複数のランタイム・ライブラリをサポートしません。

警告

複数のランタイム・ライブラリを使用してアプリケーションのコンパイルが正常に行われた場合でも、特に新しいコードが共有ライブラリに対してリンクされるとき、アプリケーションは非常に不安定になります。

アプリケーションが g++ で生成されたソースファイルとインテル C++ コンパイラで生成されたソースファイルを含む場合、-cxxlib-gcc オプションを使用するようにしてください。このオプションは、1 セットのランタイム・ライブラリでビルドするため、インテル・コンパイラに g++ ライブラリとヘッダファイルを使用するように指示します。この結果、プログラムは正常に動作するようになります。

-cxxlib-icc option

-cxxlib-icc オプションは、インテル・コンパイラに含まれている C++ ライブラリとヘッダファイルを使用してアプリケーションをビルドします。次のファイルをインクルードします:

gcc 3.2 より前のバージョンを使用している場合、-cxxlib-icc オプションはデフォルトでオンです。

-fabi-version

-fabi-version=n  オプションは、特定の ABI 実装を選択するようにコンパイラに指示します。デフォルトでは、インテル・コンパイラはインストールされた gcc のバージョンに対応する ABI 実装を使用します。gcc 3.2 および 3.3 は、ABI に完全対応していません。

n の値 説明
n=0 最新の ABI 実装を選択します
n=1 g++ 3.2 互換の ABI 実装を選択します
n=2 最も適合した ABI 実装を選択します

ABI 適合性についての詳細は、http://www.codesourcerey.com を参照してください。

GNU アセンブラとリンカの場所を指定する -Qlocation の使用方法に関する詳細は、「代替ツールと代替パスの指定」 を参照してください。