GCC编译器和GDB调试器常用选项
GCC編譯器
gcc hello.c -o hello?????????????????? #將hello.c編譯成hello可執(zhí)行文件
gcc -E hello.c -o hello.i????????????? #將hello.c 轉(zhuǎn)換成預(yù)處理后的文件hello.igcc -S hello.c -o hello.S????????????? #將hello.c 轉(zhuǎn)換成匯編文件 hello.S
gcc -c hello.c -o hello.o????????????? #將hello.c 轉(zhuǎn)換成二進(jìn)制文件 hello.o
gcc -I dir hello.c -o hello??????????? # -I 后面加路徑,指定在dir路徑下尋找頭文件
gcc -Wall hello.c -o hello???????????? #顯示編譯過程中所有的警告信息
gcc -g hello.c -o hello ? ? ? ? ? ? ? ?#帶調(diào)試信息的程序,可以用GDB進(jìn)行調(diào)試
gcc -v hello.c -o hello??????????????? #顯示執(zhí)行編譯階段的命令.同時(shí)顯示編譯器驅(qū)動(dòng)程序,預(yù)處理器,編譯器的版本號(hào)
gcc -nostdinc -I dir hello.c -o hello? #不要在標(biāo)準(zhǔn)系統(tǒng)目錄中尋找頭文件.只搜索`-I'選項(xiàng)指定的目錄(以及當(dāng)前目錄)
編譯靜態(tài)鏈接庫(kù)
gcc -c hello.c -o hello.o???????????? ?? ? ? ? #先生成目標(biāo)文件 .o ?
ar crv hello.a hello.o?????????????????? ? ? ? ? #打包為 .a 的靜態(tài)鏈接庫(kù)文件
gcc cxd.c -o cxd -L /root/desktop/hello.a? ? ? ? ? ? ? ?#調(diào)用自己的靜態(tài)鏈接庫(kù)
編譯動(dòng)態(tài)鏈接庫(kù)
gcc -fPIC -c hello.c???????????????????????????? #編譯成位置無(wú)關(guān)的 .o 文件
gcc -shared hello.o -o hello.so ? ? ? ? ? ? #生成動(dòng)態(tài)鏈接庫(kù)
gcc cxd.c -o cxd -L /root/desktop/hello.so ? ? ? ? ? ? ?#調(diào)用自己的動(dòng)態(tài)鏈接庫(kù)
GDB調(diào)試器
注1:需要調(diào)試的程序在編譯的時(shí)候要加 -g 選項(xiàng),程序才能進(jìn)行調(diào)試
注2:以下所有命令都可以簡(jiǎn)寫首字母,例:info break ==> i b 除特殊聲明外
?? ?
?? ?#gdb program? //進(jìn)入調(diào)試模式
?? ?#list file.c:fanction??? //顯示file.c文件中的fanction函數(shù)
?? ?#break file.c:fanction?? //在file.c文件中的fanction函數(shù)處打一個(gè)斷點(diǎn)
?? ?#break file.c:100??????? //在file.c文件中的第100行打一個(gè)斷點(diǎn)
?? ?#info break????????????? //查看所有斷點(diǎn)
?? ?#delete break num??????? //刪除斷點(diǎn)號(hào)為 num 的斷點(diǎn)
?? ?#run???????????? //開始運(yùn)行程序
?? ?#bt????????????? //顯示程序的棧
?? ?#watch expr????? //監(jiān)視 expr 變量,(每次運(yùn)行到變量處就會(huì)打印變量的值)(watch 不能簡(jiǎn)寫)
?? ?#print expr????? //打印處 expr 變量的值,(當(dāng)前運(yùn)行函數(shù)中的變量)
?? ?#c?????????????? //繼續(xù)運(yùn)行程序
?? ?#next??????????? //單步運(yùn)行
?? ?#quit??????????? //退出調(diào)試
總結(jié)
以上是生活随笔為你收集整理的GCC编译器和GDB调试器常用选项的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 预处理指令 #pragma 的使用
- 下一篇: Hive 禁止提交 大范围磁盘扫描任务(