linux下程式設計師均採用gcc控制編譯過程,所以我們先從gcc的編譯過程講起
gcc編譯過程分為四個階段:
(1)預處理
(2)編譯
(3)彙編
(4)鏈結
gcc編譯工具可以控制在任何階段停止編譯,以下我們便來介紹使用
1.gcc語法格式
gcc 【編譯選項】【源檔名】
最常用的選項是 -o 生成可執行檔案,如果不指定目標檔名則生成a.out
格式:gcc -o 【目標檔名】 【源檔名】
2.編譯過程控制
過程簡介:首先是預處理 ,gcc會展開原始檔中的巨集並向其中插入include包含的內容(生成的檔案以 .i 為字尾);
接著將預處理後的原始碼編譯成目標**(生成的檔案以 .o為字尾,對應了上面講的編譯的(2)(3)過程);
最後將目標**鏈結成可執行檔案(我們通常所說的elf檔案,在ubuntu下是綠色的檔案);
可通過編譯選項的引數控制對應過程
-e:預處理後停止編譯(.i檔案)
-s:生成原始檔的彙編檔案(.s檔案)
3.關於警告的提示
-wall:顯示所以警告資訊
-w:禁止所有警告資訊
4.關於庫的依賴
先簡單介紹以下庫的相關知識,linux下的函式庫其實就是一些 .**件 .so檔案(動態鏈結庫) .a檔案(靜態鏈結庫)的集合。其中.so和.a結尾的檔案的最主要差別在於程式執行檔案時所需要的**是動態載入還是在編譯時靜態載入,預設編譯採用的是動態鏈結,可以通過-shared和-static分別指定是生成動態鏈結庫還是靜態鏈結所需要的庫。
linux下的預設庫搜尋路徑有/lib、/usr/lib、/usr/lib/local/,當我們進行開發時需要新增第三方庫時就需要新增一些標頭檔案或者庫檔案,這些都可以在編譯的時候通過編譯選項指定,下面我們就來介紹
-i【目錄名】:將指定的目錄新增到程式標頭檔案搜尋的目錄中(大寫的i,include的意思)
-l【目錄名】:向gcc庫檔案搜尋路徑中新增新的目錄
-l【庫名】:包含指定的庫(小寫的l,lib的意思)
5.例項演示
以hello.c為例子
6.**優化
編譯選項-o【n】(n取值範圍0,1,2,3 數值越大優化級別越高,-o等價-o1)可以優化編譯,我們採用time命令測試執行時間來舉例說明
Linux 安裝gcc編譯器
總結一下自己的學習經驗,學習時發現linux沒有安裝gcc,方式一 yum install gcc c 前提是可以聯網 方式二 進入linux桌面,找到 rpm ivh cpp 4.1.2 48.e15.i386.rpm 回車 rpm ivh kernel headers 2.6.18 194.el...
Linux 編譯器之 GCC
編輯器是指我用它來寫程式的 編輯 而我們寫的 語句,電腦是不懂的,我們需要把它轉成電腦能懂的語句,編譯器就是這樣的轉化工具。就是說,我們用編輯器編寫程式,由編譯器編譯後才可以執行!gcc gnu compiler collection,gnu 編譯器套件 是由gnu開發的程式語言編譯器。gcc 原本...
Linux編譯器GCC的使用
編譯流程的四個步驟 預處理編譯 彙編鏈結 hello.c 預處理 hello.i 編譯 hello.s 彙編 hello.o 鏈結 hello gcc編譯流程 gcc optio filename option e 可以使編譯器在預處理結束時就停止編譯。o 指的是目標檔案。s 可以使編譯器完成編譯時...