Makefile の変更

makefile を使用して gcc アプリケーションをビルドする場合、CC コンパイラー変数の値をインテル(R) コンパイラーで使用できるように変更する必要があります。また、CFLAGS で指定されたオプションも確認します。簡単な例を次に示します。

gcc makefile

# 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

インテル・コンパイラー用に変更した makefile

gcc makefile の変更箇所は黄色でハイライトされています。

# 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 でコンパイルするように指示します。また、インテル・コンパイラーでは元の makefile からの -fno-asm スイッチはサポートされていないため、このスイッチも含めています。変更された 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

 

関連情報