Linux内核模块编程
来源:互联网 发布:淘宝 延长收货使用规则 编辑:程序博客网 时间:2024/06/09 16:50
首先就是学习Linux的模块编程,照着书上的例子实现Hello.ko也经历一番波折,凡事只有自己亲自尝试过,才知道个中细节如何啊。以下记录我完成这个简单模块的编写,加载,卸载的全过程及要注意的地方。
在任意一个地方创建一个hello.c文件,里面就写如下内容:
/* 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文件:
注意Makefile的命令行必须以tab键为标准去缩进。
$(MAKE) -C $(KERNELDIR) SUBDIRS = $(PWD) modules这句啥意思?就是说首先改变目录到-C选项指定的目录(即内核源代码目录),其中保存了内核的顶层makefile文件。SUBDIRS=选项让该makefile在构造modules目标返回之前到模块源代码目录。然后,modules目标指向obj-m变量设定的模块。
然后在Linux终端执行make命令进行编译,查看输出结果:
当前目录下就会成生hello.o hello.mod.o hello.mod.c modules.order Module.markers Module.symvers hello.ko。
使用insmod ./hello.ko来加载模块,然后执行dmesg(通过查看内核态日志)命令显示打印结果
最后,使用rmmod hello来卸载模块,同样,使用dmesg可以看到打印出的"Goodbye, cruel world"。
阅读全文
1 0
- Linux内核模块编程
- Linux内核模块编程
- Linux内核模块编程
- linux内核模块编程
- Linux 内核模块编程
- Linux内核模块编程
- Linux内核模块编程
- Linux内核模块编程
- LINUX内核模块编程
- linux内核模块编程
- linux内核模块编程
- Linux内核模块编程
- Linux 内核模块 编程
- Linux内核模块编程
- Linux 内核模块编程
- Linux 内核模块编程
- Linux内核模块编程
- linux内核模块编程
- ubuntu中mysql重置root密码
- 数据结构 学习笔记(完):散列查找:散列(哈希)表,散列函数的构造,冲突处理,性能分析
- Android 左滑退出 类似微信效果
- 2016 年度区块链十大事件
- 清除浮动
- Linux内核模块编程
- 快速模式匹配算法
- Angular2文件上传
- CoordinatorLayout布局的使用方式
- linux下安装Apache服务
- MySQL---储存过程
- 网络穿透、NAT类型 、STUN TURN 协议等资料参考
- LeetCode-2:Add Two Numbers
- Linux常用命令速查字典