原文:https://blog.csdn.net/wuyongpeng0912/article/details/46739233
在调试过程中,发现一个问题,编译生成一个KO文件,insmod加载后报错:
Unknown symbol var_set_integer (err 0)
Unknown symbol parse_arg_eq (err 0)
问题分析思路:
一、用命令查看内核中是否已有这个内核符号,
例如要查看是否有var_set_integer这个内核符号,输入命令:
cat /proc/kallsyms | grep "var_set_integer"
没有相关打印,而输入其它的函数名则会有打印信息。
如果内核中已经包含了这个符号,那么就会有相关的打印信息,否则不打印。
注:
/proc/kallsyms会显示内核中所有的符号,但是这些符号不是都能被其他模块引用的(绝大多数都不能),能被导出的是符号的类型是大写的那些(例如T,U)。
二、使用modinfo查看内核相关信息,确定模块依赖关系,再进一步确认符号调用。
例如: