Linux上的C C 編譯器gcc egcs詳解

2021-04-09 09:02:28 字數 1586 閱讀 8591

一.執行 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...