インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
makefile を使用して gcc アプリケーションをビルドする場合、インテル® C++ コンパイラーを使用するように、gcc コンパイラー変数の値を変更する必要があります。また、CFLAGS で指定されているオプションも確認してください。次に例を示します。
gcc makefile の例 |
---|
# gcc コンパイラーを使用する CC = gcc # コンパイル時のオプション CFLAGS = -O2 -std=c99 all: area_app area_app: area_main.o area_functions.o $(CC) area_main.o area_functions.o -o area area_main.o: area_main.c $(CC) -c $(CFLAGS) area_main.c area_functions.o: area_functions.c $(CC) -c -fno-asm $(CFLAGS) area_functions.c clean: rm -rf *o area |
インテル® C/C++ コンパイラー用に変更した makefile の例 |
---|
# インテル® C コンパイラーを使用する CC = icc # コンパイル時のオプション CFLAGS = -std=c99 all: area_app area_app: area_main.o area_functions.o $(CC) area_main.o area_functions.o -o area area_main.o: area_main.c $(CC) -c $(CFLAGS) area_main.c area_functions.o: area_functions.c $(CC) -c -fno-asm $(CFLAGS) area_functions.c clean: rm -rf *o area |
gcc コードに、インテル® C++ コンパイラーでサポートされていない機能 (コンパイラー・オプション、言語拡張、マクロ、プラグマなど) が含まれている場合は、必要に応じて、これらのソースを個別に gcc でコンパイルすることができます。
上記の makefile では、area_functions.c ソースファイルに gcc 固有の機能が含まれています。インテル® C++ コンパイラーでは、O2 コンパイラー・オプションがデフォルトで使用されますが、gcc のデフォルトは O0 のため、gcc に O2 オプションでコンパイルするように指示します。また、インテル® C++ コンパイラーでは、gcc makefile にある -fno-asm オプションはサポートされていないため、このオプションも gcc のコンパイルに含めます。
インテル® C/C++ コンパイラーおよび gcc 用に変更した makefile の例 |
---|
# インテル® C コンパイラーを使用する CC = icc # icc でコンパイルできないファイルに gcc を使用する GCC = gcc # コンパイル時のオプション CFLAGS = -std=c99 all: area_app area_app: area_main.o area_functions.o $(CC) area_main.o area_functions.o -o area area_main.o: area_main.c $(CC) -c $(CFLAGS) area_main.c area_functions.o: area_functions.c $(GCC) -c -O2 -fno-asm $(CFLAGS) area_functions.c clean: rm -rf *o area |
変更した makefile による make の出力 |
---|
icc -c -std=c99 area_main.c gcc -c -O2 -fno-asm -std=c99 area_functions.c icc area_main.o area_functions.o -o area |
makefile での IPO の使用
デフォルトでは、IPO はコンパイラーによって使用されるプロシージャー間の情報を含む "仮の" オブジェクト・ファイルを生成します。これらのオブジェクト・ファイルを使用してスタティック・ライブラリーをリンクまたは作成する場合、特定のインテルにより提供されるツールが必要になります。これらのツールを makefile で使用するには、"ld" を "xild"、"ar" を "xiar" にそれぞれ置換するか、icc または icpc を使用して次のようにリンクします。
インテル® C/C++ コンパイラー用に変更した IPO を使用する makefile の例 |
---|
# インテル® C コンパイラーを使用する CC = icc # コンパイル時のオプション CFLAGS = -std=c99 -ipo all: area_app area_app: area_main.o area_functions.o $(CC) area_main.o area_functions.o -o area area_main.o: area_main.c $(CC) -c $(CFLAGS) area_main.c area_functions.o: area_functions.c $(CC) -c $(CFLAGS) area_functions.c clean: rm -rf *o area |