内核模块中的EXPORT_SYMBOL | insmod期间未定义的符号 [英] EXPORT_SYMBOL in kernel module | undefined symbol during insmod

查看:288
本文介绍了内核模块中的EXPORT_SYMBOL | insmod期间未定义的符号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个从a.ko(内核模块)导出的函数foo()和foo1(),foo1()带有输入参数,一个函数指针. 我从b.ko调用foo1(),并将foo()作为输入参数.

I have a exported functions foo() and foo1() from a.ko (a kernel module), foo1() takes input parameter, a function pointer. I invoke foo1() from b.ko, and pass foo() as the input parameter.

我看到b.ko出现insmod失败(未知符号foo),即使a.ko在b.ko之前已经被插入.

I see a insmod failure for b.ko (unknown symbol foo ), even though a.ko has been insmoded before b.ko.

有任何解释/解决方案吗?

Any explanations/solutions ?

谢谢, 幸运

推荐答案

有两种解决方法,1)在同一个Makefile中编译两个内核模块,即 objs-m:= a.ob.o. 2)在要使用导出的函数或变量的内核模块的Makefile中包括** KBUILD_EXTRA_SYMBOLS =到导出函数或变量的内核模块的Module.symvers的绝对路径".

There are two ways to solve this, 1) Compile both the kernel modules in the same Makefile i.e. objs-m := a.o b.o. 2) Include **KBUILD_EXTRA_SYMBOLS=<"absolute path to the Module.symvers of the kernel module which is exporting function or variable"> in the Makefile of the kernel module which will use exported function or variable.

这篇关于内核模块中的EXPORT_SYMBOL | insmod期间未定义的符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆