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 可執行檔案名