最简单的linux内核模块实例

新建一个Hello文件夹,然后建两个文件,一个是Hello.c,一个是Makefile

Hello.c的内容如下

#include        /* Needed by all modules */
#include        /* Needed for KERN_ALERT */
#include          /* Needed for the module-macros */
#include 
static int   hello_init(void)    // Module entry function specified by module_init()
 {
 printk(KERN_ALERT "Hello,world!\n");
 return 0;
 }

static void  hello_exit(void)  //Module exit function specified by module_exit()
 {
 printk(KERN_ALERT "Goodbye,cruel world!\n");
 }

module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("Dual BSD/GPL");  //should always exist or you’ll get a warning
MODULE_AUTHOR("BENSON"); //optional
MODULE_DESCRIPTION("STUDY_MODULE"); //optional

Makefile的内容如下:

obj-m +=Hello.o
KDIR:=/lib/modules/$(shell uname -r)/build
all:	
	make -C $(KDIR)  M=$(PWD)  modules
clean:	
	make -C $(KDIR)  M=$(PWD)  clean
注意: all:与下行的make之间是先换行再按Tab键,否则就报错
在Hello文件夹下执行make,

编译成功后,在Hello文件夹下会生成许多文件,其中有一个Hello.ko

加载内核模块 sudo insmod  Hello.ko

列出已有的内核模块  lsmod

移除指定模块 sudo rmmod  Hello.ko



你可能感兴趣的:(Linux)