linux kernel 模块化编程入门
2016-04-09 20:48
561 查看
相信hello world是所有编程语言的demo吧,linux kernel也不例外,昨天搜集了相关资料,终于完成linux 模块化编程的hello world!特此写下这个博客,记录下步骤。
编写hello world程序
编写Makefile文件
此刻,当前目录下文件为:
![](http://img.blog.csdn.net/20160410103345107)
此刻,观察当前目录下文件:
![](http://img.blog.csdn.net/20160410103958741)
将.ko文件添加到内核中
为了查看内核控制台信息,需要用到
![](http://img.blog.csdn.net/20160410104442215)
可以看到,hello world成功输出
移除模块文件,需要用到如下指令
此刻,再查看下message
![](http://img.blog.csdn.net/20160410104857245)
发现Goodbye, world成功输出、
如果想要了解具体细节,可以结合下参考资料!
参考资料:
1. tldp
2. thegeekstuff
3. youtube
编写hello world程序
#include <linux/module.h> // Needed by all modules #include <linux/kernel.h> // Needed for KERN_ALERT #include <linux/init.h> // Needed for the macros static int hello_init(void) { printk(KERN_ALERT "Hello, world \n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye, world \n"); } module_init(hello_init); module_exit(hello_exit);
编写Makefile文件
obj-m += hello.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
此刻,当前目录下文件为:
make
此刻,观察当前目录下文件:
将.ko文件添加到内核中
sudo insmod hello.ko
为了查看内核控制台信息,需要用到
dmesg指令
可以看到,hello world成功输出
移除模块文件,需要用到如下指令
sudo rmmod hello
此刻,再查看下message
发现Goodbye, world成功输出、
如果想要了解具体细节,可以结合下参考资料!
参考资料:
1. tldp
2. thegeekstuff
3. youtube
相关文章推荐
- linux基础学习之 gSOAP2.8.30在linux下的安装
- Linux 线程锁
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
- FreeBSD与Linux的比较
- Linux下关机命令,shutdown -r now reboot及halt命令的区别
- linux下GDB教程(转)
- linux系统yum常用命令
- Linux下硬链接和软链接
- linux中库文件的生成和使用
- Linux安装模式下, 磁盘分区的选择(极重要)
- 【Java学习-J.160406.0.6】笔记5-Linux基础-linux进程管理
- 10个方法助你轻松完成 Linux 系统恢复
- CentOS 7.0安装Zimbra 8.6邮件服务器
- 在 Linux 中永久修改 USB 设备权限
- 【Linux学习】epoll详解
- Linux下select, poll和epoll IO模型的详解
- Linux内核如何装载和启动一个可执行程序
- linux epoll事件模型详解
- CentOS安装gitlab,gerrit,jenkins并配置ci流程
- Linux 下wifi 驱动开发(三)—— SDIO接口WiFi驱动浅析