小编典典

makefile:4: *** 缺少分隔符。停止

all

这是我的生成文件:

all:ll

ll:ll.c   
  gcc  -c  -Wall -Werror -02 c.c ll.c  -o  ll  $@  $<

clean :
  \rm -fr ll

当我尝试make cleanormake make时,我收到此错误:

:makefile:4: *** missing separator.  Stop.

我该如何解决?


阅读 123

收藏
2022-03-03

共1个答案

小编典典

make 与标签的关系非常愚蠢。每个规则的所有操作都由选项卡标识。而且,不,四个空格不构成一个制表符。只有一个制表符才有制表符。

要检查,我使用命令cat -e -t -v makefile_name

它显示了带有 的制表符和带有 的^I行尾$。两者对于确保依赖关系正确结束和选项卡标记规则的操作至关重要,以便 make 实用程序可以轻松识别它们。

例子:

Kaizen ~/so_test $ cat -e -t -v  mk.t
all:ll$      ## here the $ is end of line ...                   
$
ll:ll.c   $
^Igcc  -c  -Wall -Werror -02 c.c ll.c  -o  ll  $@  $<$ 
## the ^I above means a tab was there before the action part, so this line is ok .
 $
clean :$
   \rm -fr ll$
## see here there is no ^I which means , tab is not present .... 
## in this case you need to open the file again and edit/ensure a tab 
## starts the action part
2022-03-03