我的第一个内核模块hello.c
来源:互联网 发布:在线汉语词典 知乎 编辑:程序博客网 时间:2024/05/16 07:17
编译环境:
主机: dell n4030
操作系统:ubuntu 10.10 i386
内核:linux-2.6.35-22
第一步:编写holle.c
zengkejie@zengkejie-Inspiron-N4030:~/module$ vi hello.c
1 #include<linux/module.h>
2 #include<linux/init.h>
3 MODULE_LICENSE("GPL");
4 static int __init hello_init(void)
5 {
6 printk("Hello world!\n");
7 return 0;
8 }
9 static void __exit hello_exit(void)
10 {
11 printk("Goodbye");
12 }
13 module_init(hello_init);
14 module_exit(hello_exit);
第二步:编写makeifle
1 obj-m := hello.o
2 K:=$(shell uname -r)
3 KDIR:=/usr/src/linux-headers-$(K)
4 modules:
5 make -C $(KDIR) M=$(shell pwd) modules
6 clean:
7 rm -rf *.mod.c *.o modules.order *.ko *.mod.o Module.*
第三步; make
zengkejie@zengkejie-Inspiron-N4030:~/module$ make
make -C /usr/src/linux-headers-2.6.35-22-generic M=/home/zengkejie/module modules
make[1]: 正在进入目录 `/usr/src/linux-headers-2.6.35-22-generic'
CC [M] /home/zengkejie/module/hello.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/zengkejie/module/hello.mod.o
LD [M] /home/zengkejie/module/hello.ko
make[1]:正在离开目录 `/usr/src/linux-headers-2.6.35-22-generic'
第四步:安装模块
zengkejie@zengkejie-Inspiron-N4030:~/module$ ls
hello.c hello.mod.c hello.o modules.order
hello.ko hello.mod.o Makefile Module.symvers
zengkejie@zengkejie-Inspiron-N4030:~/module$ sudo insmod hello.ko
[sudo] password for zengkejie:
无提示,成功!
查看日志:sudo dmesg
最后一行显示:[ 1293.746472] Hello world!
第五步:移除模块
zengkejie@zengkejie-Inspiron-N4030:~/module$ sudo rmmod hello
查看日志:sudo dmesg
最后一行显示:
[ 1293.746472] Hello world!
[ 1525.828854] Goodbye
注:
参考资料:
linux内核之旅:http://www.kerneltravel.net/?p=82
fudan_abc: http://blog.csdn.net/fudan_abc/article/details/5380511
- 我的第一个内核模块hello.c
- Linux---我的第一个内核模块之Hello World
- linux内核模块编程----ubuntu下我的第一个Hello World驱动
- 我的第一个内核模块
- 经典的第一个linux内核模块编程----hello,Kernel!
- 第一个内核模块Hello Kernel
- linux 第一个内核模块Hello World
- linux 第一个内核模块Hello World
- 内核开发:第一个hello world 模块
- 第一个内核模块Hello.ko代码
- 第一个简单的内核编程实验:hello.c
- 第一个简单的内核编程实验:hello.c
- 第一个简单的内核编程实验:hello.c
- 第一个简单的内核编程实验:hello.c
- 我的第一个内核模块和makefile文件编写
- Nginx的第一个模块-Hello World
- 我的第一个 hello java
- 我的第一个程序--Hello Linux
- why gpDesc is NULL?
- 浅谈CSRF攻击方式
- iwconfig
- Balsamiq非常好用的界面设计工具
- linux安装Oracle安装界面乱码解决方法!
- 我的第一个内核模块hello.c
- WinForm使用Console窗口输出Log
- 重新安装gnome
- firefox --快捷键
- UNIX 系统的下载地址
- 分励脱扣和失压脱扣有什么区别
- 序列化简述
- 哪本书是对程序员最有影响、每个程序员都该阅读的书?
- 如何:在 ASP.NET(c#) 网页中检测浏览器类型