1. 程式人生 > >Linux筆記(11.10)

Linux筆記(11.10)

gcc 編譯器(可做多檔案編譯)
gdb 偵錯程式(功能除錯)
make 工程管理器(多檔案操作)
shell 指令碼
原始檔(.c)–>預處理(.i)–>編譯(.o)–>連結–>可執行(.exe |.out)
gcc
-o 確定可執行檔案的名稱(預設a.out)
-E預處理(gcc -E hello.c -o hello.i)
-c 只編譯,不生成可執行檔案(生成.o的目標檔案)
-S彙編程式碼
-O【0~3】優化
-g產生除錯工具(gdb)所必需的符號資訊
-D巨集定義
-u刪除巨集定義
-I增加一個搜尋標頭檔案的目錄
-I-取消搜尋路徑
-L增加一個搜尋庫檔案的目錄
-lm數學函式庫
靜態庫:
1。原始碼(.c)
2。生成.o目標檔案(gcc -c)
3。放到庫裡(ar rcs[rc不存在就建立該庫檔案,s更新庫檔案])
建立庫:ar rcs libname.a .o
使用庫:gcc file.c -o file -L. -lname
動態庫:gcc -shared -fPIC -o

庫名.so +原始檔.c(建立動態庫)
gcc 原始檔.c ./庫名.so -o +可執行檔名(使用動態庫)
gdb(除錯系統下):
1。$ gcc -g test.c -o test 編譯生成可執行檔案
2。$gdb test 啟動gdb
3。break (b) 設定斷點
4。run (r) 執行程式
5。next(n)或回車 單步執行(不進入子函式)
6。continue (c) 繼續進行
step(s)單步執行(進入子函式)
info break 檢視斷點
finish 執行程式,直到當前函式結束
q退出gdb模式
list(l)檢視程式(只顯示10行)
print§+變數 顯示指定變數的值(顯示的變數不會隨變數改變而改變)
watch+變數 對指定變數監控(顯示的變數會隨變數改變而改變)
delete+斷點編號(Breakpoint1。。。)刪除斷點
b(行號)在指定行設定斷點
b(行號)if 條件(b 5 if i=10)–>當i=10時第五行斷點生效
clear(行號/函式名)刪除指定行/函式名斷點(不加則刪除所有斷點)
makefire(make)工程管理器
編寫規則:
1。需要由make工具建立目標體 通常是目標檔案或可執行檔案(第一個是終極檔案)
2。要建立的目標體所依賴的檔案,建立每個目標體時的命令,這一行必須以tab開頭(tab是命令的引導詞)
在這裡插入圖片描述