我正在编写一个简单的 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
Run Code Online (Sandbox Code Playgroud)
我该如何纠正?
我的生成文件:
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
Run Code Online (Sandbox Code Playgroud)
(GNU) Make 手册的第9.3节描述了覆盖变量。
包含 '=' 的参数指定变量的值:'v=x' 将变量 v 的值设置为 x。
问题不在于您的 makefile,而在于调用。包含的参数=
只是=
。Make 不会将多个参数连接成一个您应该指定的参数:SUBDIRS=/home/esp/task1-2
。