您的位置:首页 > 其它

insmod: error inserting '***.ko': -1 Invalid parameters 解决办法

2014-03-10 18:19 656 查看
本人在CentOS 2.6.36下编写内核模块。

一个模块export中:定义函数int add_integar(int a, int b),然后导出EXPORT_SYMBLE(add_integar);编译通过,加载成功。

一个模块inport中:extern int add_integar(int a, int b), 然后调用add_integar函数。编译通过,但是加载失败!

错误: insmod: error inserting 'inport.ko': -1 Invalid parameters

dmesg: import: no symbol version for add_integar

错误原因: 不明,据说是2.6.36 kernel的bug

解决办法:

1) . 编译export.c , 这时在当前目录下会生成一个 Module.symvers 文件

2). 把1)中生成的Module.symvers 文件copy到import.c的目录下

3). 然后再编译 inport.c 文件

4). 先insmod export.ko, 再ins mod import.ko 就不会出现 insmod: error inserting 'inport.ko': -1 Invalid parameters 这个错误了!!

export.c

#include<linux/module.h>
#include<linux/init.h>
#include<linux/kernel.h>

int add_integar(int a,int b){
return a+b;
}

static int __init test_init(void){
printk("export init\n");
return 0;
}
static void __exit test_exit(void){
printk("export exit\n");
}

module_init(test_init);
module_exit(test_exit);
MODULE_LICENSE("Dual BSD/GPL");

EXPORT_SYMBOL(add_integar);


export.c 的Makefile
ifneq ($(KERNELRELEASE),)
obj-m := export.o
else
PWD := $(shell pwd)
KVER := $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
endif


inport.c

#include<linux/module.h>                       #include<linux/moduleparam.h>
#include<linux/kernel.h>
extern int add_integar(int a,int b);

static int __init test_init(void){
printk("add_integar(1,2)=%d\n",add_integar(1,2));
return 0;
}

static void __exit test_exit(void){
printk("bye!\n");
}

module_init(test_init);
module_exit(test_exit);

MODULE_LICENSE("GPL");


inport.c 的Makefile

ifneq ($(KERNELRELEASE),)
obj-m := inport.o
else
PWD := $(shell pwd)
KVER := $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
endif


1)在export.c目录中执行: Make 和 insmod export.ko

2)把1)中生成的 Module.symvers copy 到inport.c目录下

3).在inport.c目录中执行: Make 和 insmod inport.ko

就不会出错了!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐