【嵌入式Linux学习】Hello World 内核模块
【摘要】
一、新建文件夹hello,创建hello.c和Makefile文件
hello.c
#include<linux/module.h>
#include<linux/kernel.h&...
一、新建文件夹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");
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
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
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
二、在终端进入该文件夹
1、编译
make
- 1
2、加载驱动模块
sudo insmod hello.ko
- 1
查询模块是否被加载
lsmod | grep hello
- 1
查看模块被加载的打印信息
dmesg
- 1
3、卸载驱动模块
sudo rmmod hello
- 1
查看驱动模块是否被卸载
lsmod | grep hello
- 1
查看驱动模块被卸载打印信息
在实验过程中尝试了只有加载模块,没有卸载模块函数,这时候出现了不能正常卸载模块的现象。解决办法两种:1、参照这篇<博文> 2、重启电脑
文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。
原文链接:recclay.blog.csdn.net/article/details/102839921
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)