从Linux内核模块读取或写入时获取未知符号*** _ ******(错误0)

时间:2015-04-18 20:28:33

标签: c linux linux-kernel

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

  

警告:“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”);

在我的模块代码中,意思是在搜索时我找到了方法 在制作模块时提供未知符号。来自 的 Documenats /的kbuild / modules.txt。

然后我做了

  

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

仍然没有结果。我现在该怎么办?感谢

1 个答案:

答案 0 :(得分:2)

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

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