linux GCC、GDB、Makefile
?GCC,GDB和MAKE
????GCC?入門
????前面已經提到過,linux的發展離不開GNU計劃,而GNU的貢獻就在于推出了很多高質量的免費的軟件。而其中的GNU(全稱為:GNU?C??Compiler)又是具有卓越貢獻的軟件。
GCC?的一般命令為?gcc?[-選項1]?源文件名?[-選項2]?目標文件名
gcc??????hello.c??-o???hello???直接一步編譯到底
gcc??-E??hello.c??-o???hello.i????只進行預處理
gcc??-S??hello.i??-o???hello.s????只進行編譯,產生匯編程序
gcc??-c???hello.s??-o???hello.o????只進行匯編
gcc??????hello.o??-o??hello.exe???只進行鏈接
-o?的作用是指定文件名
另外選項1?如果是?-O?就是優化編譯,編譯后的程序效率會高一些。可以用命令?time?./hellol來查看一個可執行文件的執行時間
選項1?如果是?-static?就表明是靜態鏈接。GCC默認是動態鏈接。?
選項1?如果是?-g??就表明產生GDB調試所必須的符號信息。
ldd?hello.exe??查看所需要的庫
GCC默認的頭文件搜索路徑為?:?usr/include目錄
GCC默認的鏈接文件搜索路徑是:/usr/lib目錄。為什么需要鏈接?比如像printf?這樣的函數,在程序里面用到了,并且所包含的頭文件里面只有該函數的聲明而沒有該函數的定義,所以就需要鏈接。庫文件的后綴名為.a?的為靜態鏈接庫?.so的為動態鏈接庫。Gcc默認為動態鏈接庫。
GDB?入門
1:Gdb常用命令
List(l)??:查看程序
Break(b)??函數名/行號?:?設置斷點
Info?break??:打印所有斷點
Delete?斷點編號?:刪除斷點
Run(r)?:全速運行執行程序,除非有斷點
Continue(c):繼續全速執行程序
Next(n)?:單步運行程序,不進入子函數
Step(s)?:單步執行程序,進入子函數
Print(p)?變量名:打印變量值
Quit(q)???退出
GNU?Make
1)?地位:linux程序員必須學會gnu?make來構建和管理自己的軟件工程。GNU的make可以使整個軟件工程的編譯,鏈接只需要一個命令。
2)?語法:
A)目標:依賴
命令
B)?注意命令之前以tab鍵空
C)?對于沒有依賴的目標,比如進行聲明,用.PHONY例如:
???.PHONY??clean
???clean:
??? rm?……
D)幾個特殊的符號:$^?代表所有的依賴;$<?代表第一個依賴文件?;$@?代表目標
?3)多源文件的Makefile實例
總結
以上是生活随笔為你收集整理的linux GCC、GDB、Makefile的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Photoshop基础教程:星空幻想
- 下一篇: linux 头文件汇总