2015-03-02 26 views
2

我有兩個文件應該從相同的源版本生成。其中一個文件被剝離。 可以比較文件的原始可執行部分以確定它們是否相同? 也可以在目標文件上完成(特別是在.ko linux內核模塊上)?比較可執行文件或目標文件

問候

回答

1

您可以運行objdump -x <file>列出計劃的部分,然後objcopy -j <section> <file> <out>提取的部分並加以比較。

你想跳過調試節和檢查.text喜歡,.data ...

3

我會嘗試使用

objdump -d file1>a 
objdump -d file2>b 
diff a b 

,或者如F.Hauri建議,

diff <(objdump -d file1) <(objdump -d file2) 

-d選項反彙編文件的可執行部分。

但是,不同的編譯器總是會生成不同的字節,因此也就是彙編,代碼。 此外,我不確定可執行文件中的目標文件的順序,如果有多個。 對於使用應該工作的相同編譯器編譯的目標文件。

+1

使用[標籤:慶典],你coud寫:'DIFF <(objdump的-d file1)<(objdump -d file2)'而不必使用臨時文件! ;-) – 2015-03-02 11:08:12

+1

試一下'diff -y ... |在一個寬廣的控制檯中減少「S」 – 2015-03-02 11:10:28

0

檢查兩個文件是否相同的簡單方法是md5。您可以通過檢查文件的md5sum:

$ md5sum file.txt 

對於許多文件,這樣做:

$ md5sum *