在WINDOWS環境下配置C語言編譯環境
注:本篇文章同樣適用於 C++
為什么需要配置
要想讓自己寫出來的 C 語言源代碼程序 ( *.c 源代碼文件
) 轉換為可以直接運行的二進制程序 (*.exe 可執行文件
) , 從實質上解釋, 就是我們需要一個轉換器用來將 C 這門人能夠理解的 高 級語言轉換為機器能夠識別執行的 低 級語言。這個轉換的過程,我們稱之為編譯
。
從專業角度來分析,這里的轉換器我們用一個專有名詞 編譯器
來稱呼它。
在 Linux 平台上,C語言的編譯器是 GCC
(GNU Compiler Collection),利用 Linux 自帶的包管理器我們很快就能安裝上然后使用(幾乎是安裝即用)(甚至 Linux 其本身就是用 C 寫的),然后我們便可以使用例如 Vim 之類的編輯器編寫代碼,並馬上可以調用 GCC
進行編譯調試( 目標格式 *. out
)。
GCC
與 Linux 均包含在 GNU
(一套理想且自由的操作系統)項目內,他們倆的關系就像哥哥與弟弟一樣親密。
而在Windows平台上,這個編譯器是 MinGW
(Minimalist GNU for Windows),又稱 “ mingw32 ”,是將 GCC
編譯器和 GNU Binutils
(一種分析二進制文件的工具) 移植到 Win32
平台下的產物,包括一系列頭文件( Win32API )、庫 和 可執行文件。它可以產生32位的Windows可執行文件( *.exe
),但是 MinGW
太老了,現在Windows平台大多是64位的,使用32位程序已經不能使電腦性能得到充分利用。但還好,我們還有 MinGW-w64
,這個項目最初是從原 MinGW
產生的分支,后來分離出去獨立發展了。MinGW-w64
可以產生 32位及64位 Windows 可執行文件,可滿足用戶對支持64位的要求,同時其支持的平台也大大擴展,從只能運行在 Windows 平台的 MinGW
,到能在Win32、Win64、Linux32、Linux64等主流平台上都有版本可用的 MinGW-w64
。
如何配置 MinGW-w64
下載二進制文件
MinGW-w64
將自己所有的源代碼以及自身編譯后的二進制文件都發布在了 Sourceforge
(全球最大的開放源代碼軟件開發平台和倉庫)。
你可以點擊這里來進入它的版本歸檔界面→Sourceforge
你應該會看到如下界面
( 截至我寫這篇文章時(2020-06-30),目前 MinGW-w64
GCC
最新版本為 v8.1.0 )
我們可以在介紹里看到 MGW
的多個歷史版本,還有它支持的各類處理器平台版本。
我們可以看到版本表里最新 v8.1.0 版本的下載選項多達8項,一般的我們下載 x86_64-posix-sjlj
這個版本就行了。
(點擊名稱即可開始下載)
若你具有很強的動手能力,你可以下載發布頁里的壓縮包,他們是 MinGW-w64
的源代碼,你可以試着親自把他們編譯為二進制文件。
你可以點擊這里來進入它的版本發布界面→Sourceforge
由於SF服務器在國外,有時下載體驗會十分糟糕。
有梯子的小伙伴請用梯子下載。
當然你也可以找國內靠譜的軟件源進行下載。
安裝並配置系統變量
安裝
壓縮包下載后,我們還需要選一個合適的位置將它解壓,而這個位置就相當於是安裝位置。
(壓縮包詳情)
(解壓文件到某位置)
注:為便於記憶,我們可以給解壓目標文件夾改個短一點的名字,例如 MinGW64
(解壓之后)
配置系統變量
解壓之后,我們打開目錄下的 bin
子文件夾,我們會看見一大堆沒圖標的 .exe 可執行文件,可能會讓你頭皮發麻,但是不用緊張。我們此時只需要記住當前這個 bin
文件夾的路徑。
然后我們需要對系統變量進行配置。
- 按下鍵盤上的【徽標鍵】+【Pause】組合鍵,打開系統屬性窗口。
- 單擊左側選項欄中的
高級系統設置
。 - 點擊
環境變量
按鈕。 - 在
系統變量
一欄中選擇Path
項,選擇編輯。 - 點擊 新建 ,將剛才復制的
bin
目錄粘貼進去,點擊確定。
我們給系統添加環境變量就類似於地圖軟件給我們預先規划好路線,等到出發時直接照路線走就行了,而不至於出發時臨時到處去問路。
驗證安裝
當你看到這時,你的安裝配置都應該已經完成了。
現在我們還需要進行最后一步,驗證安裝。
(簡單點就是看你到底裝沒裝上)
-
按鍵盤上的【徽標鍵】+【X】打開快捷菜單。
-
選擇
Windows PowerShell
選項 -
在出現的 PowerShell 命令行窗口中 輸入
gcc -v
-
回車,觀察現象。
(出現上圖的信息說明一切順利)
雜談
GCC (GNU Compiler Collection,GNU編譯器套件)是由GNU開發的編程語言譯器。GNU編譯器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go語言前端,也包括了這些語言的庫(如libstdc++,libgcj等。)
——百科詞條-GCC
GCC
並不單純只支持 C 語言的編譯,它還支持其他幾種編程語言,例如Java
,C++
。
還記得那個令人頭皮發麻的 bin
文件夾嗎。
那里邊的 exe 便是這些語言的編譯前端。
例如里邊的:
- 這個
g++.exe
是C++
的編譯器,它不僅可以編譯C++
源代碼,還可以編譯C
源代碼。 gcc.exe
此 gcc 非彼GCC
,這個文件是C
語言的編譯器,但它不可以編輯C++
源代碼。