2

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

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

我做的一项测试是:

  1. 进行干净编译
  2. MD5SUM 可执行文件
  3. 清理构建目录。
  4. 在代码上运行 Astyle 格式化程序
  5. 重新编译代码。
  6. MD5Sum 可执行文件

我的理论是,如果代码没有功能更改,MD5SUM 应该匹配,但 MD5SUM 不匹配。我的假设是否有问题,或者运行 ArtisticStyle(它应该只更改空白)是否会导致我的可执行文件出现语义差异?

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

4

2 回答 2

3

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

于 2009-09-10T19:49:30.010 回答
1

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

于 2009-09-10T20:09:18.467 回答