#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:***缺少分隔符。停止
但是对于ifneq($(KERNELRELEASE),)
,如果我之前添加了标签,则会出现另一个错误:
makefile:2:***命令在第一个目标之前开始。停止
答案 0 :(得分:21)
ifneq
和(
之间必须有空格。
TAB前缀表示它是一个shell命令,因此请确保shell命令(make
和rm
)以TAB开头,而所有其他行(例如ifneq
不是从TAB开始。
答案 1 :(得分:1)
Make抱怨第二行不以标签开头。您的IDE / texteditor可能使用空格保存文件,等同于制表符。将IDE配置为使用制表符,或使用vim或nano等简单编辑器,并使用制表符替换第二行的前导空格。
答案 2 :(得分:0)
在obj-m:
和KDIR:
之前检查等。您的标签是否作为空格插入?
答案 3 :(得分:0)
你错过了条件ifneq的第二部分($(KERNELRELEASE),)需要在逗号之后有一些东西,比如“2.6.17”(例如)。