我知道从内核读取或写入(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'
仍然没有结果。我现在该怎么办?感谢
答案 0 :(得分:2)
我不鼓励你继续你正在做的事情,但如果你坚持,你需要导出sys_open
功能,以便模块可以使用它。
搜索EXPORT_SYMBOL
宏
顺便说一句,您需要重新编译内核以使此符号可用于内核模块。