一.執行 gcc/egcs
linux 中最重要的軟體開發工具是 gcc。gcc 是 gnu 的 c 和 c++ 編譯器。實際上,gcc能夠編譯三種語言:c、c++和objectc(c語言的一種物件導向擴充套件)。利用 gcc 命令可同時編譯並連線 c 和 c++ 源程式。
#demo#: hello.c
清單 factorial.c
#include
#include
int factorial (int n)
清單 main.c
#include
#include
int factorial (int n);
int main (int argc, char **argv)
else
return 0;
} 利用如下的命令可編譯生成可執行檔案,並執行程式:
$ gcc -o factorial main.c factorial.c
$ ./factorial 5
factorial of 5 is 120.
gcc 可同時用來編譯 c 程式和 c++ 程式。一般來說,c 編譯器通過原始檔的字尾名來判斷是 c 程式還是 c++ 程式。在 linux 中,c 原始檔的字尾名為 .c,而 c++ 原始檔的字尾名為 .c 或 .cpp。
但是,gcc 命令只能編譯 c++ 原始檔,而不能自動和 c++ 程式使用的庫連線。因此,通常使用 g++ 命令來完成 c++ 程式的編譯和連線,該程式會自動呼叫 gcc 實現編譯。
假設我們有乙個如下的 c++ 原始檔(hello.c):
#include
void main (void)
cout << "hello, world!" << endl;
則可以如下呼叫 g++ 命令編譯、連線並生成可執行檔案:
$ g++ -o hello hello.c
$ ./hello
hello, world!
二.gcc/egcs 的主要選項
-c 只編譯並生成目標檔案。
-dmacro 以字串「1」定義 macro 巨集。
-dmacro=defn 以字串「defn」定義 macro 巨集。
-e 只執行 c 預編譯器。
-g 生成除錯資訊。gnu 偵錯程式可利用該資訊。
-idirectory 指定額外的標頭檔案搜尋路徑directory。
-ldirectory 指定額外的函式庫搜尋路徑directory。
-llibrary 連線時搜尋指定的函式庫library。
-m486 針對 486 進行**優化。
-o file 生成指定的輸出檔案。用在生成可執行檔案時。
-o0 不進行優化處理。
-o 或 -o1 優化生成**。
-o2 進一步優化。
-o3 比 -o2 更進一步優化,包括 inline 函式。
-shared 生成共享目標檔案。通常用在建立共享庫時。
-static 禁止使用共享連線。
-umacro 取消對 macro 巨集的定義。
-w 不生成任何警告資訊。
-wall 生成所有警告資訊。
linux上的C C 編譯器gcc egcs詳解
一.執行 gcc egcs linux 中最重要的軟體開發工具是 gcc。gcc 是 gnu 的 c 和 c 編譯器。實際上,gcc能夠編譯三種語言 c c 和objectc c語言的一種物件導向擴充套件 利用 gcc 命令可同時編譯並連線 c 和 c 源程式。demo hello.c 清單 fac...
Linux上的C C 編譯器gcc egcs詳解
include include int factorial int n 清單 main.c include include int factorial int n int main int argc,char argv else return 0 利用如下的命令可編譯生成可執行檔案,並執行程式 gc...
Linux上的C C 編譯器gcc egcs詳解
一.執行 gcc egcs linux 中最重要的軟體開發工具是 gcc。gcc 是 gnu 的 c 和 c 編譯器。實際上,gcc能夠編譯三種語言 c c 和objectc c語言的一種物件導向擴充套件 利用 gcc 命令可同時編譯並連線 c 和 c 源程式。demo hello.c 清單 fac...