红联Linux门户
Linux帮助

在linux内核中载入模块

发布时间:2007-04-03 00:53:30来源:红联作者:Procedure
前一段时间看了怎么在LINUX中写驱动程序

今天就写了一下试一试。

写个一个很简单的小程序
#include "linux/kernel.h"
#include "linux/module.h"
#include "linux/version.h"
#if CONFIG_MODBERSIONS==1
#define MODBERSIONS
#include "Linux.modversions.h"
#endif
#define devicename mydevice
MODULE_LICENSE("GPL"); //这里是给这个模块一个证书
/* the init funcion*/
int init_module()
{

//载入模块的函数
printk("holy shit it works!\n");

//因为PRINTF不可以工作,所以用PRINTK,这里的东西要用命令DMESG才可以看见

return 0;
}

/*the funcion which the device will be used */

int cleanup_module()
{

//清理模块的函数
printk("holy shit it works too !!\n");
return 0;
}


大部分是COPY,不过还好都理解了

写好以后编译,没有做makefile,用命令代替

gcc -Wall -DMODULE -D_KENNEL_ -DLinux -c test.c
具体意思不知道

编译生成。test.o

然后用insmod test.o载入模块

可能会出现一下的错误

1.模块版本不对

解决方法,修改/USR/INCLUDE/LINUX/VERSION.H,里面的#define UTS_RELEASE "2.4.18-3"

2.没有证书

MODULE_LICENSE("GPL");

3.模块busy

首先看你的加载模块的返回值是不是0,如果不是0就肯定会有这个错误

用lsmod来看看是否有同名的模块运行

有的话可以用rmmod命令干掉他

4.看不到输出

在控制台输出DMESG就可以看到
文章评论

共有 0 条评论