新建hello.c

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

int init_module(void)
{
    printk(KERN_INFO "Welcome.....\n");
    return 0;
} 

void cleanup_module(void)
{
    printk(KERN_INFO "Bye....\n");
} 

然后在同一目录下编写Makefile

obj-m := hello.o
all:
    make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd)
clean:
    -rm *.o *.ko Mod* mod* *.mod.c 

进入终端,切换到对应目录下

执行 make

编译完成后会得到 hello.ko//hello.ko就是编译好的模块

执行 sudo insmod hello.ko //加载模块

执行 lsmod 可以察看当前已经加载的模块,如果hello.ko已经加载,那么执行完lsmod后就可以看到已经加载好的hello.ko

执行dmesg就可以察看printk()函数的输出,此时可以看到打印出来的Welcome.. 这个信息其实是保存在/var/log/syslog这个文件中的,查看这个文件也同样能看到输出的信息Welcom...

测试完毕后执行sudo rmmod hello卸载模块即可

最新文章

  1. python自动化测试(2)-自动化基本技术原理
  2. ReactJS入门(三)—— 顶层API
  3. Linux/CentOS配置:使用yum update更新时不升级内核的方法
  4. oracle给字段添加描述
  5. hdu 2085 核反应堆
  6. syslog简介——系统日志写入API
  7. SecureCRT自动记录日志【记录键入的所有命令和打印的结果信息】
  8. Objective-C Autorelease Pool 的实现原理
  9. 关于&lt;context:property-placeholder&gt;的一个有趣现象
  10. 【O】VSS 2005上传PDF文件之后,打开提示文件损坏或者内容为空
  11. 图片支持get请求访问
  12. PHP简单工厂模式、工厂方法模式和抽象工厂模式比较
  13. 【linux】shell中命令替换$(cmd)和符号`cmd`
  14. 表达式树(Expression Tree)
  15. sam9260 闲鱼
  16. memCachedClient 客户端调用时注意的问题,坑
  17. 通过BeanFactoryPostProcessor来获取bean
  18. java中 HashMap和Hashtable,list、set和map 的区别
  19. 关于zabbix _get返回Could not attach to pid的问题
  20. bootstrap清除数据源

热门文章

  1. Atom 编辑器安装 linter-eslint 插件,并配置使其支持 vue 文件中的 js 格式校验
  2. 数据权限管理中心 - 基于mybatis拦截器实现
  3. C++符号优先级
  4. 光电转研发:和计算机没有一点关系的专业怎么去bat类的公司
  5. substr和substring的区别
  6. SVN提交时显示:Path is not a working copy directory
  7. RandomAccessFile读取文本简介
  8. salesforce lightning零基础学习(三) 表达式的!(绑定表达式)与 #(非绑定表达式)
  9. 动态SQL中不同变量的写法总结
  10. KVM 时钟分析