我正在编写一个简单的 Hello World 内核模块。我写的 Makefile 给了我这样的错误:
esp@ubuntu:~/task1-2$ make all
make -C /usr/src/linux-headers-3.13.0-35-generic SUBDIRS = /home/esp/task1-2 modules
make: ****** empty variable name. Stop.
make: ** [all] Error 2
我该如何纠正?
我的生成文件:
obj-m += task1-2.o
KDIR = /usr/src/linux-headers-3.13.0-35-generic
all:
$(MAKE) -C $(KDIR) SUBDIRS = $(PWD) modules
clean:
rm -f *.o
rm -f *.ko
rm -f *.mod.*
rm -f *.symvers
rm -f *.order
答案1
这部分(GNU) Make 手册的 9.3描述覆盖变量。
包含“=”的参数指定变量的值:“v=x”将变量 v 的值设置为 x。
问题不在于您的 makefile,而在于调用。包含的参数=
只是=
。 Make 不会将多个参数连接成一个您应该指定的参数:SUBDIRS=/home/esp/task1-2
。