
介紹與基本概念
|
5
Unix 系統—包括 Linux —所使用的編譯器與系統程式設計有密切的關係,因為編譯器
會協助實作 C 標準(見第 1 章〈C 語言標準〉一節)以及系統 ABI(見第 1 章〈API 與
ABI〉一節),本章稍後會加以說明。
C++
儘管本章的重點擺在做為系統程式設計通用語言的 C,但 C++ 卻扮演著重要的
角色。
到目前為止,系統程式設計領域,C++ 的地位仍不如 C。Linux 開發者偏愛 C 是
歷史使然:基礎程式庫、伺服程式、公用程式,當然也包括 Linux 核心,全都是
以 C 語言撰寫而成。但是在非 Linux 的環境中,C++ 的優勢在於它是一個更好的
C,在 Linux 中,C++ 只能充當配角。
儘管如此,閱讀本書的時候,把出現 C 的地方換成 C++ 通常不會有什麼問題。事
實上,C++ 是 C 的絕佳替代品,適用於任何的系統程式設計工作:C++ 程式碼可
以鏈結 C 程式碼、調用 Linux 系統呼叫以及利用
glibc
。
C++ 程式設計為系統程式設計的基礎多添加了兩個基石:標準 C++ 程式庫以及
GNU C++ 編譯器。
libstdc++
程式庫(有時寫成
libstdcxx
)所提供的標準 C++ 程式
庫,實作了 C++ 系統介面以及 ISO C++11 標準。
g++
執行檔(binary)所提供的
GNU C++ compiler
是 Linux 系統上之 C++ 程式碼的標準編譯器。
API 與 ABI
程式設計者自然會想要確保自己的程式能夠在自己承諾過要支援的所有系統上執行,不 ...