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