我得到以下错误运行make:

Makefile:168: *** missing separator.  Stop.

是什么导致了这种情况?


当前回答

以下Makefile代码工作:

obj-m = hello.o

all:
    $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 

clean:
    $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

其他回答

正如在线手册中所指出的,该错误最常见的原因是当make期望制表符时,行被空格缩进。

正确的

target: 
\tcmd

其中\t为TAB (U+0009)

错误的

target:
....cmd

每一个。表示空格(U+0020)。

这是Makefile中的语法错误。如果没有看到文件本身或其中的相关部分,就很难更具体。

这是因为在PHONY后面没有冒号

不是这个,

.PHONY install
install:
    install -m0755 bin/ytdl-clean /usr/local/bin

但是这个(注意冒号)

.PHONY: install
...

再补充一个出现这种情况的原因:

$(eval VALUE)

无效,将产生“缺少分隔符”错误。

$(eval IDENTIFIER=VALUE)

是可以接受的。当我用define定义宏并尝试执行时,出现了这种错误

define SOME_MACRO
... some expression ...
endef

VAR=$(eval $(call SOME_MACRO,arg))

宏没有计算为赋值。

我在qmake生成的Makefiles中丢失了分隔符文件。我把Qt代码移植到一个不同的平台。我没有QMAKESPEC或MAKE集。这是我找到答案的链接:

https://forum.qt.io/topic/3783/missing-separator-error-in-makefile/5