我的makefile是
obj - m+= jurgen.o
all:
[Tab] -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
[Tab] -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
答案 0 :(得分:3)
你的间距看起来很奇怪。
第1行是
obj - m+= jurgen.o
我希望
obj-m += jurgen.o
您可以简化文件的其余部分:
.PHONY:%
all: modules
build_dir = /lib/modules/$(shell uname -r)/build
%:
$(MAKE) -C $(build_dir) M=$(PWD) $@
我减少了重复,并将构建目录放入一个可覆盖的变量中,以便您可以编译任何具有标题的内核,而不仅仅是当前运行的内核。我还添加了.PHONY
,因此名为all
或clean
的文件不会阻止Make执行其工作。
答案 1 :(得分:3)
“标准”模块Makefile:
obj-m := jurgen.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -rf *.o *.ko *.mod.* *.symvers *.order