Linux下gcc、objdump、file命令使用方式總結

一、GCC編譯器和常用命令

 

gcc編譯器不僅支持c語言,還支持Ada、C++、Objective-C語言。一般編譯的過程可以分爲四個階段:預處理(Preprocessing)、編譯(Compilation)、彙編(Assembly)和連接(Linking)

 

1、  一步到位的編譯指令

包含四個階段

gcc test.c –o test

2、  預處理

將頭文件內容插入到test.c文件,-E是預處理結束後停止,並輸出預處理結果

gcc –E test.c –o test.i

3、  編譯

對.i文件編譯,生成彙編代碼,-S表示生成彙編代碼後停止,-o輸出彙編代碼文件

gcc –S test.i –o test.s

4、  彙編

將彙編代碼文件編譯爲目標文件

gcc –c test.s –o test.o

5、  連接

將其與C標準輸入輸出庫進行連接,最終生成程序test

gcc test.o –o test

6、  執行

在命令行窗口,執行./test

 

不同文件代表的意義:

test.c(源文件)->test.i(-E預處理後文件)->test.s(-S彙編文件)->test.o(-c目標文件)->test(-o可執行文件)

 

對於多個源文件進行編譯:

1、  一步到位

gcc  test1.c  test2.c –o test

2、  複雜一些的(執行過程和一步到位的是一樣的,都是預處理->編譯->連接)

gcc -c test1.c -o test1.o
gcc -c test2.c -o test2.o
gcc test1.o test2.o -o test

 

常用命令選項的意義:

1、-c 只編譯不連接

2、-O 優化編譯後的代碼,後面加數字代表優化級別

3、-o 指定輸出的文件名

4、-v 顯示編譯過程中每一步用到的命令

 

二、objdump命令的使用

 

objdump是Linux下面的反彙編目標文件或者可執行文件的命令

 

1、objdump –d test

反悔表test中需要執行指令的那些section

 

2、  objdump –h test

顯示test的Section Header信息

 

3、  objdump –S test.o

輸出C源代碼和反匯編出來的指令對照的格式

 

4、  objdump –h

顯示目標文件各個section的頭部摘要信息

 

5、  objdump –r

顯示文件的重定位入口

 

6、  objdump –t顯示文件的符號表入口

 

三、file命令

 

file命令是檢測文件類型的命令,可以讀取文件的編碼體系以及一些其他信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章