1991:gcc 與 g++——自由軟體編譯器時代#
事件#
1987 年 Richard Stallman 發起 GCC(GNU Compiler Collection)計畫,1991 年前後 g++(GCC 的 C++ 前端)逐步可用,成為自由軟體世界的 C++ 編譯器。GCC 之後成為 Linux 世界的事實標準。
為何重要#
- 免費的 C++ 編譯器:C++ 不再绑死在昂貴的商業編譯器(Sun、Borland、Microsoft)上,學生與開源社群得以大規模使用。
- GCC 的開放授權(GPL) 催生了完整的自由軟體工具鏈:binutils、gdb、make、libstdc++——C++ 的開源生態就此打底。
- GCC 對標準的快速跟進(雖然有時超前於標準),讓 ISO 標準(1998 C++98、2011 C++11)能迅速落地。
理論與實用原因#
- 理論原因:自由軟體運動(Stallman 1983 GNU 宣言)——軟體應可自由使用、修改、散佈。
- 實用原因:商業編譯器動輒數千美元,且绑死特定平台;GCC 讓 UNIX-like 系統(後來的 Linux)有了統一的工具鏈。
彌補了什麼缺陷#
彌補了 C++ 工具鏈「商業壟斷、價格昂貴、平台绑定」的缺陷——這是 C++ 能夠成為「跨平台系統語言」的關鍵一步。
程式範例#
先寫一個簡單的 hello.cpp:
#include <iostream>
int main() {
std::cout << "Hello, GNU C++!" << std::endl;
return 0;
}
用 g++ 編譯與執行的基本流程:
# 直接編譯並連結成執行檔(-Wall 開啟常見警告)
g++ -std=c++98 -Wall hello.cpp -o hello
# 分步驟:先只編譯出目的檔(-c),再手動連結
g++ -c hello.cpp -o hello.o
g++ hello.o -o hello
# 執行
./hello
# 查詢 g++ 版本與編譯過程細節
g++ --version
g++ -v hello.cpp -o hello