インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

makefile の変更

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