シナリオ: (gccのあるLinuxの)C++プロジェクトのビルドは、新しいマシンで繰り返されることになっています。Linux/gcc:ビルドが別のマシンの以前のビルドと同一かどうかを確認する方法はありますか?
非常に同じgccバージョンがビルドに使用されている場合: ビルド出力(バイナリ)は同じですか?あるいは、バイナリに含まれるタイムスタンプ、パス、またはその他の情報によって、それらが異なっていますか? 出力が同じでない場合:バイナリが「機能的」なのかどうかを比較する方法はありますか?私。バイナリ内の実際のコード(デバッグ情報などのメタデータなし)を単に比較するツールを呼び出すことはできますか?
動機: ソフトウェアシステム(誰かが開発した、それをXと呼ぶ)を構築する必要がある、クリーンな新しいLinuxシステムを用意する必要があります。 ソフトウェアをビルドするために、ビルドスクリプト、メイクファイルなどでソースツリーを取得します。 ビルド出力がXで提供された最後のビルドと同じであることを確認する必要があります。私はXからバイナリ形式で入手した最後のバージョンをビルドするために使用されたソースが同じであることを確認するためにこれを行う必要があります。
2つのファイルで 'objdump -d FILE'コマンドの出力の' diff'コマンドを使って違いを比較しようとしましたか? – Oliv
あなたの究極の目標は何ですか?バイナリ互換性、または機能上の正確さ?前者は何らかのABIに合意する必要があり、後者は体系的なテストがすべて私が想定していることです。 –
@MassimilianoJanes:これの背後にある動機づけを説明するために質問を編集しました。 – DrP3pp3r