博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 2.6.xx 内核模块编程入门
阅读量:2435 次
发布时间:2019-05-10

本文共 1373 字,大约阅读时间需要 4 分钟。

转自:http://hi.baidu.com/liu_bin0101/blog/item/02ff1afc043443f5fd037f95.html
2.6.xx 内核与 2.4.XX内核编程有很大不同。下面这些文字简单说明一下2.6.xx下一个内核模块(Hello World)实现方法。
环境:ubuntu 704
Kernel:     2.6.20-15-generic   , 可以通过 uname -r 查看
gcc版本:     4.1.2

一. 准备工作
安装kernel 必须的开发库
#sudo apt-get install linux-kernel-devel
安装内核头文件
#sudo apt-get install linux-headers-`uname -r`
当然, gcc /make 等工具天生就是需要的。

二. 编写代码 hello.c
如下:
//------------------hello.c-------------------//

#ifndef __KERNEL__
#define __KERNEL__

#endif
#ifndef MODULE
#define MODULE
#endif

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

static int hello_init(void)
{

         printk(KERN_ALERT "Hello World!/n");
         return 0;
}

static void hello_exit(void)
{

         printk(KERN_ALERT "Bye World!/n");
}

module_init(hello_init);
module_exit(hello_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("WFJ");

//-------------------end of hello.c-------------------//

三. 编写Makefile 文件,与hello.c 放在同一个目录里
obj-m := hello.o
KERNELBUILD :=/lib/modules/`uname -r`/build
default:
         make -C $(KERNELBUILD) M=$(shell pwd) modules
clean:
         rm -rf *.o *.ko *.mod.c .*.cmd .tmp_versions
(注意makefile里面要求的tab)
四. 编译模块

#sudo make
编译模块
这时,在hello.c 所在文件夹就会有 hello.ko ,这个就是我们需要的内核模块啦,哈哈!
#sudo make clean
清理编译垃圾,hello.ko 也会清理掉,呵呵。
四. 插入模块,让其工作

#sudo insmod ./hello.ko
我们用dmesg 就可以看到 产生的内核信息啦,Hello world!

#sudo rmmod ./hello
再用dmesg 可以看到 Bye world!
这就是在2.6.xx下一个最简单的模块编写过程。

转载地址:http://sbemb.baihongyu.com/

你可能感兴趣的文章
Oracle 9i的两种工作模式(转)
查看>>
在Oracle数据库10g中跟踪SQL(转)
查看>>
Oracle 10g Release2新功能之变化通知(转)
查看>>
ORACLE之常用FAQ V1.0一(构架体系)(转)
查看>>
Oracle 10g 新特性之虚拟专用数据库(转)
查看>>
深刻理解Oracle数据库的启动和关闭(转)
查看>>
将Oracle 10g内置的安全特性用于PHP(转)
查看>>
Oracle 8i中字符集乱码问题析及其解决办法(转)
查看>>
Oracle 9i产品文档(转)
查看>>
Oracle数据库处理多媒体信息(转)
查看>>
ORACLE数据库的逻辑备份(转)
查看>>
Oracle中对两个数据表交集的查询(转)
查看>>
Oracle回滚段的概念,用法和规划及问题的解决(转)
查看>>
Oracle系统中表外键的更名(转)
查看>>
Oracle自动备份数据(转)
查看>>
为什么有时Oracle数据库不用索引来查找数据?(转)
查看>>
在不同字符集的数据库之间导入数据的方法(转)
查看>>
数据库链接的备份脚本(转)
查看>>
Oracle数据库系统紧急故障处理方法(转)
查看>>
基于Oracle的高性能动态SQL程序开发(转)
查看>>