【嵌入式Linux学习】Hello World 内核模块

本文详细介绍了一个简单的Linux模块开发过程,包括文件准备、编译、加载和卸载模块,以及常见问题解决方法。通过实例演示了如何使用Makefile进行模块编译,并在终端中使用insmod和rmmod命令进行模块的加载和卸载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、新建文件夹hello,创建hello.c和Makefile文件

hello.c

#include<linux/module.h>
#include<linux/kernel.h>
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);
MODULE_LICENSE("GPL");

Makefile

obj-m:=hello.o
CURRENT_PATH:=$(shell pwd)
VERSION_NUM:=$(shell uname -r)
LINUX_PATH:=/lib/modules/$(VERSION_NUM)/build
CONFIG_MODULE_SIG=n
all:
	make -C $(LINUX_PATH) M=$(CURRENT_PATH) modules
clean:
	make -C $(LINUX_PATH) M=$(CURRENT_PATH) clean

二、在终端进入该文件夹

1、编译
make

在这里插入图片描述

2、加载驱动模块
sudo insmod hello.ko

查询模块是否被加载

lsmod | grep hello

在这里插入图片描述
查看模块被加载的打印信息

dmesg

在这里插入图片描述

3、卸载驱动模块
sudo rmmod hello

查看驱动模块是否被卸载

lsmod | grep hello

在这里插入图片描述
查看驱动模块被卸载打印信息

在这里插入图片描述


在实验过程中尝试了只有加载模块,没有卸载模块函数,这时候出现了不能正常卸载模块的现象。解决办法两种:1、参照这篇<博文> 2、重启电脑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ReCclay

如果觉得不错,不妨请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值