【发布时间】:2015-06-18 16:03:25
【问题描述】:
我在内核源代码树之外进行编码。有两个模块,第一个 printt 有一个函数 printtty() 将字符串打印到当前 tty,第二个模块 hello 在初始化期间调用 printtty()。
我在printt模块中添加了EXPORT_SYMBOL(printtty),在insmod ./printt.ko之后,printtty()的信息可以在/proc/kallsyms中看到。
模块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
但我想知道有没有办法仅从外部模块导出符号(不修改内核源代码树)?
【问题讨论】:
标签: linux gcc linux-kernel kernel