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

linux2.6内核模块的编译

2014-06-06 20:30 435 查看
首先将下面的程序写进一个hello1.c的文件里:
#vim hello1.c

#include "linux/module.h"
#include "linux/kernel.h"
#include "linux/init.h"

static int __init lkp_init(void)
{
printk("<1> Hello,world!From the kernel space...\n");
return 0;
}

static void __exit lkp_cleanup(void)
{
printk("<1>Goodbye,World!Leaving kernel space...\n");

}

module_init(lkp_init);
module_exit(lkp_cleanup);
MODULE_LICENSE("GPL");
然后编写Makefile:(与hello1.c文件在同一目录下)
#vim Makefile

obj-m += hello1.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) clean
注意:两个make前要先使用Tab键空出。
最后就可以编译了,使用make就可以了。
#make

编译通过后会生成hello1.ko, hello1.o, hello1.mod.c, hello1.mod.o, Module.symvers。

使用modinfo hello1.ko命令可以查看hello1模块的信息。其命令格式为:
#modinfo hello1.ko

使用insmod hello1.ko命令可以将hello1模块加入到内核中。其命令格式为:
#sudo insmod hello1.ko

使用lsmod命令可以查看当前系统正在使用的模块信息。其命令格式为:
#sudo lsmod

使用rmmod hello1命令可以将hello1模块移出内核。其命令格式为:
#sudo rmmod hello1
阅读(209) | 评论(0) | 转发(0) |

0
上一篇:linux2.6调度分析

下一篇: 悬挂运动控制系统设计报告

相关热门文章

VMware下CentOS 6编译内核...

use 和 require 的区别

Android之JNI实践一(环境搭建...

C++中多线程Singleton的实现...

交叉编译memtester

linux 常见服务端口

【ROOTFS搭建】busybox的httpd...

xmanager 2.0 for linux配置

什么是shell

linux socket的bug??

初学UNIX环境高级编程的,关于...

chinaunix博客什么时候可以设...

一个访问量较大网站的服务器。...

收音机驱动与v4l2架构的关系,...

如何将linux驱动改为裸机驱动(...

给主人留下些什么吧!~~

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