Ubuntu Makefile:缺少分隔符
我正在尝试构建新的makefile,但遇到错误,同一makefile的代码如下:Ubuntu Makefile:缺少分隔符,ubuntu,makefile,gnu-make,Ubuntu,Makefile,Gnu Make,我正在尝试构建新的makefile,但遇到错误,同一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
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.
有人能指出我做错了什么吗
感谢缺少
ifeq
和(
括号)之间的空格。GNU文档解释了语法。缺少ifeq
和之间的空格(
括号)。GNU文档解释了语法。您需要在ifeq和(
/')
/“
您的整个makefile可以简化为以下内容,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
您需要在ifeq和
(
/'
/“
之间留出一个空格
您的整个makefile可以简化为以下内容,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
请注意,make将在执行分配之前展开$(CC)=arm linux gnueabi gcc
。$CC
在正常情况下是CC
,因此make执行CC=arm linux gnueabi gcc
,我怀疑这是否是您想要的。请注意,make将展开$(CC)=arm linux gnueabi gcc
,然后再进行分配。$CC
在正常情况下是CC
,因此make执行CC=arm linux gnueabi gcc
,我怀疑这是否是您的意图。