您的位置:首页 > 运维架构 > Linux

编写入门的linux模块(Hello World)

2013-04-09 16:54 441 查看
首先在自己的目录下写源码

用VI这个工具

文件命名为hello.c

//
//hello.c
//
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>

static int hello_init(void) {
printk(KERN_WARNING "Module init: Hello world!\n");
return 0;
}

static void hello_exit(void) {
printk(KERN_WARNING "Module exit: bye-bye\n");
}

module_init(hello_init);
module_exit(hello_exit);

最后两行指定了模块加载和卸载时执行的函数,加载时执行hello_init,卸载时执行hello_exit。
写一个Makefile,内容如下(文件名也为Makefile)

obj-m = hello.o
default:
$(MAKE) -C/usr/src/kernels/2.6.18-238.el5-i686 M=$(PWD) modules
clean:
$(MAKE) -C/usr/src/kernels/2.6.18-238.el5-i686 M=$(PWD) clean

第一个路径则是要去编译的内核版本的路径      M后面的路径则是hello.c的目录

在当前目录下,编译



可从当前目录下看到生成的文件



会生成一个内核模块hello.ko。这就是我们编译好的内核模块,接下来加载它,并查看结果。

输入命令

insmod hello.ko

输入命令

dmesg

看系统日志(最后一行)

输入命令

lsmod | grep hello

也可查看

输入命令

rmmod hello 卸载模块

再次输入命令

dmesg

看系统日志

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: