ifeq ($(KERNELRELEASE),)
#判断描述内核版本的KERNELRELEASE变量是否为空,只有执行了make命令的当前目录为内核源码目录时,该变量才不为空
KERNELDIR ?= /linux-2.6.29.4/linux-2.6.29.4 #定义内核路径
PWD := $(shell pwd) #获取当前模块路径
modules: #标识符,以冒号结尾,此处表示makefile文件的一个功能选项
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
#MAKE -C 内核路径 M=模块路径 modules, 该句执行内核模块的编译
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean: #删除多余文件标识
rm-rf *.o *.mod.o *.mod.c *.symvers modul*
#删除编译过程的中间文件的命令
else
obj-m := helo.o
#将hello.o编译成hello.ko模块,如果要编译其他模块时,将hello.o中的hello改为模块的文件名
endif
Linux 内核模块makefile
最新推荐文章于 2024-09-23 15:34:03 发布