Linux環境下最常用的編譯器應該要數gcc/g++,除非不是使用C/C++作為程式設計語言。gcc和g++是Linux平台編譯器的事實標準。
GCC程式的編譯過程:
使用gcc/g++編譯器時,編譯過程應該分為4個階段:
1、預先處理(Pre-Processing);
2、編譯(Compiling);
3、彙編(Assembling);
4、連結(Linking)。
gcc可以對檔案進行編譯,通常僅需要一條指令。
假如我們有一個命名為hello.cpp的“hello,world!”檔案,想對其進行編譯,輸出想要的結果。僅需要下面一條指令就可以完成:
gcc hello.cpp -o hello
有些時候,往往需要處理一些意想不到的情況,而需要編譯器過程中的某些中間檔案,gcc也可以使用分步來執行編譯檔案。分步編譯使用參數“-E,-S,-o”可以分別得到*.i,*.s,*.o檔案,這些都是中間檔案。
檔案*.i 是預先處理產生的檔案;檔案*.s 是編譯後產生的組合語言檔案;檔案*.o 彙編產生的二進位機器代碼。
總的過程可以用以下指令:
gcc -E hello.cpp -o hello.igcc -S hello.i -o hello.ogcc hello.o -o hello
最終產生可執行檔hello
還可以省略中間一些步驟,將上面過程簡化為:
gcc -c hello.cpp -o hello.ogcc hello.o -o hello
從上面的指令可以看得出,gcc的基本用法是:
gcc <options> [filename]
其中參數可以參考說明文檔,以下僅列出常用的以下參數:
● -c 只編譯,不連結成可自行檔案,也就是產生一個*.o的檔案。
● -o output_filename 確定輸出檔案名,沒有確定就會產生一個預設檔案名稱a.out。
● -g 產生調試資訊。
● -O 對程式進行最佳化編譯,連結。
● -Wall 輸出所有警告資訊。
● -w 關閉所有警告資訊。
● -Idirname 將名為dirname的目錄加入到程式標頭檔目錄列表。
PS:
剛安裝Ubuntu的時候還專門下載了個Code::Blocks用來寫C++代碼,經過這幾天對Vim和gcc/g++的摸索和學習,終於可以將Code::Blocks這個小東西徹底捨棄卸載掉了。
3月20日安裝了Ubuntu 12.04 LTS到現在可以使用Linux來寫程式,使用終端CLI也在逐漸習慣,對於基本的命令也算是比較熟悉了。
學習Linux大大得益於www.LinuxCast.net的視頻,《Linux入門基礎》基本已經看完,接著就是看看書,將內容好好理順一遍。