首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用LKM的导出符号编译内核?

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

Stack Overflow用户
提问于 2013-10-08 11:21:04
回答 1查看 371关注 0票数 1

我是一个内核新手,需要一些帮助编译的Linux内核与一个内核模块的输出符号。

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

我应该如何获得内核编译来查看导出的符号?我在谷歌上看到的MOst示例是模块到模块的导出。

我遗漏了什么?如有任何帮助,我们不胜感激!

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

EN

回答 1

Stack Overflow用户

发布于 2013-10-08 12:09:22

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

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19238528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档