GCC編譯器和GDB偵錯程式常用選項

2021-09-24 17:50:31 字數 1810 閱讀 2169

gcc編譯器

gcc hello.c -o hello                   #將hello.c編譯成hello可執行檔案

gcc -e hello.c -o hello.i              #將hello.c 轉換成預處理後的檔案hello.i

gcc -s hello.c -o hello.s              #將hello.c 轉換成彙編檔案 hello.s

gcc -c hello.c -o hello.o              #將hello.c 轉換成二進位制檔案 hello.o

gcc -i dir hello.c -o hello            # -i 後面加路徑,指定在dir路徑下尋找標頭檔案

gcc -wall hello.c -o hello             #顯示編譯過程中所有的警告資訊

gcc -g hello.c -o hello                #帶除錯資訊的程式,可以用gdb進行除錯

gcc -v hello.c -o hello                #顯示執行編譯階段的命令.同時顯示編譯器驅動程式,預處理器,編譯器的版本號

gcc -nostdinc -i dir hello.c -o hello  #不要在標準系統目錄中尋找標頭檔案.只搜尋`-i'選項指定的目錄(以及當前目錄)

編譯靜態鏈結庫

gcc -c hello.c -o hello.o                      #先生成目標檔案 .o  

ar crv hello.a hello.o                           #打包為 .a 的靜態鏈結庫檔案

gcc cxd.c -o cxd -l /root/desktop/hello.a               #呼叫自己的靜態鏈結庫

編譯動態鏈結庫

gcc -fpic -c hello.c                             #編譯成位置無關的 .o 檔案

gcc -shared hello.o -o hello.so             #生成動態鏈結庫

gcc cxd.c -o cxd -l /root/desktop/hello.so              #呼叫自己的動態鏈結庫

gdb偵錯程式

注1:需要除錯的程式在編譯的時候要加 -g 選項,程式才能進行除錯

注2:以下所有命令都可以簡寫首字母,例:info break ==> i b 除特殊宣告外

#gdb program  //進入除錯模式

#list file.c:fanction    //顯示file.c檔案中的fanction函式

#break file.c:fanction   //在file.c檔案中的fanction函式處打乙個斷點

#break file.c:100        //在file.c檔案中的第100行打乙個斷點

#info break              //檢視所有斷點

#delete break num        //刪除斷點號為 num 的斷點

#run             //開始執行程式

#bt              //顯示程式的棧

#watch expr      //監視 expr 變數,(每次執行到變數處就會列印變數的值)(watch 不能簡寫)

#print expr      //列印處 expr 變數的值,(當前執行函式中的變數)

#c               //繼續執行程式

#next            //單步執行

#quit            //退出除錯

GCC編譯器和GDB偵錯程式

gcc gnu compiler collection 是目前linux下最常用的c語言編譯器,它是gnu專案中符合ansi c標準的編譯系統,可以在多種硬體平台上編譯出可執行程式的超級編譯器,執行效率與一般的編譯器相比平均效率要高20 30 在終端中輸入下列命令 gcc options filen...

gcc編譯器和gdb偵錯程式

將高階語言 c語言 程式編譯成為機器可識別的指令 編譯過程 預處理 去掉注釋,展開所有 編譯 語義 語法糾錯,將 解釋成為彙編 彙編 將彙編 解釋成為機器指令 連線 鏈結 庫以及所有的目標檔案,生成可執行程式 庫檔案 大佬實現一些常用的功能介面,為了防止每次編譯耗費大量時間,因此將這些介面 進行編譯...

GCC編譯器和GDB偵錯程式常用選項

gcc hello.c o hello 將hello.c編譯成hello可執行檔案 gcc e hello.c o hello.i 將hello.c 轉換成預處理後的檔案hello.i gcc s hello.c o hello.s 將hello.c 轉換成彙編檔案 hello.s gcc c he...