一个简单的linux内核模块编译示例,基于linux 2.6.**版本
代码如下:
/* hello.c
* linux module test
*/
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
static int hello_init(void)
{
printk(KERN_ALERT "hello,world./n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "hello,world./n");
return;
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
Makefile文件代码如下,linux 2.6.×的内核采用KBuild来编译内核模块:
obj-m := hello.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
然后在terminal里执行:
//假设cd到代码路径下
# make
编译成功后可以看到生成了hello.ko,就可以使用insmod/rmmod命令加/卸载模块了,如下:
#ismod hello.ko
#cat /proc/modules //查看加载模块
#rmmod hello //卸载