欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > Linux: shell: bash: Makefile:5: *** missing separator. Stop.

Linux: shell: bash: Makefile:5: *** missing separator. Stop.

2024/12/22 0:24:54 来源:https://blog.csdn.net/qq_36428903/article/details/144304440  浏览:    关键词:Linux: shell: bash: Makefile:5: *** missing separator. Stop.

如果从网上找这个的原因可能会找到一堆
https://til.linyiru.com/2018/04/make/missing-separator/

但是如果真的要看原因,就需要看make的文档或者是源代码。
比如源代码里有这么一段:

@item missing separator.  Stop.
@itemx missing separator (did you mean TAB instead of 8 spaces?).  Stop.
This means that @code{make} could not understand much of anything
about the makefile line it just read.  GNU @code{make} looks for
various separators (@code{:}, @code{=}, recipe prefix characters,
etc.) to indicate what kind of line it's parsing.  This message means
it couldn't find a valid one.#: src/read.c:1154
#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr "分隔符缺失 (你大概想用 TAB,而不是八个空格)"#: src/read.c:1156
#, c-format
msgid "missing separator"
msgstr "缺失分隔符"

源代码,如果一行的开始多几个空格,就可能导致make读到EOL。因为前几个都是无意义的字符:空格。

        /* If the word we're looking at is EOL, see if there's _anything_on the line.  If not, a variable expanded to nothing, so ignoreit.  If so, we can't parse this line so punt.  */if (wtype == w_eol){if (*p2 == '\0')continue;/* There's no need to be ivory-tower about this: check forone of the most common bugs found in makefiles...  */if (cmd_prefix == '\t' && strneq (line, "        ", 8))O (fatal, fstart, _("missing separator (did you mean TAB instead of 8 spaces?)"));elseO (fatal, fstart, _("missing separator"));}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com