GCC编译器和GDB调试器常用选项
GCC編譯器
gcc hello.c -o hello?????????????????? #將hello.c編譯成hello可執行文件
gcc -E hello.c -o hello.i????????????? #將hello.c 轉換成預處理后的文件hello.igcc -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调试器常用选项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 预处理指令 #pragma 的使用
- 下一篇: Hive 禁止提交 大范围磁盘扫描任务(