gcc編譯c語言

摘自《Linux程序設計》第四版,人民郵電出版社函數

c語言程序的編譯與調試
<<使用gcc編譯,gdb調試>>


程序編譯過程:
詞法分析-->語法分析-->中間代碼生成-->代碼優化-->目標代碼生成
gcc編譯器:
預處理(preprocessing)-->編譯(compilation)-->彙編(assembly)-->鏈接(link)

文件後綴名說明:
.c:c語言代碼
.a:由目標文件構成的庫文件
.C,.cc,.cpp:C++代碼
.h:程序所包含的頭文件
.i:已經預處理過c源文件,通常爲中間代碼文件
.ii:通過預處理過的C++源文件
.o:編譯後的目標文件,源文件生成的中間目標文件
.s:彙編語言的源代碼
.S:通過與編譯彙編源代碼
.O:編譯之後的程序目標文件,目標文件通過鏈接成的執行文件


gcc:編譯程序
    -o:指定編譯輸出文件(默認輸出到當前文件夾a.out)    
        gcc a.c -o test.out
    -v:查看程序編譯過程和顯示已經調用的庫
        gcc -v a.c
    -x:指定編譯語言(用在編譯器不能識別的擴展名)
        gcc -x 'c' a.u
    -asci:指定編譯程序使用ansic標準
    -E:只進行完預編譯(.cxx)
    -S:只進行到生成彙編文件(.s)
    -c:只生成目錄代碼,不生成可執行程序(.o)
    
    -g:使用gdb調試程序,配合-o輸出xxx.debug文件

編譯過程控制:
              -E            -S          -c
    源文件--->預處理文件--->彙編文件--->目標文件--->可執行文件

gdb:調試程序
    gdb:啓動調試環境
        file xxx.debug:加載調試文件
        list n:從n開始顯示十行
        break n:在n行添加斷點
        info breakpoint [n]:查看程序中設置的斷點/查看n個斷點
        next:程序運行到下一行停下
        continue:程序會運行到下一個斷點停下
        step:一行一行運行(同next),只是step能夠到調用函數內部
        print:輸出變量當前值                                    
    delete n:刪除n個斷點
    q:退出環境

優化

相關文章
相關標籤/搜索