一个简单的例子,这里要注意,2.4内核模块与 2.6内核模块的编译的方式是不同的。
#include <linux/module.h> #include <linux/kernel.h> static int hello_init(void) { printk(KERN_EMERG "Hello World enter!/n"); return 0; } static void hello_exit(void) { printk(KERN_EMERG "Hello world exit!/n"); } module_init(hello_init); /* load the module */ module_exit(hello_exit); /* unload the module */
对应的Makefile
obj-m:=hello.o KERNELDIR := /lib/modules/$(shell uname -r)/build PWD:=$(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules clean: $(MAKE) -C $(KERNELDIR) M=$(PWD) clean
lsmod查看加载的module
sudo insmod hello.ko
sudo rmmod hello.ko