Makefile:4: *** 缺少分隔符

5

可能是重复问题:
编译错误:缺少分隔符

这个愚蠢的错误让我很紧张...

这是文件...

我已经花了一个小时来找出问题所在.... 我是VIM用户。 有人能指出为什么吗?我使用tab!

谢谢。

all: hello

hello:  hello_world.c   
    gcc -Wall -o hello.exe hello_world.c

你能把你的问题中的Makefile内联吗(并标记它)? - Flexo
@Flexo 我不确定这是个好主意。我曾从stackoverflow上复制并粘贴很多代码,但当我这样做时它们似乎都有问题。我甚至在vim中设置了 set paste,但我一会儿就会这样做。 - User007
3个回答

14

含有gcc命令的行应该以制表符开始,而您似乎使用了扩展制表符(空格而不是制表符)。 在 vim 中尝试使用 set noexpandtab 。


谢谢。问题解决了。那就是真正的问题……配置不好。 - User007
@User007 很高兴能帮忙!这种情况我也遇到过很多次... :D - marcelog

3

以下是您所拥有的内容:

all: hello

hello:  hello_world.c   
    gcc -Wall -o hello.exe hello_world.c

gcc 命令前的空格必须是一个 Tab,不能是一个空格、两个空格、三个空格等其他字符,只能是一个且仅有一个制表符。


我相信我只有一个标签,但我认为marcelog关于我的vim设置是正确的。但感谢nos指出,这是一个很好的提醒。 - User007
@User007,你在问题中链接的文件中gcc命令前有4个空格。请确保你的vim设置不会将制表符转换为空格。 - nos
是的。因为我的配置让我以为它是制表符 :) 谢谢你的帮助!!! - User007

1

不,你不需要这样做!

我已经下载了你的文件——里面有四个空格,而不是制表符。 你可以在vim中运行:set list来查看它。

请删除这些空格,并用制表符代替它(按下ctrl-v ctrl-i)。

以后你可以添加

 # vim:noet

写入文件。您的默认设置将被文件中的set noexpandtab设置覆盖。


谢谢。我相信这与我的vim设置有关!(: - User007
@User007:没错!运行 :set noexpandtab,然后再尝试插入 Tab。 - Igor Chubin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接