在Windows系統下,除微軟的VS外,大多使用GCC作為編譯,現在的GCC并不是隻能在Linux系統上才能使用的編譯器,早已移值到了Windows系統下了。
由于VS的龐大,很多人員隻是學習一下C/C++語言,龐大的VS功能大多是用不到的,這時在Windows系統下GCC就是一個不錯的選擇。(需要學習Windows下應用程式開發的建議還是使用VS做為開發工具)
現在的GCC其實是一個套件,可以編譯C語言程式,也可以編譯C++語言程式
編譯C語言可以使用:gcc 指令
編譯C++語言可以用:g++ 指令
Windows系統下的IDE內建GCC編譯器有:Dev-C++(Dev CPP)、CodeBlocks等常見的IDE裡。
Dev-C++ v5.11 | gcc version 4.9.2 (tdm64-1) |
CodeBlocks v17.12 | gcc version 5.1.0 (tdm-1) |
GCC各發行版簡介:
MinGW | 隻有32位版---------------不推薦使用 |
MinGW-w64 | 提供 32位和64位--------更新最快,基本上gcc更近後幾周内就會跟進 |
TDM-GCC | 提供32位和64位---------更新速度也不怎麼樣 |
編譯器或IDE下載下傳位址:
MinGW:http://www.mingw.org
MinGW-w64:http://www.mingw-w64.org
TDM-GCC:http://tdm-gcc.tdragon.net
Dev-C++ v5.11:https://sourceforge.net/projects/orwelldevcpp
CodeBlocks v17.12:http://www.codeblocks.org
MinGW-W64 GCC安裝與配置
MinGW-w64下載下傳位址:https://sourceforge.net/projects/mingw-w64/files/
選擇合适的版本
i686純32位版供32位win系統使用
x86_64是64位系統用的版本
seh結尾是純64位編譯
sjlj結尾是32 64兩種編譯,需加-m32或-m64參數
posix通常用于跨平台,比win32相容性好一些
我這裡選擇的是:MinGW-W64 GCC-8.1.0 x86_64-posix-sjlj (已經編譯好的壓縮包,并非線上安裝程式)
配置過程:
- 下載下傳壓縮包
- 将壓縮包解壓到硬碟
- 配置編譯環境
假設我這裡将下載下傳的壓縮包解壓到:D:\mingw64 目錄下
配置環境變量(以Win7為例,Win10類似):
簡便操作過程:
右擊“計算機” --》屬性 --》進階系統設定 --》環境環境 --》系統變量 --》“Path”變量 --》編輯,追加 ;D:\mingw64\bin
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPn5UMVJTYxIlMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2YzMyUjMxADMyATOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
設定系統環境變量具體步驟
詳細操作過程:
在桌面選擇“計算機” --》右擊選擇“屬性” --》進入“控制台\所有控制台項\系統”選項 --》選擇左邊的“進階系統設定” --》彈出的系統屬性,選擇“環境變量” --》在系統環境變量裡,找到變量名為“Path” --》輕按兩下“Path”變量 --》在結尾追加“;D:\mingw64\bin”
Windows的“Path”環境變量是以分号為分隔符(“;”是英文的分号),不是中文的分号,切記!最後一個“Path”環境變量不需要分号!
驗證環境是否安裝
開始菜單 ---> 附件 ---> “指令行提示符” 或 “Win鍵+R”組合鍵,輸入:cmd
在指令行下輸入:gcc -v
如有輸出GCC資訊則配置成功,配置成功如圖:
MinGW-W64 GCC 配置成功輸出資訊
環境變量添加錯誤将會提示無效指令。
添加make指令
make指令是Linux上用的比較多的指令,友善面快捷的編譯C/++程式。
進入D:\mingw64\bin目錄,拷貝複制一份“mingw32-make.exe”在該目錄,并重命名為“make.exe”
MinGW-W64預設把它命名為“mingw32-make.exe”檔案名,也可以直接更改該檔案名為“make.exe”,這裡為了以後有其它的工具會調用到“mingw32-make.exe”,特複制一份并命名為“make.exe”檔案而已。
Dev-C++、CodeBlocks環境變量添加
Dev-C++和CodeBlocks想要在控制台下使用,請添加如下環境變量到系統的“Path”變量當中
這裡我的假設是将Dev-C++和CodeBlocks安裝在D盤上,如不是安裝在D盤下,請自行更改相應的目錄
Dev-C++: D:\Dev-Cpp\MinGW64\bin
CodeBlocks: D:\CodeBlocks\MinGW\bin
make指令也是進入相應的 bin 目錄複制“mingw32-make.exe”檔案并重命名為“make.exe”檔案
編譯第一個C/C++源代碼檔案
源代碼:
// tex.c
#include <stdio.h>
int main(void)
{
printf("Hello World\n");
return 0;
}
編譯運作:
編譯C源代碼檔案,并運作編譯好的程式
小技巧:
在指令行下經常需要切換目錄,是一件比較麻煩的一件事。可以建立個“*.bat”檔案,内容為"start",将該批處理檔案放置到所建的工程目錄下,要使用指令行時,直接輕按兩下打開就可以了,不用切換目錄了。
GCC、make指令及Makefile簡單介紹
CGG參數(更多參數請輸入:gcc --help)
選項 | 說明 |
-E | 隻進行預編譯,代碼送往标準輸出 |
-S | 編譯生成彙編代碼 |
-c | 編譯生成目标檔案”.o”,不連結成可執行檔案 |
-o out_filename | 儲存為指定的檔案名,不指定預設為a.*檔案 |
-g | 在可執行程式中包含标準調試資訊,要調試源檔案須添加 |
-On | 這裡的“n”指的是數字,選擇程式要使用的優化級别,分别為-O1,-O2,-O3,一般使用-O2就可以了 |
-std= | 選擇C準備,如:C99,C11等(例:-std=c11) |
-Wall | 打開所有類型文法警告,建議養成使用該選項的習慣(不包括-pedantic選項) |
-pedantic | 能夠幫助程式員發現一些不符合ANSI/ISO C标準的代碼(如未定義行為提示) |
make指令
make指令執行時,需要一個 Makefile 檔案,以告訴make指令需要怎麼樣的去編譯和連結程式。
Makefile檔案簡介
makefile帶來的好處就是——“自動化編譯”,一旦寫好,隻需要一個make指令,整個工程完全自動編譯,極大的提高了軟體開發的效率。make是一個指令工具,是一個解釋makefile中指令的指令工具,一般來說,大多數的IDE都有這個指令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可見,makefile都成為了一種在工程方面的編譯方法。
Makefile檔案是沒有檔案名字尾的,就一個名為“Makefile”的檔案
更多的Makefile檔案資料請自行搜尋檢視
下邊貼出我常用測試使用的Makefile檔案,“#”開頭為注釋,請按提示修改相應選項
all : tex
# 請根據自己的工程修改相應的選項内容,檔案為*nix(unix,Linux)格式,可用Notepad++等打開
# Windows系統記事本打開不會換行
# 要編譯的常用參數選項
CFLAGS= -Wall -pedantic -O2
#要編譯的檔案名
obj = tex
#要編譯檔案字尾
suffix = .c
#要使用的編譯器(gcc或g++)
cc = gcc
#編譯标準(C:-std=c11,C++:-std=c++14)
Std = -std=c11
#要編譯成32或64位程式
Bit = -m32
#編譯檔案需要連接配接的其它庫檔案
CFLAGS+= $(Std)
CFLAGS+= $(Bit)
tex : $(obj)$(suffix)
$(cc) $(obj)$(suffix) $(CFLAGS) $(LINK) -o $(obj)
@./$(obj)
@echo Error : %ERRORLEVEL%
.PHONY : clean
clean:
-del $(obj).exe
将上邊内容儲存為一個“Makefile”,記得第一個字母為大寫,其它都是小寫(Windows會稍微寬一些,全小寫也可以),并把“Makefile”檔案放在要編譯的C/C++源檔案目錄下,打開指令行執行:make
# 執行編譯
D:\測試時間>make
gcc tex.c -Wall -pedantic -static -O2 -std=c11 -m32 -o tex
Hello World
Error : 0
# 執行清除
D:\測試時間>make clean
del tex.exe
D:\測試時間>
簡單的一個C編譯工程:Hello World目錄
簡單的一個學習測試目錄檔案
編譯并執行、清除檔案:
make指令截圖
本文中用的測試檔案:https://gitee.com/duke56/test_time
本文沒有啥技術含量,純粹是給C/C++新學員參考配置學習環境用的!