2

构建相同的项目(没有任何更改)会产生二进制不同的 exe 文件:它们的一些小区域是不同的。空项目、版本信息(以及每次构建的自动增量)已关闭。

为什么会发生?是否可以让 delphi 为相同的项目生成二进制相等的文件?

4

4 回答 4

15

Windows 使用的 PE 可执行文件格式中的各种结构包括由编译器和链接器设置的时间戳。

可以对文件进行后处理以将这些值重置为定义的常量(我为需要精确哈希值的安全产品编写了一个工具来执行此操作),但这只能在准备好发布的可执行文件上完成,因为一些调试器依赖时间戳进行源查找等。

于 2008-11-27T12:17:52.793 回答
2

尝试将问题更改为“如果源代码没有更改,我如何避免编译”,可能更容易处理。

于 2008-11-27T12:15:39.677 回答
1

我怀疑编译器插入到 *.exe 编码时间、特殊序号(用于版本控制)以及其他可能的东西:) 强制 Delphi 产生相等的二进制输出是不可能的。

于 2008-11-27T12:05:59.180 回答
0

可能是一些实际的时间戳被编译到 exe 文件中。

于 2008-11-27T12:02:25.053 回答