Linux内核模块编程——Hello World模块
发布日期:2025-04-08 11:43:27 浏览次数:15 分类:精选文章

本文共 1103 字,大约阅读时间需要 3 分钟。

Linux内核模块编程


编程环境

Ubuntu 16.04 LTS

什么是模块

内核模块的全称是动态可加载内核模块(Loadable Kernel Modul,KLM),可以动态载入内核,让它成为内核代码的一部分。

一个模块一般由一组函数和数据结构组成。

如何编写最简单的Hello World模块
  • 首先要创建一个工作目录,取名叫hello,在命令行输入如下命令
mkdir hellocd hello
  • hello.c代码如下:
#include
//每个模块都要包括的头文件#include
//用到了printk()函数#include
MODULE_LICENSE("GPL"); //没有指定license会出现errorstatic int hello_init(void) //static使得该文件以外无法访问{ printk(KERN_ALERT "Hello World\n"); //只能使用内核里定义好的C函数,printk会根据日志级别将指定信息输出到控制台或日志文件中,KERN_ALERT会输出到控制台 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.oKERNEL_DIR := /lib/modules/$(shell uname -r)/build   //指定内核源码PWD := $(shell pwd)  //指向当前目录all:    make -C $(KERNEL_DIR) M=$(PWD) modulesclean:    make -C $(KERNEL_DIR) M=$(PWD) clean
检验模块工作情况

在命令行输入:

modinfo hello.ko    //modinfo用来查看模块信息insmod hello.ko    //加载模块lsmod   //查看已经载入的模块,看看有没有hello!dmesg   //如果成功应该可以看到最后一行输出了hello worldrmmod hello   //卸载模块

大功告成✔

转载于:https://www.cnblogs.com/MartinLwx/p/10628530.html

上一篇:Linux内核源码分析(强烈推荐收藏!)
下一篇:Linux内核架构详解

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月24日 05时16分20秒