**必須編譯成可執行程式才可以執行命令:gcc&g++完成四步操作
1、預處理(標頭檔案展開和巨集替換)
2、編譯(生成彙編**)
3、彙編(生成機器指令)
4、鏈結(生成可執行程式)
gcc [選項] 需要編譯的檔案 [選項] 生成的目標檔案
功能:
進行程式的預處理,編譯,彙編,鏈結操作預處理:
gcc -e 需要預處理的檔案 -o 生成的目標檔案.i
1.主要包括巨集替換,檔案包含,條件編譯,去掉注釋編譯:命令:2、預處理處理的是#開頭的**行
gcc -s 需要預處理的檔案 -o 生成的目標檔案.s
1、檢查錯誤彙編:2、生成彙編**
gcc -c 需要預處理的檔案 -o 生成的目標檔案.o
1、將編譯階段生成的彙編**轉成目標檔案2、生成機器指令
gcc 需要預處理的檔案 -o 生成的目標檔案
生成可執行程式gcc預設生成的二進位制程式是動態鏈結的
gcc的選項引數及描述
選項描述
-e生成預處理.i檔案
-s生成彙編**.s檔案
-c生成機器指令.o檔案
-o生成可執行程式
-static
使用靜態鏈結
-g生成除錯資訊
-fpic
生成位置無關**
-l指定標頭檔案路徑
-l指定鏈結庫名稱
-shared
使用動態庫鏈結
-o0不優化
-o1預設引數,表示一級優化
-o2二級優化
-o3**優化
-w不生成警告資訊
-wall
生成所有警告資訊
程式的發布方式有release版本和debug版本gdb使用的操作和描述:linux下使用編譯器gcc&g++編譯出來的程式預設是release版本
要使用gdb偵錯程式,就必須在編譯的時候加上-g選項
操作描述
list+行號
顯示除錯程式的源**,接著上次的位置往下10行
list+函式名稱
列出某個函式的**
r或run
執行程式
n或next
單條執行
s或step
進入函式呼叫
b或break+行號
在某行打斷點
b或break+函式名
在某個函式開頭設定斷點
finish
執行到當前函式返回
p或print
列印表示式的值,通過表示式可以修改變數的值或者函式呼叫
p+變數
列印變數的值
set var
修改變數的值
c或continue
從當前位置開始連續非單步執行
dekete breakpoints
刪除所有斷點
delete breakpoints n
刪除編號為n的斷點
disable breakpoints
禁用所有斷點
enable breakpoints
啟用斷點
info breakpoints
檢視當前設定了哪些斷點
display 變數名
跟蹤或檢視乙個變數
undisplay
取消對先前變數的追蹤
util+行號
跳轉到某行
bt或breaktrace
檢視各級函式呼叫及引數
i或nfo locals
檢視當前棧區的變數值
quit
結束除錯
make是乙個命令,用來自動化編譯makefile檔案中的指令。符號描述
$<
第乙個依賴物件
$^所有依賴物件
$@目標物件
工作原理:
1、make會在當前目錄下找makefile檔案;專案的清理:2、make』將makefile下的第乙個檔案作為目標檔案
3、若是依賴物件不存在,則繼續向下找生產依賴物件的檔案,然後逐層遞迴向上編譯
4、若是沒找到,則直接報錯退出
目標物件是否需要重新生成,是根據依賴物件的最後修改時間來決定的
1、執行make clean指令操作2、我們將需要clean的目標檔案設定為偽目標,用.phony修飾,偽目標的特性就是,總是被執行
3、偽目標無論如何每次都要重新生成
描述git clone url
clone資源到本地
git add 檔案
git commit
提交改動到本地
git push
推送本地檔案到github伺服器
github配置免密提交
編譯器 偵錯程式
linux mac下使用的編譯器是不同的。linux下使用的是gcc編譯器。mac下使用的是clang編譯器。命令格式都是相通的。編譯命令的基本格式 g會在輸出檔案裡可以增加除錯資訊,編譯出的程式在執行過程 現的問題就可以用偵錯程式進行單步除錯。o實際是指令優化的級別。預設 o1是不對指令優化,所以...
linux上的C C 編譯器和偵錯程式
gnu 的偵錯程式稱為 gdb,該程式是乙個互動式工具,工作在字元模式。在 x window 系統中,有乙個 gdb 的 前端圖形工具,稱為 xxgdb。gdb 是功能強大的除錯程式,可完成如下的除錯任務 設定斷點 監視程式變數的值 程式的單步執行 修改變數的值。在可以使用 gdb 除錯程式之前,必...
GCC編譯器和GDB偵錯程式
gcc gnu compiler collection 是目前linux下最常用的c語言編譯器,它是gnu專案中符合ansi c標準的編譯系統,可以在多種硬體平台上編譯出可執行程式的超級編譯器,執行效率與一般的編譯器相比平均效率要高20 30 在終端中輸入下列命令 gcc options filen...