C 生成文件错误:意外的行尾

C 生成文件错误:意外的行尾,c,makefile,C,Makefile,我读过类似的问题,但找不到解决问题的方法。下面是有问题的makefile: EXE = proj05 SOURCES = proj05.support.c proj05.driver.c OBJECTS := $(SOURCES:%.c=%.o) CCFLAGS = -Wall $(EXE): $(OBJECTS) <tab>$(CC) $^ -o $@ o clean: <tab>$(RM) $(EXE) $(OBJECTS) EXE=proj05 SOURCES=

我读过类似的问题,但找不到解决问题的方法。下面是有问题的makefile:

EXE = proj05
SOURCES = proj05.support.c proj05.driver.c
OBJECTS := $(SOURCES:%.c=%.o)
CCFLAGS = -Wall

$(EXE): $(OBJECTS)
<tab>$(CC) $^ -o $@ o
clean:
<tab>$(RM) $(EXE) $(OBJECTS)
EXE=proj05
SOURCES=proj05.support.c proj05.driver.c
对象:=$(源:%.c=%.o)
CCFLAGS=-Wall
$(EXE):$(对象)
$(CC)$^-o$@o
清洁:
$(RM)$(EXE)$(对象)
当我尝试运行make时,我得到一个错误,第4行显示“意外看到行尾”。发生什么事了


编辑:我更改了疯狂的重复内容,但仍然得到相同的错误。

第一个命令中的一美元是怎么回事

<tab>$(CC) >>$<< $(CC) ...

$(CC)>$第一个命令上的一美元是怎么回事

<tab>$(CC) >>$<< $(CC) ...

$(CC)>$第一个命令上的一美元是怎么回事

<tab>$(CC) >>$<< $(CC) ...

$(CC)>$第一个命令上的一美元是怎么回事

<tab>$(CC) >>$<< $(CC) ...
$(CC)>$第4行有点误导,但这是使语法分析器的
$(EXE)
规则的行 在决定不能再继续之前,我已经到了。正如@jia103所暗示的那样 到,在$(EXE)规则中有一个虚假的
$
。您还拥有出现的内容 编译器标志语法不正确-不应该有任何空格 在
-
o
之间形成输出参数
-o$@

我可以推荐以下规则而不是
$(EXE)
clean
规则吗 你有吗

%.o: %.c
<tab>$(CC) $(CFLAGS) -o $@ $<

$(EXE): $(OBJECTS)
<tab>$(CC) $(CFLAGS) -o $@ $(OBJECTS)

clean:
<tab>$(RM) $(EXE) $(OBJECTS)
%.o:%.c
$(CC)$(CFLAGS)-o$@$<
$(EXE):$(对象)
$(CC)$(CFLAGS)-o$@$(对象)
清洁:
$(RM)$(EXE)$(对象)
(记住更改为实际制表符…)

最后一件事——如果您使用的是Solaris和Sun Make,那么您的c编译器很有可能就是Solaris Studio。在这种情况下,
-Wall
标志不起作用-这是一个gcc标志。发出
cc-flags
以查看Studio C提供了哪些选项。

第4行有点误导,但这正是构成语法分析器的
$(EXE)
规则的第行 在决定不能再继续之前,我已经到了。正如@jia103所暗示的那样 到,在$(EXE)规则中有一个虚假的
$
。您还拥有出现的内容 编译器标志语法不正确-不应该有任何空格 在
-
o
之间形成输出参数
-o$@

我可以推荐以下规则而不是
$(EXE)
clean
规则吗 你有吗

%.o: %.c
<tab>$(CC) $(CFLAGS) -o $@ $<

$(EXE): $(OBJECTS)
<tab>$(CC) $(CFLAGS) -o $@ $(OBJECTS)

clean:
<tab>$(RM) $(EXE) $(OBJECTS)
%.o:%.c
$(CC)$(CFLAGS)-o$@$<
$(EXE):$(对象)
$(CC)$(CFLAGS)-o$@$(对象)
清洁:
$(RM)$(EXE)$(对象)
(记住更改为实际制表符…)

最后一件事——如果您使用的是Solaris和Sun Make,那么您的c编译器很有可能就是Solaris Studio。在这种情况下,
-Wall
标志不起作用-这是一个gcc标志。发出
cc-flags
以查看Studio C提供了哪些选项。

第4行有点误导,但这正是构成语法分析器的
$(EXE)
规则的第行 在决定不能再继续之前,我已经到了。正如@jia103所暗示的那样 到,在$(EXE)规则中有一个虚假的
$
。您还拥有出现的内容 编译器标志语法不正确-不应该有任何空格 在
-
o
之间形成输出参数
-o$@

我可以推荐以下规则而不是
$(EXE)
clean
规则吗 你有吗

%.o: %.c
<tab>$(CC) $(CFLAGS) -o $@ $<

$(EXE): $(OBJECTS)
<tab>$(CC) $(CFLAGS) -o $@ $(OBJECTS)

clean:
<tab>$(RM) $(EXE) $(OBJECTS)
%.o:%.c
$(CC)$(CFLAGS)-o$@$<
$(EXE):$(对象)
$(CC)$(CFLAGS)-o$@$(对象)
清洁:
$(RM)$(EXE)$(对象)
(记住更改为实际制表符…)

最后一件事——如果您使用的是Solaris和Sun Make,那么您的c编译器很有可能就是Solaris Studio。在这种情况下,
-Wall
标志不起作用-这是一个gcc标志。发出
cc-flags
以查看Studio C提供了哪些选项。

第4行有点误导,但这正是构成语法分析器的
$(EXE)
规则的第行 在决定不能再继续之前,我已经到了。正如@jia103所暗示的那样 到,在$(EXE)规则中有一个虚假的
$
。您还拥有出现的内容 编译器标志语法不正确-不应该有任何空格 在
-
o
之间形成输出参数
-o$@

我可以推荐以下规则而不是
$(EXE)
clean
规则吗 你有吗

%.o: %.c
<tab>$(CC) $(CFLAGS) -o $@ $<

$(EXE): $(OBJECTS)
<tab>$(CC) $(CFLAGS) -o $@ $(OBJECTS)

clean:
<tab>$(RM) $(EXE) $(OBJECTS)
%.o:%.c
$(CC)$(CFLAGS)-o$@$<
$(EXE):$(对象)
$(CC)$(CFLAGS)-o$@$(对象)
清洁:
$(RM)$(EXE)$(对象)
(记住更改为实际制表符…)


最后一件事——如果您使用的是Solaris和Sun Make,那么您的c编译器很有可能就是Solaris Studio。在这种情况下,
-Wall
标志不起作用-这是一个gcc标志。发出
cc-flags
以查看Studio C提供了哪些选项。

不同部分之间不需要空白行吗?James的代码段有
%.o:
目标,后跟一个空行,后跟
$(EXE):
目标,后跟一个空行,后跟
清除:
目标

现在我再想一想,我认为空白行不是可选的。< /P>
在代码段中,尝试在以
开头的代码和以
clean:

开头的代码之间放置一个空行。在不同的部分之间不需要空行吗?James的代码段有
%.o:
目标,后跟一个空行,后跟
$(EXE):
目标,后跟一个空行,后跟
清除:
目标

现在我再想一想,我认为空白行不是可选的。< /P> 在代码段中,尝试在以
开头的代码和以
c开头的代码之间放置一个空行