2016-03-15 445 views
0

編譯C程序後,您會得到一個.o文件。我知道這是一個由'0'和'1'組成的文件,如果在程序編譯成功後形成的話。 但我想看看文件中有什麼!如何打開.o文件?

+4

請不要使用C和C++標籤進行雙重標籤問題 - 它會引起人們的注意。由於您在C程序中詢問對象文件,因此C標記是適當的。 –

+1

你想看什麼,你有什麼工具?您可以使用諸如「od」之類的工具查看字節或單詞。如果你想看到結構,你需要一個理解目標文件的工具。文件內容是使對象文件可用的必要信息 - 定義和引用的符號列表,以及代碼加載執行時需要的修正信息等。還可能有行號和其他調試信息也是。 –

+0

哦,好吧!我很新!下次我會照顧的!你知道答案嗎? –

回答

6

這裏有幾個選擇。

首先(也是最簡單的)是使用解碼文件的東西來顯示它是什麼。在Linux上objdump做到這一點。

gcc -c test.c 

給你test.o

objdump -D test.o 

將文件進行解碼,並告訴你什麼是它的標準輸出(所以管它小於或類似) objdump的輸出顯示您未鏈接的目標文件。地址無效,必須由鏈接器修正。
格式是 第一個行號 然後一些數字,在CPU指令的字節,這些在hexadecimal.eg 14個所示裝置00010100 其次是,這些代表輪空

0: 14 00     adc $0x0,%al 

所以上面的指令我們有功能的線0 - 這是無關聯) 14 00 - 這些都是 他們的意思是帶有進0添加到人寄存器中存儲的結果在人

另一種方法是使用十六進制編輯器,並嘗試和字節計算出14 00意味着沒有任何協助。

祝你好運。

0

只使用十六進制編輯器。它允許您在幾秒鐘內找到數GB的文件中的數據模式。它很強大。支持跨文件的正則表達式搜索。這很方便。允許您只需單擊一次即可製作文件修補程序。這很聰明。它很靈活。它很有效率。