我有两个Linux内核代码副本(相同版本:3.0.1),一个是香草源代码,另一个是一些修改。在使用相同的配置文件(未修改的代码在make期间提示一些关于驱动程序的其他配置)编译它们之后,它们输出稍微不同的Module.symvers
文件,这是合理的。然后,我使用awk
来仅列出它们的前两个字段,以更好地比较符号校验和。大部分符号校验和是相同的,但是一些符号的校验和是不同的。根据此article from lwn.net:模块版本校验和是如何评估的?
校验和是从符号的原型或声明计算出来的。
这些不同的应该有不同的原型或声明。但我发现这不是事实。我选择了其中两个(函数)并比较了源代码,其中一个在定义(即函数体)方面有所不同,另一个函数在两个源代码中完全相同。 (我用vimdiff
比较和间距是相同的)。这两个功能都具有相同的原型。
所以事情可能已经改变了?究竟是什么导致了现在不同的校验和(在我的情况下3.0.1之后)。我不想知道计算校验和的细节,我只想简单介绍一下这里有什么区别。
谢谢!我追溯了一些不同的论点,他们之间存在定义差异。 –