#1.编写MakeFile
```
obj-m:=xxx.o //名称可改
//以下内容可以不用动
CURRENT_PATH:=$(shell pwd)
LINUX_KERNEL:=$(shell uname -r)
LINUX_KERNEL_PATH:=/usr/src/linux-headers-$(LINUX_KERNEL)
all:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
clean:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean
```
#2.编写模块函数
```
//一个简单的helloworld函数
#include <linux/init.h>
#include<linux/kernel.h>
#include <linux/module.h>
MODULE_LICENSE("GPL");//许可证
static int __init lkm_init(void) //入口函数
{
printk("Hello,Linux!\n");
return 0;
}
static void __exit lkm_exit(void)//出口函数
{
printk("Good bye!\n");
}
module_init(lkm_init);//入口点
module_exit(lkm_exit);//出口点
```
#3.插入内核模块
`sudo insmod xxx.ko`
#4.打印日志信息
因为其结果不可能直接打印在终端,所以需要打印日志信息来查看结果
`dmesg`
相关文章
- 02-03在Linux和UNIX在线学习Shell脚本的前5门课程
- 02-03STM32的USART串口配置——学习笔记(5)
- 02-03linux 学习笔记--模块的加载与卸载
- 02-03浅析基于webpack5模块联邦实现微前端的方案学习
- 02-03Linux网卡配置及学习linux的注意事项
- 02-03解析 Linux 内核可装载模块的版本检查机制
- 02-03linux学习(一) -- ubuntu下lamp环境的配置
- 02-03[笔记]我的Linux入门之路 - 02.***-Qt5配置
- 02-03Oracle数据库学习(一):虚拟机下Oracle Linux的安装与配置
- 02-03鸟哥的linux私房菜 - 第5/6/7/9章(在线求助 man page、Linux档案权限与目录配置、Linux档案与目录管理、压缩与打包)