gcc編譯器
gcc又是乙個交叉平台編譯器
gcc的基本用法
gcc hello.c -o hello
檔案命名要用英文開頭
-wall:開啟所有警告項
-o:設定優化級別,o0表示關閉優化功能,-o預設為-o1
-g:將除錯資訊編譯到目標檔案中【插入除錯資訊】(gdb)
-c:只編譯,生成.o目標檔案【自動生成】
-e:預處理
gcc -e hello.c //對hello.c預處理,但不生成預處理檔案
gcc -e hello.c -o hello.i //對hello.c預處理,生成hello.i
-s:生成彙編檔案
gcc -s hello.c -o hello.asm
-d:定義巨集
eg:-dmacro,即定義macro巨集,等於#define macro
-i:將目錄加到程式檔案目錄中【增加乙個搜尋標頭檔案的目錄】
eg -i ./include
-l:將目錄駕到庫檔案的目錄列表中。【找對應的庫】
-l ./sqlit
-l:指定庫名
-lname
靜態庫(.a)
庫整合到程式中,使程式臃腫,難以公升級,但是不需要尋找庫檔案的位置
靜態庫的命名:libname.a【name為庫的命名】
靜態庫的使用:gcc -o file flie.c -l. -lname
靜態庫的建立:1、gcc -c 原始檔.c
2、ar rcs 靜態庫名 目標檔案1 目標檔案2
rc:靜態庫不存在,就建立該庫檔案
s:更新庫檔案
ar -t libmyrand.a //檢視庫檔案
ar -d libmyrand.a add.o //把add.o從庫函式中刪除,沒有錯誤提示
ar -dv linmyrand.a add.o //把add.o從庫檔案中刪除,有錯誤提示
動態庫:1、動態共享庫 2、動態鏈結庫
動態庫的命名:libname.so【name為庫的命名】
動態庫的建立:gcc -shared -fpic -o 庫名.so 原始檔.c
動態庫的使用:gcc 原始檔.c ./庫名.so -o 可執行檔名
gdb偵錯程式
gcc -g test.c -o test
gdb test //進入gdb除錯模式
功能:除錯程式
除錯命令:
list(l):檢視程式,可跟行號
break(b):設定斷點
b 函式名:函式入口處新增斷點
b 行號:行號處新增斷點
b 行號 if 條件 :當條件為真時,斷點生效。eg:b 5 if i = 10 當i=10時,第五行斷點
delete 斷點編號:刪除斷點
clean 刪除所有斷點
clean +行號或者檔名
run(r)開始執行
next(n)單步執行(不進入呼叫函式)
step(s)單步執行(進入呼叫函式)
continue(c)繼續執行程式
print(p)變數名:檢視指定變數值
finish 執行程式:直到當前函式結束
watch 變數名:對指定變數進行監控
quit(q)退出gdb
工程檔案管理器make
makefile【預設】,makefile也可以。同乙個目錄最好只有乙個。
makefile是make讀入的唯一配置檔案
在makefile中通常包含如下內容:
1、需要由make工具建立的目標體(target)。通常是目標檔案/可執行檔案。【可執行檔案為終極目標。終極目標只有乙個。】
2、要建立的目標體所依賴的檔案【.o】。建立每個目標體時需要執行的命令(command),這一行必須以製表符(tab鍵)開頭。
eg:
在命令臺:
vim makefile //建立makefile檔案
在檔案中編寫:
hello: hello.o
gcc -o hello hello.o
hello.o:hello.c
gcc -c hello.c
在命令臺:
#make
#./hello
Linux基本知識
linux環境 ubuntu 14.x 二 shell環境 在ubuntu下進入shell命令介面 ctrl alt f3 f6 退出命令介面 ctrl alt f7 shell常用命令 更改賬目密碼 passwd 檢視當前目錄 pwd 列出當前目錄先得所用檔案和目錄,後可加選項 ls 新建資料夾 ...
linux 基本知識
網路 1 網路介面 1 網路介面的命名 eth0 ethernet的簡寫,一般用於乙太網介面。wifi0 wifi是無線區域網,因此wifi0一般指無線網路介面。ath0 atheros的簡寫,一般指atheros晶元所包含的無線網路介面。lo local的簡寫,一般指本地環迴介面。2 網路介面如何...
Linux基本知識
linux嚴格區分大小寫 linux一切皆檔案 linux不靠副檔名區分檔案型別 linux中所有的儲存裝置都必須在掛載之後才能使用 windows下的程式不能直接在linux中使用。了解 linux目錄結構 bin 存放系統命令的目錄,普通使用者和超級使用者都可以執行。是 usr bin 目錄的軟...