この製品には 2 つのエディションがあります。
スタンダード・エディションには、以下のコンポーネントが含まれます。
<install-dir>/doc/Doc_Index.html
) が提供されています。
プロフェッショナル・エディションには、スタンダード・エディションのすべてのコンポーネントに加えて、以下のコンポーネントが含まれます。
プロフェッショナル・エディションの追加コンポーネントは、個別にインストールされ、それぞれリリースノートが含まれています。
注: インテル® C++ コンパイラーのデフォルトのインストール・パスは、/opt/intel/cc/10.1.xxx
(32 ビット) または/opt/intel/cce/10.1.xxx
(64 ビット) です。ここで、xxx
は 3 桁のビルド番号です。このドキュメントでは、デフォルトのインストール・パスを <install-dir>
として表記しています。
テクニカルサポートを受けたり、製品のアップデート・モジュールを入手するには、製品を登録する必要があります。製品の登録方法は、この後にある「テクニカルサポート」セクションを参照してください。
このセクションでは、インテル® C++ コンパイラー 10.0 以降の新機能および変更点について説明します。インテル® デバッガーのリリースノートも参照してください。
以下に、バージョン 9.1 以降に変更または追加されたコマンドライン・オプションをリストします。これらのオプションの詳細な情報は、コンパイラーのドキュメントを参照してください。
-alias-const[-]
-[no-]check-uninit
-cxxlib-nostd
-diag-<type> <diag-list>
-diag-dump
-diag-enable port-win
-diag-enable sv[1|2|3]
-diag-enable sv-include
-diag-file[=file]
-diag-file-append[=file]
-[no-]diag-id-numbers
-dumpmachine
-f[no-]align-functions[=n]
-fast
-fargument-noalias-global
-f[no-]exceptions
-f[no-]instrument-functions
-f[no-]jump-tables
-f[no]-keep-static-consts
-fmudflap
-fp-speculation=<mode>
-gcc-sys
-help [category]
-[no-]inline-calloc
malloc()
および memset()
への呼び出しとして calloc()
へのインライン呼び出しを行うようコンパイラーに指示します。(デフォルト: オフ) -ipo-jobs<n>
-m32
-m64
-msse3
-nostdinc++
-[no-]opt-class-analysis
-opt-malloc-options=n
malloc()
の代替アルゴリズムを指定します。(デフォルト: 0
) -[no-]opt-multi-version-aggressive
-opt-ra-region-strategy [=keyword]
default
) -opt-streaming-stores keyword
auto
) -[no-]par-runtime-control
-par-schedule-<keyword>[[]n]
-save-temps[-]
-shared-intel
libguide
を除くすべてのライブラリーを静的にリンク)-static-intel
libguide
を除くすべてのライブラリーを静的にリンク)-tcheck [<mode>]
-trigraphs
-[no-]unroll-aggressive
-[no-]vec-guard-write
-Weffc++
-W[no-]missing-declarations
-Wnon-virtual-dtor
-Wreorder
-W[no-]strict-prototypes
-Wunused-variable
-Wwrite-strings
const char *
が (非 const) char *
に変換された場合に診断メッセージを出力します。(デフォルト: オフ)推奨されていない (現在はサポートされているが、将来のバージョンでは削除される予定の) コマンドライン・オプション、または削除された (サポートが終了した) コマンドライン・オプションの詳細は、ドキュメントの「コンパイラー・オプション」 > 「推奨されていないコンパイラー・オプション (古いオプション) と削除されたコンパイラー・オプション」を参照してください。
-fast
の変更
-fast
オプションは、一般的にランタイム・パフォーマンスを向上させるオプションのセットを指定するための簡単な方法です。ドキュメントに記載されているように、オプションのセットは変更されることがあります。-fast
は、バージョン 10.0 では -xT
を設定しますが、以前のバージョンでは -xP
を設定します。この変更により不都合が生じる場合は、-fast
を使用する代わりに、各オプションを個別に設定する必要があります。詳細は、ドキュメントの「コンパイラー・オプション」を参照してください。
多くのコマンドライン・オプションでは、オプション名でハイフン ("-") の代わりに、古い記述方法の下線 ("_") を使用しています。この古い記述方法は、まだ有効です。
このバージョンには、インテル® 64 対応プロセッサー・ベースの Mac システム向けにコードを生成するコンパイラーと、IA-32 プロセッサー・ベースの Mac システム向けにコードを生成するコンパイラーが含まれています。
このバージョンでは、最適化の可能性を広げるために内部表現が単純化され、例外処理が完全に再設計されています。以下の点が改善されています。
Mudflap は、コンパイル時のインストルメンテーションに基づき、ポインターの使用方法をチェックするための技術です。安全ではない可能性があるさまざまな C/C++ 構造に対して保護コードを追加し、ランタイム時に実際のエラー箇所を検出します。検出されるエラーは次のとおりです。
C++ クラス階層解析は、C++ クラス階層情報を使用してコンパイラーに情報を提供します。これにより、コンパイル時により多くの仮想関数が解決可能となり、パフォーマンスが向上します。
cpu_dispatch
キーワードおよび cpu_specific
キーワードで、インテル® Core™2 プロセッサーおよびストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 対応のインテル® Xeon® プロセッサー用の cpuid コード core_2_duo_ssse3
を使用できるようになりました。
このバージョンでは、メモリーおよびループの最適化を行う最適化レベル O2
と O3
で、並列化とベクトル化を統合するように最適化機構が完全に再設計されています。
次の改善により、パフォーマンスの大幅な向上が期待できます。
ループ変換 (HLO) の最適化レポートは、ループ変換 (交換) を適用できなかった原因を示し、検出されたボトルネックが、ソースの変更により排除できる場合はループ変換を推奨します。これらのレポートは、より詳細な情報を提供し、理解しやすいように強化されています。
new
演算子の動作変更C++ の new
演算子では、括弧で囲まれた型の直後に配列インデックスを使用することはできません。次に例を示します。
int main()
{
char *p1 = new (char *)[20]; // array index is not allowed after ")"
return 0;
}
以前のバージョンのインテル® C++ コンパイラーでは、配列インデックスは作成する型の一部とみなされ、コンパイラーおよび対象となる互換性バージョンにより、次のいずれかとして処理されました。
new ((char*)[20])
または
(new (char *))[20]
このバージョンでは、このような誤った使用をエラーとみなすように変更されています。
-std=c99
および -std=c89
の動作変更 -std=c99
オプションまたは -std=c89
オプションを使用する場合、インテル® コンパイラー 10.1 の動作は gcc と同じで、__STRICT_ANSI__
マクロを事前に定義します。アプリケーションがコンパイルエラーとなり、以前のバージョンの動作を使用する場合は、コマンドラインに -U__STRICT_ANSI__
を追加してください。
スタティックの検証は、複数のソースファイルに渡ってプログラムを静的に解析する新しい機能です。ユーザーコード内のさまざまな不具合や言語機能と矛盾している箇所を特定して、重要度に応じて報告します。スタティックの検証は、C/C++ および Fortran のコードを理解し、OpenMP 宣言子の解析も行います。
本リリースでは、スタティックの検証を有効にすると、リンカーが起動されず、実行ファイル、スタティック・リンク・ライブラリー、またはダイナミック・リンク・ライブラリーが生成されません。スタティックの検証により生成されるオブジェクト・ファイルは有効なものではなく、実際の実行ファイル、スタティック・リンク・ライブラリー、またはダイナミック・リンク・ライブラリーの生成には使用できません。現在の使用モデルでは、スタティックの検証は診断レポートを生成するための代替ビルドオプションとして追加されています。
詳細は、ドキュメントの「アプリケーションのビルド」 > 「エラー処理」 > 「コンパイル時エラー処理」 > 「スタティックの検証診断オプションの使用」を参照してください。
IDE 内でスタティックの検証サポートを有効にすると、最終的なビルドターゲット (例: 実行ファイル) は作成されません。スタティックの検証が必要な場合は、デバッグ (開発) 構成のコピーを作成して、スタティックの検証構成を別途作成することを推奨します。
-ansi
は -fp-port
を意味しなくなりました 以前のバージョンのコンパイラーでは、-ansi
スイッチは -fp-port
を意味していました。バージョン 10.1 では、-ansi
は -fp-port
を意味しなくなりました。そのため、特に x87 命令を使用する浮動小数点の演算において、コンパイラーは -ansi
でより効率的なコードを生成できるようになりました。代入時およびキャスト時に、浮動小数点データをソースの精度に丸める必要がある場合は、-fp-port
と -ansi
を併用してください。
バージョン 9.1 では、コンパイラーは、asm 宣言により作成された関数名の前に下線を追加していました。これは、Linux* における gcc の動作と同じですが、Mac OS における gcc の動作とは異なっていました。バージョン 10.1 では、下線は追加されなくなりました。
注:
コンパイラーのインストールおよびコンパイラー環境の設定についての情報は、『インストール・ガイド』を参照してください。
.o
ファイルの保存Xcode 2.3 から、Dwarf 形式のデバッグ情報がオブジェクト (.o
) ファイルに保存されます。デバッガーは、これらのオブジェクト・ファイルにアクセスして、デバッグ中のアプリケーションに関する情報を取得します。そのため、シンボリック・デバッグには、これらのファイルが必要です。
次のように、1 つのコマンドでプログラムがコンパイルおよびリンクされている場合、
icc -g -o hello.exe hello.c
コンパイラーによってオブジェクト・ファイルが生成されますが、コマンドが終了する前に削除されます。
このようなアプリケーションをデバッグするには、-save-temps
コンパイラー・スイッチを使用して、.o
ファイルを削除しないようコンパイラーに指示します。
例:
icc -g -save-temps -o hello.exe hello.c
アプリケーションを 2 つのステップに分けて、.o
ファイルの生成を明示的に指定してビルドする場合、このスイッチは必要ありません。
例:
icc -c -g -o hello.o hello.c
icc -g -o hello.exe hello.o
インテル® コンパイラーでコンパイルしたアプリケーションをリンクするとき、ld
から次のような警告が表示されることがあります。
ld: warning suggest use of -bind_at_load, as lazy binding may result in errors or different symbols being used
symbol _fdim used from dynamic library /usr/lib/system/libmathCommon.A.dylib(single module) not from earlier dynamic library libimf.dylib(fdim_stub.o)
[…]
この警告は、libimf.dylib
と libmathCommon.A.dyblib
の両方で 16 のシンボルが見つかると表示されます。これは、インテル® ライブラリーを動的にリンクした場合 (デフォルト) に発生します。インテル® ライブラリーを静的にリンクした場合、警告は表示されません。しかし、警告が表示された場合でも、シンボルが実行可能ファイルの libimf.dylib
またはリンクしたダイナミック・ライブラリーから正しくリンクされていることを確認しています。したがって、これらの警告メッセージは無視してかまいません。
"otool -vH <executable>"
を使用して、シンボルがどのダイナミック・ライブラリーによって解決されたか確認することができます。
Library not loaded
エラーインテル® コンパイラーでビルドしたアプリケーションの実行中に、次のようなエラーが表示されることがあります。
dyld:Library not loaded:libsvml.dylib
reason: image not found
このエラーは、インテルのダイナミック・ライブラリーが見つからないときに表示されます。この問題を解決するには、次の操作を行ってください。
Groups & files
] ペインで [Executables
] を展開します。 Info
] を選択して、[Arguments
] ダイアログボックスを表示します。 DYLD_LIBRARY_PATH
環境変数を定義または修正して、値にパス /opt/intel/cc/10.1.xxx/lib
を追加します。インストール時にコンパイラーの登録を行わなかった場合は、インテル® ソフトウェア開発製品レジストレーション・センターで登録してください。登録を行うことで、サポートサービス期間 (通常は 1 年間) の間、すべてのアップデートと新しいバージョンの入手を含む、インテル® プレミアサポートのすべての機能にアクセスできます。
テクニカルサポート、製品のアップデート、ユーザーフォーラム、FAQ、ヒント、およびその他のサポート情報は、http://www.intel.com/software/products/support/cmac を参照してください。
注: 代理店がテクニカルサポートを提供している場合は、インテルではなく代理店にお問い合わせください。
Submit Issue
] リンクをクリックします。
Product Type
] ドロップダウン・リストから [Development Environment (tools,SDV,EAP)
] を選択します。
Product Name
] ドロップダウン・リストから [Intel® C++ Compiler for Mac OS* X
] を選択します。
注: 特定の国へのアクセスを制限する必要があるソースコードを送信する場合は、ソースコードを送信する前にサポート担当者までお問い合わせください。
下記のコマンドで、インテル® C++ コンパイラーのパッケージ ID を取得します。
> icc -V
出力された「Package ID」(例: m_cc_x_10.1.xxx
) をインテル® プレミアサポートの適切なフィールドにコピーします。また、問題の解決に役立つと思われる事項はすべてお伝えください。
<package ID>_README
(例: m_cc_x_10.1.xxx_README
) を参照してください。
Compiler Error Source Reducer (CESR) は、C/C++ または Fortran ソースコードで構成されたテストケースの収集、縮小、特定、保護、文書化、およびバンドルを行うユーティリティーのセットです。大規模なアプリケーションからインテル® プレミアサポートに送信する小さなテストケースを抽出する場合に便利です。CESR は、インテル® ソフトウェア開発製品レジストレーション・センターの [製品のダウンロード] からダウンロードできます。製品を選択して、バージョンのドロップダウンから [CESR] を選択します。CESR は試験的に提供されているもので、サポートは提供されておりません。CESR に関するご意見およびご感想は、インテル® プレミアサポートまでお寄せください。CESR を利用するには、Python* 2.2 またはそれ以降をあらかじめインストールしておく必要があります。
インテル® C++ コンパイラーには、さまざまなドキュメントが含まれています。<install-dir> フォルダーにあるファイルエイリアスを開いて利用可能なドキュメントの一覧を表示できます。ファイルエイリアスは、Intel® C++ Compiler Documentation です。(エイリアス・ターゲット・ファイルは <install-dir>/doc/Doc_Index.html です。)
『インテル® C++ コンパイラー 10.1 Mac OS* X 版入門ガイド』の手順を実行することで、コンパイラーの操作方法を素早く理解することができます。<install-dir> フォルダーにあるファイルエイリアスを開いて入門ガイドを表示できます。ファイルエイリアスは、Getting Started with the Intel® C++ Compiler です。(エイリアス・ターゲット・ファイルは <install-dir>/doc/Getting_Started.html です。)
インテル® ソフトウェア開発製品の詳しい情報については、http://www.intel.co.jp/jp/software/products/ を参照してください。
本資料に掲載されている情報は、インテル製品の概要説明を目的としたものです。本資料は、明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず、いかなる知的財産権のライセンスを許諾するためのものではありません。製品に付属の売買契約書『Intel's Terms and Conditions of Sale』に規定されている場合を除き、インテルはいかなる責を負うものではなく、またインテル製品の販売や使用に関する明示または黙示の保証 (特定目的への適合性、商品性に関する保証、第三者の特許権、著作権、その他、知的所有権を侵害していないことへの保証を含む) にも一切応じないものとします。インテルによる書面での同意がない限り、インテル製品は、インテル製品の停止を起因とする人身傷害または死亡を想定して設計されていません。
インテル製品は、予告なく仕様や説明が変更される場合があります。機能または命令の一覧で「留保」または「未定義」と記されているものがありますが、その「機能が存在しない」あるいは「性質が留保付である」という状態を設計の前提にしないでください。これらの項目は、インテルが将来のために留保しているものです。インテルが将来これらの項目を定義したことにより、衝突が生じたり互換性が失われたりしても、インテルは一切責任を負いません。この情報は予告なく変更されることがあります。この情報だけに基づいて設計を最終的なものとしないでください。
本資料で説明されている製品には、エラッタと呼ばれる設計上の不具合が含まれている可能性があり、公表されている仕様とは異なる動作をする場合があります。現在確認済みのエラッタについては、インテルまでお問い合わせください。
最新の仕様をご希望の場合や製品をご注文の場合は、お近くのインテルの営業所または販売代理店にお問い合わせください。
本書で紹介されている注文番号付きのドキュメントや、インテルのその他の資料を入手するには、1-800-548-4725 (アメリカ合衆国) までご連絡いただくか、インテルの Web サイトを参照してください。
Intel、インテル、Intel ロゴ、Intel Core、Xeon は、アメリカ合衆国およびその他の国における Intel Corporation の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
© 2007 Intel Corporation. 無断での引用、転載を禁じます。