加入收藏 | 设为首页 | 会员中心 | 我要投稿 4S站长网 (https://www.4s3.cn/)- 科技、混合云存储、数据迁移、云上网络、数据计算!
当前位置: 首页 > 综合聚焦 > Linux > 正文

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

发布时间:2021-01-11 17:26:05 所属栏目:Linux 来源:互联网
导读:我在内核源代码树之外编码.有两个模块,第一个printt有一个函数printtty()来打印字符串到当前tty,第二个模块hello在初始化期间调用printtty(). 我在模块printt中添加了EXPORT_SYMBOL(printtty),在insmod ./printt.ko之后,可以在/ proc / kallsyms中看到printtt

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

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

模块hello的make过程可以正常进行.但insmod ./hello.ko会导致如下错误:

insmod: ERROR: could not insert module hello.ko: Invalid parameters

和dmesg显示

hello: no symbol version for printtty
hello: Unknown symbol printtty (err -22)`.

我已经修好了

(1)将.ko文件复制到/ lib / modules / version / kernel下面的位置

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

但我想知道有没有办法从外部模块导出符号(不修改内核源代码树)?

解决方法

在你的hello模块的Makefile的最顶部添加这一行:
KBUILD_EXTRA_SYMBOLS := /home/your-user/path/to/printt/Module.symvers

(务必将正确的路径放入printt模块).

现在重建你的hello模块,它将被加载得很好.

有关详细信息,请参见Documentation/kbuild/modules.txt,“6.3来自另一个外部模块的符号”.

(编辑:4S站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读