Linux 内核模块中的obj-m变量

Linux 内核模块中的obj-m变量,linux,makefile,linux-kernel,Linux,Makefile,Linux Kernel,在内核模块makefileobj-m中存在变量。考虑以下事项: CUR = $(shell uname -r) DIR = /lib/modules/$(CUR)/build PWD = $(shell pwd) obj-m := m1.o m2.o default: $(MAKE) -C $(DIR) SUBDIRS=$(PWD) modules 在这个Makefile中,default目标包含一个调用内核子make的配方。obj-m变量未导出到环境中,因此s

在内核模块makefile
obj-m
中存在变量。考虑以下事项:

CUR = $(shell uname -r) 
DIR = /lib/modules/$(CUR)/build 
PWD = $(shell pwd) 
obj-m   := m1.o m2.o 
default: 
        $(MAKE) -C $(DIR) SUBDIRS=$(PWD) modules 
在这个
Makefile
中,
default
目标包含一个调用内核
子make
的配方。
obj-m
变量未导出到环境中,因此
sub make
无法使用它。但是如果我们删除obj-m变量初始化,那么这个
make
不会编译
m1
m2
内核模块。所以,问题是:


在这种情况下,为什么内核子生成依赖于未导出的
obj-m
变量?

没有一个生成变量导出到环境中

SUBDIRS
被定义为make变量。 内核makefile在
子目录中查找
makefile
,读取它,并使用其中定义的任何
obj-*


(根据,你应该使用
M
而不是
SUBDIRS

谢谢你的明确回答,但是你能在我可以找到的官方文件上找到证明链接吗?