linux 内核模块的编译
环 境: Ubuntu 16.04
时 间: 2018-03-13 10:50
1.准备内核模块源码
首先编写一个简单 linux 内核模块文件。假设我们有一个源文件 mymod.c。源码如下:
#include<linux/module.h>/*引入与模块相关的宏*/
#include<linux/init.h> /*引入 module_init() module_exit()函数*/
#include<linux/moduleparam.h>/*引入 module_param()*/
static int ntest=10;
module_param(ntest,int,S_IRUGO);
static int __init test_init(void)
{
int i;
for(i=0; i < ntest; i++)
{
printk(KERN_ALERT "Hello,How are you.%d",i);
}
return 0;
}
static void __exit test_exit(void)
{
printk(KERN_ALERT "I come from yuer's module,I have been unlad.\
n");
}
module_init(test_init);
module_exit(test_exit);
MODULE_AUTHOR("wyy");
MODULE_LICENSE("GPL");
module_param(ntest,int,S_IRUGO);是导出我们的符号变量。在加载这个模块的时候
可以修改这个变量的值。test_init()函数将在模块被加载的时候运行,通过输出的结果
可以看到我们的模块是否加载成功。
2.编写 Makele 文件
ubuntu 下模块编译 Makele 文件
obj-m:=modules.o # modules.o 修改为 test.o 则要对应修改 modules-objs 为
test-objs
modules-objs:=mymod.o #生成这个模块名所需要的目标文件
#NAME:=`uname –r`
#KDIR:=/lib/modules/$(NAME)/build
评论1