Linux 内核模块中的obj-m变量
在内核模块makefileLinux 内核模块中的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
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
)谢谢你的明确回答,但是你能在我可以找到的官方文件上找到证明链接吗?