【问题标题】:Getiing Unknown symbol ***_******(err 0) while reading or writing from linux kernel module从 linux 内核模块读取或写入时获取未知符号 ***_******(err 0)
【发布时间】:2015-06-25 16:17:10
【问题描述】:

我知道从内核读取或写入 (i/o) 是一件坏事,但在某些情况下我必须这样做,并且在阅读许多网站时,我从 things you should never do in kernel 获得了代码,所以想尝试一下。在制作模块时。编译时给了我

警告:“sys_write”[/path/to/file/file.ko] 未定义! 警告:“sys_open” [/path/to/file/file.ko] 未定义!

但我想在插入我得到的模块时插入模块

insmod: 错误: 无法插入模块 file.ko: 未知符号 模块

为了得到答案,我爬过一些网站(c-unkown symbol class create)但我有

MODULE_LICENSE("GPL");

在我的模块代码中,意思是在搜索时我找到了 在制作模块时使未知符号可用。这是从 文档/kbuild/modules.txt。

然后我做了

制作 KBUILD_EXTRA_SYMBOLS='/home/lunako/Documents/ker_write/Module.symvers'

还是没有结果。我现在应该怎么做?谢谢

【问题讨论】:

  • 请在您的问题中提供您的模块和 Makefile 的完整代码。

标签: c linux linux-kernel


【解决方案1】:

我不鼓励你继续你正在做的事情,但如果你坚持,你需要导出 sys_open 函数以便它可以被模块使用。 搜索EXPORT_SYMBOL

顺便说一句,您需要重新编译内核以使该符号可用于内核模块。

【讨论】:

    猜你喜欢
    • 2012-12-21
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 2017-03-31
    相关资源
    最近更新 更多