您的位置:首页 > 其它

动态加载模块出现disagrees about version of symbol 问题分析

2015-01-06 16:23 701 查看
1.编译kernel的时候,会生成Module.symvers文件,记录每个Symbol 和相应的CRC code,例如: 比如这个kernel 版本是2.6.38-1.4

0x258d700e raw_seq_open vmlinux EXPORT_SYMBOL_GPL

0xebba1d26 device_add vmlinux EXPORT_SYMBOL_GPL

0xfb0f0e78 device_del vmlinux EXPORT_SYMBOL_GPL

0xa5bf5c3e pm_qos_add_requirement vmlinux EXPORT_SYMBOL_GPL

2.编写动态加载module的时候,也会生成类似的文件module_name.mod.c,将module调用到的system call 记录在里面,这个的symbol使用编译module的时候指向的kernel路径。比如这个kernel 版本是2.6.37-2.5。

3.加载这个动态module的时候,kernel会去check加载模块的每一个symbol的CRC,看看是否与kernel相应的symbol相同,不同的话就会报错。 同一个kernel版本,不同的config也会出这个问题。

Found checksum 818923239 vs module A1009786

"***module": disagrees about version of symbol device_add

"***module": Unknown symbol device_add
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐