+ -
当前位置:首页 → 问答吧 → #include <linux/module.h> 的module在哪

#include <linux/module.h> 的module在哪

时间:2010-06-05

来源:互联网

新的内核模块编程中的make命令里有个M选项,如下:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

我查了make的document,没有发现呀M选项呀,这到底是什么意思?

M=$(PWD) 表明然后返回到当前目录继续读入、执行当前的Makefile。
http://www-128.ibm.com/developerworks/c ... -module26/

我的意思是:这个M是kbuild的东西呢,还是make本来自己就有的东西呢?

按理说,它是make的一个参数,应该是make的东西,但是make的doc里又找不到,
如果是kbuild里的东西,它应该怎样来实现呢?

M是makefile脚本中的一个变量(variable)


# Use make M=dir to specify directory of external module to build
# Old syntax make ... SUBDIRS=$PWD is still supported
# Setting the environment variable KBUILD_EXTMOD take precedence
ifdef SUBDIRS
KBUILD_EXTMOD ?= $(SUBDIRS)
endif
ifdef M //如果没有定义或赋值M,此处M未定义(undefined)
ifeq ("$(origin M)", "command line") //如果定义了,此句用来判断M是否从命令行来
KBUILD_EXTMOD := $(M)
endif
endif

作者: hady55566   发布时间: 2010-06-05

作者: lgxwqq   发布时间: 2010-06-06

M= 选项是让你的这个Makefile在构造modules目标之前返回到模块源代码目录

作者: YT11   发布时间: 2010-08-19