编译内核驱动make时的M参数

最近学习linux的驱动编写,在网上普遍用类似以下的Makefile

obj-m += target.o
KERNEL_DIR:=/path/to/the/kernel/source/dir
target.ko : source.c
    make -C $(KERNEL_DIR) M=$(PWD) modules

一直以为“M=”是make程序的参数,今天读内核的Makefile才知道原来是在这里面定义的,如下

# 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
  ifeq ("$(origin M)", "command line")
    KBUILD_EXTMOD := $(M)
  endif
endif

对make还是不熟,估计make的参数传递是传统的命令行传递格式,如-foo bar这样的,而Makefile的参数传递是以foo=bar这样的。

以上。

 

转载于:https://my.oschina.net/ydp/blog/70456

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值