为什么每次构建都会更改 exe 文件?

发布于 2024-07-10 03:49:43 字数 151 浏览 6 评论 0原文

构建相同的项目(不进行任何更改)会生成不同的二进制 exe 文件:其中一些小区域是不同的。 空项目,版本信息(以及每个构建的自动增量)被关闭。

为什么会发生这种情况? 是否有可能让delphi为相同的项目生成二进制相同的文件?

Building the same project (without any changes) produces binary different exe-files: some small regions of them are different. Empty project, version information (and auto-increment on every build) is turned off.

Why it happens? And is it possible to make delphi produce binary equal files for the same projects?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

樱&纷飞 2024-07-17 03:49:43

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

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

The various structures in the PE executable file format used by Windows include timestamps that are set by the compiler and linker.

It is possible to post-process the file to reset these values to a defined constant (I wrote a tool to do exactly this for a secure product that needed exact hash values), but this should only be done on ready-to-ship executables, as some debuggers rely on the timestamps for source lookup, etc.

哎呦我呸! 2024-07-17 03:49:43

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

Try changing the problem into "How do I avoid compiling if there are no changes to the source", might be easier to deal with.

著墨染雨君画夕 2024-07-17 03:49:43

我怀疑编译器会插入 *.exe 编码时间、特殊序数(用于版本控制),也许还有其他东西:)
不可能强迫 Delphi 产生相同的二进制输出。

I suspect compiler insert to *.exe encoded time, special ordinal numbers (for versioning) and maybe other things :)
It's impossible to force Delphi to produce equal binary output.

巾帼英雄 2024-07-17 03:49:43

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

it may be, that some actual time-stamps are compiled into the exe-file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文