Android 如何使用LKM';什么是出口符号?

Android 如何使用LKM';什么是出口符号?,android,c,compiler-construction,linux-kernel,kernel-module,Android,C,Compiler Construction,Linux Kernel,Kernel Module,我是一个内核新手,需要一些帮助来使用导出的内核模块符号编译Linux内核 我在LKM源代码中尝试了以下-EXPORT_SYMBOL(func_name),LKM编译并在其Module.symvers中生成符号。然而,当我试图用调用导出符号的内核编译内核时,它表示对“func_name”的未定义引用 如何让内核编译看到导出的符号?我在谷歌上看到的大多数例子都是模块到模块的导出 我错过了什么?感谢您的帮助 编辑:我基本上想从内核中调用LKM中的函数。 导出内核符号时,必须考虑依赖关系的顺序。听起来您

我是一个内核新手,需要一些帮助来使用导出的内核模块符号编译Linux内核

我在LKM源代码中尝试了以下-EXPORT_SYMBOL(func_name),LKM编译并在其Module.symvers中生成符号。然而,当我试图用调用导出符号的内核编译内核时,它表示对“func_name”的未定义引用

如何让内核编译看到导出的符号?我在谷歌上看到的大多数例子都是模块到模块的导出

我错过了什么?感谢您的帮助


<>编辑:我基本上想从内核中调用LKM中的函数。

导出内核符号时,必须考虑依赖关系的顺序。听起来您正试图从模块中导出一个符号,并期望内核整体能够使用该导出的符号。但是请记住,内核是静态链接的,因此在构建时必须能够解析其所有符号。如果您正在向试图引用模块导出的符号的monolith添加一些代码,那么它将无法生成-链接器不知道模块符号,因为模块总是在monolith之后加载

简言之,整块石可以输出模块可以引用的符号。此外,模块还可以导出由其他相关模块引用的符号。但相反的方向是不可能的


听起来您需要对代码进行一些重构,这样就不必从模块中导出。您是否可以让monolith导出一个函数指针,在加载模块时填充该指针?您必须对其进行设置,以便在模块实际上已加载时,monolith只调用函数指针指向的函数。

请举一个简单的示例,说明您要做什么?