文件目录结构
Makefile
# 需要的系统内核路径
KERNELDIR := /lib/modules/$(shell uname -r)/build
# 现在的路径
CURRENT_PATH := $(shell pwd)
# 需要编译生成的模块名字
MODULE_NAME :=hello
# 编译时需要的文件,会自动推导出需要的.c文件
obj-m := hello.o
# 多文件编译时设置
# hello-objs := hello1.o hello2.o
# 编译目标
build: kernel_modules
kernel_modules:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
clean:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
模块.c文件
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
static int funcIn(void)
{
printk("in module\n");
return 0;
}
static void funcOut(void)
{
printk("out module\n");
return;
}
module_init(funcIn);
module_exit(funcOut);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("elfy");
操作过程
参考链接