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