Linux的編譯器,偵錯程式和專案的自動化構建工具

2021-10-09 03:32:49 字數 3257 閱讀 1067

**必須編譯成可執行程式才可以執行

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版本

linux下使用編譯器gcc&g++編譯出來的程式預設是release版本

要使用gdb偵錯程式,就必須在編譯的時候加上-g選項

gdb使用的操作和描述:

操作描述

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...