makefile を使用して gcc* アプリケーションをビルドする場合、インテル® コンパイラーを使用するように、CC コンパイラー変数の値を変更する必要があります。また、CFLAGS で指定されているオプションも確認してください。簡単な例を次に示します。
# Use gcc compiler
CC = gcc
# Compile-time flags
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
# Use Intel C compiler
CC = icc
# Compile-time flags
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
gcc コードに、コンパイラー・オプション、言語拡張、マクロ、プラグマなどインテル® コンパイラーでサポートされていない機能が含まれている場合は、必要に応じて、これらのソースを個別に gcc でコンパイルすることができます。
上記の makefile では、area_functions.c ソースファイルに gcc 固有の機能が含まれています。インテル® コンパイラーでは、-O2 コンパイラー・オプションがデフォルトで使用されますが、gcc のデフォルトは -O0 のため、gcc に -O2 でコンパイルするように指示します。また、インテル® コンパイラーでは、gcc makefile にある -fno-asm スイッチはサポートされていないため、このスイッチも gcc のコンパイルに含めます。変更された 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