Chinaunix首页 | 论坛 | 博客
  • 博客访问: 144950
  • 博文数量: 57
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 630
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 09:12
文章分类

全部博文(57)

文章存档

2008年(57)

我的朋友

分类: LINUX

2008-11-26 17:47:58

一. 建立文件夹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) |
给主人留下些什么吧!~~