gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:31:58 32 4
gpt4 key购买 nike

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

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

模块hellomake 过程一切正常。但是 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 来自另一个外部模块的符号".

关于linux - 如何从外部模块导出符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29603725/

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