Ubuntu 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

我正在尝试构建新的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 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
,我怀疑这是否是您的意图。