一. 建立文件夹hello,在里面建立hello.c 和 Makefile
二. 编写hello.c
#include <linux/init.h>
#include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT"hello,world\n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT"Goodbye,cruel world\n"); } module_init(hello_init); module_exit(hello_exit);
|
三.编写Makefile
(NOTE:ifneq后面一定要加一个空格,要不然不能编译成功!)
Makefile 中 M 要大写
ifneq ($(KERNELRELEASE),) obj-m := hello.o else KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD :=$(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules endif
|
四. 编译
在hello 文件夹中执行make.
[root@localhost hello]# make
生成如下文件
[root@localhost hello]# ls
hello.c hello.ko hello.mod.c hello.mod.o hello.o makefile
五.驱动加载,驱动卸载,信息查看
加载 insmod hello.ko
卸载 rmmod hello
信息查看 /var/log/messages
注:
Makefie 也可以这样:
obj-m := hello.o
然后
[root@localhost hello]# make -C /lib/modules/2.6.23.1.42.fc8/build M=/usr/project/hello/ modules
也可以编译成功
阅读(504) | 评论(0) | 转发(0) |