Makefile: 缺少分隔符

11
#kernel build system and can use its lanauge
ifneq($(KERNELRELEASE),)
 obj-m:=helloworld.o
else
 KDIR:= /lib/modules/2.6.33.3-85.fc13.i686/build
all:
 make -C $(KDIR) M=$(PWD) modules
clean:
 rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif

错误提示如下:

makefile:2:*** missing separator . stop

但是对于ifneq($(KERNELRELEASE),),如果我在前面加上一个制表符,则会出现另一个错误:

makefile:2: ***commands commence before first target. stop

4个回答

24

ifneq( 之间必须有一个空格。

TAB 前缀表示它是一个 shell 命令,因此请确保 shell 命令 (makerm) 以 TAB 开头,而所有其他行,如 ifneq,则不要以 TAB 开头。


1
Make在抱怨第二行没有以制表符开头。您的IDE /文本编辑器可能会将空格保存为制表符字符的等价物。要么配置IDE使用制表符,要么使用像vim或nano这样的简单编辑器,并将第二行前导空格替换为制表符。

0

在进行编程前,请检查obj-m:KDIR:等是否使用了制表符而非空格。


0

你缺少了条件语句的第二部分,ifneq($(KERNELRELEASE),)后面需要有逗号后的内容,例如"2.6.17"。


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