標籤:io strong 檔案 ar 時間 new 管理 ef
n 基本架構:
a) Gcc 主要特徵
b) Gcc編譯四個步驟:預先處理---》編譯---》彙編---》連結
c) Gcc常用選項
d) Gcc編譯多檔案
- 1. Gcc主要特徵
(1) gcc支援多種硬體平台;
(2) 能夠跨平台交叉編譯,可以編譯出能夠在其它硬體平台上啟動並執行程式。
- 2. Gcc編譯四個步驟
四個步驟:預先處理---》編譯---》彙編---》連結
(1) hello.c-à前置處理器(cpp)-àhello.i--à編譯器(ccl)-àhello.s(組譯工具)-à彙編器(as)-àhello.o(可重定位目標程式)
(2) hello.o和庫檔案--à連結器(ld)---à可執行程式
- 3. Gcc常用選項
(1) -o 產生目標(.i、.s、.o、可執行檔) 記憶技巧:iso ESc
(2) -E 預先處理
(3) -S 產生彙編檔案(大寫的S)
(4) -c 取消連結步驟,產生.o檔案
(5) -Wall 編譯時間對錯誤發出警告,編譯的時候最好加上 -Wall(warning all)。
(6) -I 添加標頭檔的搜尋路徑
(7) -L 添加庫檔案的搜尋路徑
(8) -llib 連結lib庫
(9) -g 在目標檔案中嵌入調試資訊,方便gdb調試。
將一些debug資訊存放到目標檔案和可執行檔裡的一個符號表 (symbol table) 裡。
* gcc -v 顯示編譯過程的詳細資料,當程式有錯誤時,可以用來協助尋找錯誤。
- 4. Gcc編譯多檔案
例子:假如有三個檔案:hello_fn.h hello_fn.c main.c
(1) 一次性編譯: gcc hello_fn.c main.c -o newhello
(2) 獨立編譯:
Gcc -Wall -c main.c -o main.o
Gcc -Wall -c hello_fn.c –o hello_fn.o
Gcc -Wall main.o hello_fn.o -o newhello
獨立編譯的方法較好,在大的項目工程中,只需對更改過的檔案重新編譯,這樣可以節省相當多的時間。
在具體工程實踐中需要用Makefile檔案對其管理。
- 一些細節:
gcc --version 查詢gcc的版本
which gcc 查詢gcc的安裝目錄