构建相同的项目(没有任何更改)会产生二进制不同的 exe 文件:它们的一些小区域是不同的。空项目、版本信息(以及每次构建的自动增量)已关闭。
为什么会发生?是否可以让 delphi 为相同的项目生成二进制相等的文件?
构建相同的项目(没有任何更改)会产生二进制不同的 exe 文件:它们的一些小区域是不同的。空项目、版本信息(以及每次构建的自动增量)已关闭。
为什么会发生?是否可以让 delphi 为相同的项目生成二进制相等的文件?
Windows 使用的 PE 可执行文件格式中的各种结构包括由编译器和链接器设置的时间戳。
可以对文件进行后处理以将这些值重置为定义的常量(我为需要精确哈希值的安全产品编写了一个工具来执行此操作),但这只能在准备好发布的可执行文件上完成,因为一些调试器依赖时间戳进行源查找等。
尝试将问题更改为“如果源代码没有更改,我如何避免编译”,可能更容易处理。
我怀疑编译器插入到 *.exe 编码时间、特殊序号(用于版本控制)以及其他可能的东西:) 强制 Delphi 产生相等的二进制输出是不可能的。
可能是一些实际的时间戳被编译到 exe 文件中。