本文介绍在内核编译模块、加载和卸载模块的过程。
首先开发环境是Linux-4.4.0+两份代码,hello.c+Makefile。
这两份代码放到哪里呢?答案是哪里都可以,不过要注意放在一个文件夹下。这个文件夹的位置就是Makefile中的CURRENT_PATH,编译终端在这个文件夹打开就行。
hello.c
/*编写一个helloworld向内核输出*/
#include<linux/init.h>/*包含__init和__exit*/
#include<linux/module.h>/*必须包含*/
MODULE_LICENSE("Dual BSD/GPL");/*许可证,不然加载时会提示该模块污染内核*/
static char *name = "yr";
static int __init name_init(void)
{
printk("hello world!\n");
printk("hello %s!\n", name);
return 0;
}
static void __exit name_exit(void)
{
printk(KERN_INFO"NAME MODULE EXIT\n");
}
module_init(name_init);/*加载模块时调用初始化函数*/
module_exit(name_exit);/*卸载模块时*/
module_param(name, charp, S_IRUGO);
关键部分有注释,不过这离中文注释要当心,博主一开始用的//被报错了。
Makefie如下:

本文详细介绍如何在Linux内核环境中编写、编译、加载及卸载模块。以Linux-4.4.0为例,提供了helloworld模块的具体实现代码,并介绍了Makefile配置,帮助读者掌握内核模块开发流程。
最低0.47元/天 解锁文章
1050

被折叠的 条评论
为什么被折叠?



