2016-09-17 8 views
0

不足している、同じメイクファイルのコードは以下の通りです:のMakefile:私は新しいメイクファイルを構築しようとしていますが、私はエラーが発生しましたセパレータ

ifeq($(ARCH),bbb) 
    $(CC)=arm-linux-gnueabi-gcc 
else ifeq($(ARCH),frdm) 
    $(CC)=arm-none-eabi-gcc 
else 
    $(CC)=gcc 
endif 

CFLAGS=-c 
CFLAG=-o 

all:memory.o data.o proj_1.o main.o 
    $(CC) memory.o data.o proj_1.o main.o $(CFLAG) main 

main.o: main.c 
    $(CC) main.c $(CFLAGS) 

memory.o: memory.c 
$(CC) memory.c $(CFLAGS) 

data.o:data.c 
    $(CC) data.c $(CFLAGS) 

proj_1.o:proj_1.c 
    $(CC) proj_1.c $(CFLAGS) 

clean: 
    rm -rf *o 

エラーメッセージが

test.mk:1: *** missing separator. Stop. 

ことができる人です私が間違ってやっていることを指摘していますか?

おかげ

+0

割り当てを実行する前に_make_が '$(CC)= arm-linux-gnueabi-gcc'を展開することに注意してください。 '$ CC'は通常の条件では' cc'なので、_make_は 'cc = arm-linux-gnueabi-gcc'を実行します。 – bobbogo

答えて

1

ifeqと(/'/"の間にスペースが必要です。

メークファイル全体を以下のように簡略化することができます。makeは、あなたが書いたことのほとんどを行う方法を既に知っています。

ifeq ($(ARCH),bbb) 
prefix := arm-linux-gnueabi- 
else ifeq ($(ARCH),frdm) 
prefix := arm-none-eabi- 
endif 

CC := $(prefix)$(CC) 

objects := memory.o data.o proj_1.o main.o 

main: $(objects) 
clean: ; $(RM) $(objects) main 
1

ifeq(ブラケットとの間のスペースが不足しています。 GNUのドキュメントでは、構文hereについて説明しています。

関連する問題