内核模块中的obj-m变量

时间:2014-01-15 13:59:27

标签: linux makefile linux-kernel

在内核模块中存在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目标包含调用内核sub-make的配方。 obj-m变量未导出到环境中,因此sub-make无法使用它。但是如果我们删除obj-m变量初始化,那么这个make不会编译m1m2内核模块。所以,问题是:

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

1 个答案:

答案 0 :(得分:3)

没有任何make变量导出到环境中。

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

(根据documentation,您应该使用M代替SUBDIRS。)