首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从外部模块导出符号?

如何从外部模块导出符号?
EN

Stack Overflow用户
提问于 2015-04-13 11:00:44
回答 1查看 3.8K关注 0票数 10

我正在内核源代码树之外编码。有两个模块,第一个printt有一个函数printtty()将字符串打印到当前tty,第二个模块hello在初始化期间调用printtty()

我在模块printt中添加了,在insmod ./printt.ko之后,printtty()的信息可以在/proc/kallsyms中看到。

模块hello的过程进行得很好。但是,insmod ./hello.ko将导致如下错误:

代码语言:javascript
复制
insmod: ERROR: could not insert module hello.ko: Invalid parameters

dmesg显示

代码语言:javascript
复制
hello: no symbol version for printtty
hello: Unknown symbol printtty (err -22)`.

我已经把这个修好了

(1)将.ko文件复制到/lib/模块/版本/内核下面的位置

(2)将导出的符号添加到/lib/modules/version/build/Module.symvers

但是,我想知道有什么方法可以仅从外部模块导出符号(而不修改内核源代码树)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-13 13:30:47

在Makefile的非常顶部的中为hello模块添加这一行:

代码语言:javascript
复制
KBUILD_EXTRA_SYMBOLS := /home/your-user/path/to/printt/Module.symvers

(确保输入到printt模块的正确路径)。

现在重新构建您的hello模块,它将很好地加载。

有关详细信息,请参阅文档/kbuild/Modes.txt,“来自另一个外部模块的6.3符号”。

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

https://stackoverflow.com/questions/29603725

复制
相关文章

相似问题

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