字符设备驱动程序(Demo)——开发步骤(4)

将字符驱动程序进行编译,导入模块

1、编写Makefile文件
/***************************************************
 *外部编译:将内核模块源文件放在内核源码外部进行编译
 *动态编译:编译生成动态模块 xxx.ko
 ***************************************************/
  • 进入终端查看当前系统的内核版本号
    uname -r
    这里我使用的是4.15.0-107-generic

  • 进入系统modules目录查看
    cd /lib/modules/4.15.0-107-generic/build

  • 编写Makefile

KERNDIR = /lib/modules/4.15.0-107-generic/build
PWD = $(shell pwd)

obj-m:=demo.o

all:
	make -C $(KERNDIR) M=$(PWD) modules
	
clean:
	make -C $(KERNDIR) M=$(PWD) clean
Makefile文件

在这里插入图片描述

demo.c文件

demo.c文件

2、执行make

在这里插入图片描述

  • 查看make以后生成的文件
    在这里插入图片描述
3、导入模块
  • 导入模块
    sudo insmod demo.ko
  • 查看模块
    -lsmod
    在这里插入图片描述
4、dmesg显示信息

dmesg
在这里插入图片描述

  • 打印出了主设备号 major = 241
  • 进入了demo_init函数,在demo.c的95行
    在这里插入图片描述
5、卸载模块

sudo rmmod demo
在这里插入图片描述

6、dmesg显示信息

dmesg
在这里插入图片描述

  • 进入了demo_exit函数,在demo.c的107行
    在这里插入图片描述
    ======================================================================================

  • 一开始打开dmesg会有很多信息,可以执行dmesg | tail -1

  • 或者可以先将dmesg信息清空 dmesg -c

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值