GCC使用教程——GCC是什麼?

整理學習來自:https://www.xinbaoku.com/gcc/

對於 GCC 的認知,很多讀者還僅停留在“GCC 是一個C語言編譯器”的層面,是很片面的。從本節開始,我將帶領大家系統學習 GCC,本節先帶領大家系統地瞭解一下 GCC。

談到 GCC,就不得不提 GNU 計劃。GNU 全稱 GNU's Not UNIX,又被稱爲“革奴計劃”,由理查德·斯托曼於 1983 年發起。GNU 計劃的最終目標是打造出一套完全自由(即自由使用、自由更改、自由發佈)、開源的操作系統,並初步將其命名爲 GNU 操作系統(其 logo 如圖 1 所示)。

GNU計劃的logo:非洲牛羚
圖 1 GNU 操作系統的 logo:非洲牛羚


GNU 計劃的實施可謂一波三折,最重要的一點是,雖然該計劃爲 GNU 操作系統量身定做了名爲 Thr Hurd 的系統內核,但由於其性能比不上同時期誕生的 Linux 內核,最終 GNU 計劃放棄 The Hurd 而選用 Linux 作爲 GNU 操作系統的內核。在 Linux 內核的基礎上,GNU 計劃開發了很多系統部件,GCC 就是其中之一(除此之外,還有 Emacs 等非常實用的軟件)。

由此看來,GNU 計劃最終實現了“打造一套自由、開源的操作系統”的初衷,但該操作系統並非完全產自 GNU 計劃,因此其被稱爲 GNU/Linux 操作系統(人們更習慣稱爲 Linux 操作系統)。注意,開源、自由並不等於免費,有關它們的區別,讀者可閱讀《開源就等於免費嗎?》一文。

早期 GCC 的全拼爲 GNU C Compiler,即 GUN 計劃誕生的 C 語言編譯器,顯然最初 GCC 的定位確實只用於編譯 C 語言。但經過這些年不斷的迭代,GCC 的功能得到了很大的擴展,它不僅可以用來編譯 C 語言程序,還可以處理 C++、Go、Objective -C 等多種編譯語言編寫的程序。與此同時,由於之前的 GNU C Compiler 已經無法完美詮釋 GCC 的含義,所以其英文全稱被重新定義爲  GNU Compiler Collection,即 GNU 編譯器套件。

所謂編譯器,可以簡單地將其理解爲“翻譯器”。要知道,計算機只認識二進制指令(僅有 0 和 1 組成的指令),我們日常編寫的 C 語言代碼、C++ 代碼、Go 代碼等,計算機根本無法識別,只有將程序中的每條語句翻譯成對應的二進制指令,計算機才能執行。

GCC 編譯器從而停止過改進。截止到今日(2020 年 5 月),GCC 已經從最初的 1.0 版本發展到了 10.1 版本,期間歷經了上百個版本的迭代。作爲一款最受歡迎的編譯器,GCC 被移植到數以千計的硬件/軟件平臺上,幾乎所有的 Linux 發行版也都默認安裝有 GCC 編譯器。

 

表1:GCC 支持的硬件平臺(部分)
硬件操作系統
Alpha Red Hat Linux 7.1
HPPA HPUX 11.0
Intel x86 Debian Linux 2.2、Red Hat Linux 6.2 和 FreeBSD 4.5
MIPS IRIX 6.5
PowerPC AIX 4.3.3
Sparc Solaris 2.7


值得一提的是,原汁原味的 GCC 編譯器沒有我們熟悉的界面窗口,要想使用它,必須編寫對應的 gcc 命令。所謂原汁原味,指的是純 GCC 編譯器和集成了 GCC 編譯器的開發軟件(IDE),和前者相比,後者在集成 GCC 編譯器功能的同時,還向用戶提供了友好的界面窗口,使得用戶即便記不住 gcc 命令,也能從事開發工作,這極大地降低了用戶的學習成本。

我們知道,操作系統大致分爲 2 大陣營,分別是 Windows 陣營和類 Unix 陣營(包括 Unix、Linux、Mac OS、安卓等)。通常情況下,Windows 系統下用戶更習慣使用現有的 IDE 來編譯程序;而類 Unix 系統下,用戶更喜歡直接編寫相應的 gcc 命令來編譯程序。

在瞭解什麼是 GCC 編譯器的基礎上,這裏以在 CentOS 操作系統(Linux 發行版之一)上使用 gcc 命令運行 C 語言程序爲例,讓讀者更直觀的感受一下 GCC 編譯器的功能和使用方法。

如下是我們在 vim 編輯器中編寫的一段完整的 C 語言程序,其功能是輸出一個 "Hello, World!":


Linux系統下編寫C語言程序
圖 1 Linux 系統下編寫 C 語言程序
對於此程序,我們可以使用如下的 gcc 命令:

gcc demo.c -o demo.exe

下圖演示瞭如何使用 gcc 命令將 C 語言代碼編譯成一個可執行文件:


gcc命令編譯C語言程序
圖 2 gcc 命令編譯 C 語言程序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章