在不同时间从同一源编译的2个可执行文件是否应具有相同的MD5SUM?

时间:2009-09-10 19:38:15

标签: md5 code-formatting

在不同时间从同一来源编译的2个可执行文件是否具有相同的MD5SUM?

我一直在使用艺术风格评估自动代码格式。

我做的一个测试是:

  1. 执行清洁编译
  2. MD5SUM可执行文件
  3. 清除构建目录。
  4. 在代码上运行Astyle格式化程序
  5. 重新编译代码。
  6. MD5Sum可执行文件
  7. 我的理论是,如果代码没有功能变化,MD5SUM应匹配,但MD5SUM不匹配。我的假设是否有问题,或者运行ArtisticStyle(应该只改变Whitespace)会导致我的可执行文件出现语义差异?

    编辑:如果MD5Sums不起作用,有人可以推荐一种方法来“证明”这两个可执行文件是等效的吗?

2 个答案:

答案 0 :(得分:2)

二进制文件可能至少包含不同的时间戳。所以,不,来自相同代码库的两个后续构建很可能会产生不同的二进制文件。功能相同,最可能相同的大小甚至相同的代码,但md5总和不匹配。

答案 1 :(得分:1)

您要证明的是,这两者在功能上是等效的,因此您需要使用二进制diff实用程序查看二进制文件中的每个更改。这将是一个手动验证,但如果您发现差异本质上很小并且时间戳与Dmitry指出相关,那么您可以提出索赔。