开发环境
Linux系统版本:Ubuntu 18.04
工具:vim、make
注:其他linux系统也可以
编写模块文件
源码文件为helloworld.c
内容如下:
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
static int __init lkm_init(void){
printk("hello world\n");
return 0;
}
static void __exit lkm_exit(void){
printk("Goodbye\n");
}
module_init(lkm_init);
module_exit(lkm_exit);
MODULE_LICENSE("GPL");
说明:虽然文件后缀为.c,但是语法跟标准c有差异,模块编写是基于内核编写的
编写Makefile
在helloworld.c相同目录下新建Makefile文件,内容如下:
obj-m:=helloworld.o
CURRENT_PATH:=$(shell pwd)
LINUX_KERNEL:=$(shell uname -r)
LINUX_KERNEL_PATH:=/usr/src/linux-headers-$(LINUX_KERNEL)
all:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
c