【C++】g++
阿新 • • 發佈:2018-11-21
g++ 應用說明
程式 g++ 是將 gcc 預設語言設為 C++ 的一個特殊的版本,連結時它自動使用 C++ 標準庫而不用 C 標準庫。通過遵循原始碼的命名規範並指定對應庫的名字,用 gcc 來編譯連結 C++ 程式是可行的,如下例所示:
$ gcc main.cpp -lstdc++ -o main
下面是一個儲存在檔案 helloworld.cpp 中一個簡單的 C++ 程式的程式碼:
#include <iostream> using namespace std; int main() { cout << "Hello, world!" << endl; return 0; }
最簡單的編譯方式:
$ g++ helloworld.cpp
由於命令列中未指定可執行程式的檔名,編譯器採用預設的 a.out。程式可以這樣來執行:
$ ./a.out
Hello, world!
通常我們使用 -o 選項指定可執行程式的檔名,以下例項生成一個 helloworld 的可執行檔案:
$ g++ helloworld.cpp -o helloworld
執行 helloworld:
$ ./helloworld
Hello, world!
如果是多個 C++ 程式碼檔案,如 runoob1.cpp、runoob2.cpp,編譯命令如下:
$ g++ runoob1.cpp runoob2.cpp -o runoob
生成一個 runoob 可執行檔案。
g++ 有些系統預設是使用 C++98,我們可以指定使用 C++11 來編譯 main.cpp 檔案:
g++ -g -Wall -std=c++11 main.cpp
g++ 常用命令選項
選項 | 解釋 |
---|---|
-ansi | 只支援 ANSI 標準的 C 語法。這一選項將禁止 GNU C 的某些特色, 例如 asm 或 typeof 關鍵詞。 |
-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 | 生成所有警告資訊。 |