Linux驱动入门—第一个驱动之 Makefile文件分析

ifneq ($(KERNELRELEASE),)        #注释make命令后KERNELRELEASE没有定义,所以执行先else
MODULE_NAME = hellomodule
$(MODULE_NAME)-objs := hello1.o hello2.o   #表示hellomodule.o由1,2链接成
obj-m := $(MODULE_NAME).o                         #表示编译链接后生成hellomodule.ko模块
else
KERNEL_DIR = /lib/modules/$(shell uname -r)/build     #获取内核源码路径
MODULEDIR := $(shell pwd)                                         #获取当前驱动模块源码路径

.PHONY: modules
default: modules

modules:
    make -C $(KERNEL_DIR) M=$(MODULEDIR) modules

#make -C 跳转到指定目录,执行指定目录下面的Makefile文件。此文件里面定义了KERNELRELEASE变量

#M=$(PWD) 意思是返回到当前目录继续读入、执行当前的Makefile。   M是内核顶层Makefile文件中定义的变量

#“M=”选项的作用是,当用户需要以某个内核为基础编译一个外部模块的话,需要在make modules 命令中加入“M=dir”,程序会自动到你所指定的dir目录中查找模块源码,将其编译,生成KO文件。

clean :
    rm -f *.o *.mod.c .*.*.cmd *.ko
    rm -rf .tmp_versions
endif

终端中执行make命令后不会执行clean

 

【补充】

Makefile 文件使用大写M。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值