1. 程式人生 > >【C++】g++

【C++】g++

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 生成所有警告資訊。