GCC編譯器和GDB調試器常用選項


http://blog.csdn.net/u014328976/article/details/46745349

 

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            //退出調試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM