天天看點

GCC編譯器的基本常識

C程式以檔案為機關進行編譯

1、 編譯器GCC:可多檔案編譯

2、 調試器GDB

3、 工程管理器——Make:多檔案操作(靈活性高,效率高)

4、 腳本——Shell:程式可直接執行,不需編譯(順序結構)

源檔案.c——>預處理.i——>編譯.o(二進制)——>連結——>可執行.exe或.out(Linux環境下)[二進制]

注:gcc規定使用main函數,在硬體開發中使用Main函數

程式設計格式:

單目運算符前後用空格隔開,雙目運算符不隔;

循環體語句按4個空格縮進;

檔案指令用字母開頭,不得用數字開頭;

注釋分為兩種:1、//表示 2、/xxx/表示;

Int與return 0一起使用

gcc編譯器的基本用法:

gcc [options] [filenames]

options:編譯器所需要的編譯選項

filenames:要編譯的檔案名

gcc [-Wall] [-O1…3] [-g] [-o name] file…

-Wall:打開所有警告項;

-O:設定優化級别,O0表示關閉優化功能;

-g:将調試資訊編譯到目标檔案中;

-o name:指定輸出檔案的名稱是name,否則預設為a.out;

-E:預處理;gcc -E hello.c(不生成任何輸出檔案)

-c:隻編譯,生成目标檔案,不連接配接成可執行檔案;gcc -c hello.c相當于gcc -c hello.c -o hello.o

-DPI=3.14159:宏定義PI=3.14159;

-UPI:取消宏定義PI

-Idirname:将dirname所指出的目錄加入到程式頭檔案目錄清單中;

-Ldirname:将dirname所指出的目錄加入到庫檔案目錄清單中;

-lname:連結名為libname.a;

例如:-lm表示連接配接名為“libm.a”的數學函數庫

-static:靜态連結庫檔案

靜态庫字尾名為.a

動态庫字尾名為.so

靜态庫的建立:

vim 源檔案.c

gcc -c 源檔案.c

ar rcs 靜态庫名 目标檔案1 目标檔案2

注rc:靜态庫不存在,就建立該庫檔案

s:更新庫檔案

使用:gcc -o file file.c –L. -lname

ar -t libname.a 檢視庫

ar -d libname.a add.o 從庫中删除add.o檔案

ar -dv libname.a add.o 從庫中删除add.o檔案并提示删除資訊

ar -xv libname.a add.o 從庫中提取add.o檔案(相當于複制)

動态庫的建立:

gcc -shared -fPIC -o庫名.so 源檔案.c

使用:gcc 源檔案.c ./庫名.so –o 可執行檔案名

繼續閱讀