gpt4 book ai didi

android - 如何使用 LKM 的导出符号编译内核?

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:20 30 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

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

简而言之,单体可以导出模块可以引用的符号。模块也可以导出被其他相关 模块引用的符号。但相反的方向是不可能的。

听起来您需要稍微重构一下您的代码,这样您就不必从您的模块中导出了。您是否可以改为让单体导出一个函数指针,您的模块将在加载时填充该函数指针?您必须对其进行设置,以便如果模块实际上已加载,则单体只会调用函数指针指向的函数。

关于android - 如何使用 LKM 的导出符号编译内核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19238528/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com