2008-11-27 40 views
2

構建相同的項目(沒有任何更改)生成二進制不同 exe文件:它們的一些小區域是不同的。空項目,版本信息(並在每個版本上自動遞增)被關閉。爲什麼每個版本都會改​​變exe文件?

爲什麼會發生?是否有可能使德爾福爲相同的項目生成二進制文件?

回答

15

Windows使用的PE可執行文件格式中的各種結構包括由編譯器和鏈接器設置的時間戳。

可以對文件進行後處理以將這些值重置爲定義的常量(我寫了一個工具來爲需要確切散列值的安全產品完成此操作),但這隻能在現成的可執行文件上完成,因爲有些調試器依賴時間戳來進行源查找等。

0

它可能是,一些實際的時間戳被編譯到exe文件中。

+0

這不會提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – Emile 2012-08-31 12:44:20

+0

2008年11月27日。對不起,我對SO不太熟悉,現在我不會通過我的老職位並實現它們。但我仍然確信,我的答案是答案的一部分,爲什麼兩次編譯產生不同的二進制文件。 F.E.我使用#define VERSION和timestamp生成一個version.h文件作爲第一個編譯步驟,並使用在調試輸出中定義的文件。 – 2012-08-31 14:09:34

1

我懷疑編譯器插入* .exe編碼時間,特殊序數(用於版本控制),也可能是其他東西:) 不可能強制Delphi生成相同的二進制輸出。

2

嘗試將問題更改爲「如果不對源進行任何更改,我如何避免編譯」,可能會更容易處理。

相關問題