模块编程在程序设计中相当重要,不过这不是我要留下的,我要说的是Linux内核的模块编程,有些人可能在编程的过程中遇到个种种问题,我也一样,下面是内核模块的一般步骤,与众好友分享:
#include
#include
#include
static int __init memtest_init(void)
{
printk("Hello
kernel!\n\n");
return
0;
}
static void __exit memtest_exit(void)
{
printk("Quit kernel!\n");
}
module_init(memtest_init);
module_exit(memtest_exit);
MODULE_LICENSE("GPL");
模块编程简单,但是Makefile文件对于初学者来说,也是一个头疼的问题,因为Makefile文件对于符号的定义很严谨,哪怕一个空格也会导致编译无法通过。
下面给出一个通用的Makefile,大家可以参阅:
#####
obj-m=hellomod.o #编译源文件生成的目标文件
CURRENT_PATH = $(shell pwd)
KERNEL_PATH = $(shell uname -r)
LINUX_KERNEL_PATH = /usr/src/linux-headers-$(KERNEL_PATH)
all:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
clean:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean
下面介绍具体的运行步骤:
1.使用make编译Makefile文件
2.加载内核模块:sudo insmod hellomod.ko
3.用dmesg打印内核模块信息
4.卸载内存模块:sudo rmmod hellomod
到此基本模块框架就介绍完了。