Kernel 未知符号kallsyms\u查找\u名称

Kernel 未知符号kallsyms\u查找\u名称,kernel,kernel-module,undefined-symbol,Kernel,Kernel Module,Undefined Symbol,我对模块编程还很陌生,有点不知所措,但我正在努力学习 我试图使用kallsyms_lookup_name来访问sys_call_表,以便修改syscall处理程序。然而,当我创建并尝试插入模块时,我通过dmesg得到一个错误,“未知符号kallsyms_lookup_name”。我读到一些系统默认情况下不会导出kallsyms_lookup_name,所以我检查了我的.config文件,发现 CONFIG_KALLSYMS = y CONFIG_KALLSYMS_ALL = y CONFIG_

我对模块编程还很陌生,有点不知所措,但我正在努力学习

我试图使用kallsyms_lookup_name来访问sys_call_表,以便修改syscall处理程序。然而,当我创建并尝试插入模块时,我通过dmesg得到一个错误,“未知符号kallsyms_lookup_name”。我读到一些系统默认情况下不会导出kallsyms_lookup_name,所以我检查了我的.config文件,发现

CONFIG_KALLSYMS = y
CONFIG_KALLSYMS_ALL = y 
CONFIG_KALLSYMS_ABSOLUTE_PERCPU  = y
CONFIG_KALLSYMS_BASE_RELATIVE = y

此外,我在/lib/modules/“kernel version”/build/Module.symvers文件中找到了kallsyms_lookup_名称。这表明该符号已导出。我是否遗漏了一些明显的内容?

您的模块中是否有一行
模块(“GPL”)
?符号
kallsyms\u lookup\u name
通过导出,因此只有具有GPL兼容lisense的模块才能使用它。谢谢!!这修复了我也有这个错误,但没有通过添加GPL许可证来修复。注意输入:MODULE_LICENSEFYI。kallsyms_lookup_name()自0bd476e6c起不再导出。