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

这是我的makefile:

all:ll

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

clean :
  rm -fr ll

当我尝试make cleanmake make ,我得到这个错误:

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

我该如何解决它?


makefile与制表符有一个非常愚蠢的关系,每个规则的所有动作都由制表符标识......并且没有4个空格不制作制表符,只有制表符制作一个制表符......

检查我使用命令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

希望这可以帮助 !!


您应该始终在“选项卡”之后写入命令,而不是空白区域。

这适用于您的案例中的“gcc”行(第4行)。 你需要在gcc之前插入tab。

还请将“rm -fr ll”替换为“rm -fr ll”。 在此命令之前插入标签


在VS Code上,只需点击直角上的“Space:4”,并在编辑Makefile时将其更改为Tab。

链接地址: http://www.djcxy.com/p/61443.html

上一篇: makefile:4: *** missing separator. Stop

下一篇: Using patsubst to convert one path into another