- 昨天试着学习写一个内核驱动模块,安装 kernel-package后,照着《Linux设备驱动程序第三版》的helloWorld程序写了如下源码:
- #include <linux/kernel.h>
-
#include <linux/init.h>
-
#include <linux/module.h>
-
MODULE_LICENSE("Dual BSD/GPL");
-
static int __init hello_init(void){
-
printk(KERN_ALERT "hello from hello world\n");
-
return 0;
-
}
-
static void __exit hello_exit(void){
-
printk(KERN_ALERT "goodbye from hello world\n");
-
}
-
module_init(hello_init);
- module_exit(hello_exit);
- 但是上面没有给出Makefile,头疼的我只有在网上找了下,后来经过我整合后,发现如下Makefile能够通过编译
- 必须要注意的是,Makefile的大小写问题,如果你Makefile写成了makefile ,make一样会报错的。(所有操作在root下进行)
- 我的测试环境是Ubuntu10.10。然后insmod hello.ko;dmesg | tail就能看到效果啦!
- obj-m := hello.o
-
all:
-
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
-
clean:
- make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
- obj-m := hello.o