5

Visual C++で同じバイナリを生成するために同じコードを強制的に使用する方法はありますか? PEのタイムスタンプをオフにするか、PEのタイムスタンプを一定の固定値にします。Visual C++でのバイナリ再現性

答えて

3

あなたは、PEを開き、チェックサムを0に設定し、あなたが好きなものにタイムスタンプを設定し、crcを再計算して、それを書き戻すユーティリティを書くことができるとします。しかし、バイナリの完全な再現性を保証する正式な方法があればうれしいでしょう。詳細については

http://msdn.microsoft.com/en-us/magazine/cc301805.aspx

3

それだだけではなく、タイムスタンプ - ジョン・ロビンズexplainsとして - PDBマッチングに使用埋め込まれたGUIDがあります。

コンパイラライターことを確実にすることよりも、すばやく正確に生成するコードに機能し、それを生成する際にはるかに興味を持っている - それさえも超えて

は、ジム・Griesmerとしてexplainsは、一貫性のある結果を生成するコンパイラを強制するだけの方法はありません生成されたものは、ハードドライブに同じように配置されます。コードを最適化するための数多くのさまざまな方法と実装のために、あるビルドが別のビルドとは別の何かを行うためにもう少し時間を費やして終わる可能性が常にあります。したがって、最終的な結果は、同じ機能性のための異なるビットのセットとなり得る。したがって、機能およびセクション順序は一貫して得られたPEで注文することが保証されていない

。リンクに例があります。

関連する問題