導讀
本文介紹sublime text3的C開發環境搭建,包括MinGW的安裝,gcc運行C語言,在sublime中運行以及在cmd中運行的方法。另外對於MinGW和gcc,還有sublime的build文件做了簡單介紹。
0x01 關於gcc
安裝編譯器是后續工作的基礎。在windows下使用gcc編譯C語言,通過安裝MinGW實現。
安裝MinGW
MinGW是Minimalist GNU on Windows的首字母縮寫,安裝后就可以使用很多的GNU工具。GNU(GNU’s Not Unix)是linux中的一個著名的項目,包含了gcc\g++\gdb等工具。也就是說,安裝MinGw后,我們就可以使用gcc和g++命令了。
下載地址:https://sourceforge.net/projects/mingw/files/ ,下載一個MinGW安裝器。

選擇這幾個包就夠了,選擇完成后單機installation菜單中的 Apply changes選項同意更改。

然后等待安裝完成,默認安裝路徑是C:\MinGW
配置環境變量
為了方便,一般我們會把gcc所在的路徑加入系統的環境變量,這樣就可以直接使用gcc命令而不用絕對路徑。
右鍵計算機->屬性->高級系統設置->環境變量 把MinGW的bin文件夾路徑加入path中,注意以英文分號;相隔。

gcc命令介紹
編譯C語言:gcc -Wall source.c -o 可執行文件名
加入-Wall選項,打開常用的警告。
0x02 Sublime Text 3默認c/c++編譯系統的不足
編譯系統
把gcc加入環境變量以后,sublime中默認的編譯系統就可以正常使用了。 sublime自帶有默認的C++編譯命令,對於cpp文件可正常編譯運行。
不足之處
- 程序輸出捕獲到Sublime窗口中,這樣導致不能運行時輸入信息。執行含有scanf語句的代碼會卡住。
- 默認情況下c和c++沒有進行區分,全部當做c++格式來處理了。
解決辦法:
- 第一個是設置在新的cmd窗口執行程序,這樣就可以輸入信息。
- 第二個是針對c語言單獨寫一個build配置文件。
0x03 新建C編譯系統
選擇tool –> Build System –> New Build System
然后輸入以下代碼:
{ "working_dir": "$file_path", "cmd": "gcc -Wall \"$file_name\" -o \"$file_base_name\"", "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "selector": "source.c", "variants": [ { "name": "Run", "shell_cmd": "gcc -Wall \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\"" } ] }
保存在Sublime Text 3\Packages\User目錄下,修改名為c.sublime-build。 這時候,可以在Tools -> Build System下看到剛才新建的c了

選中后就可以使用了。
由於默認情況下.c文件sublime識別為c++類型,所以使用自動選擇的時候還需要修改一點:

點擊紅色箭頭處的c++ 選擇Open all with current extension as .. 然后選擇C。這樣以后打開.c文件就默認是c類型。 這時候按Ctrl+Shift+B

- 第三個c就是對應執行配置文件中的第三行 gcc -Wall $file_name -o $file_base_name 作用是編譯。
- 第四個c-Run對應后面的命令 gcc -Wall $file -o $file_base_name && start cmd /c \”${file_path}/${file_base_name} & pause\” ,作用是是在新的cmd窗口運行。這樣就可以對scanf等函數進行輸入了。
0x04 中文編碼亂碼的問題
由於Sublime Text 3中文件默認編碼格式是utf-8 ,而windows中的命令行默認編碼格式是GBK 。所以代碼中出現中文時運行會亂碼。
解決思路也很簡單,就是讓他們編碼一致就可以了。
修改源代碼格式為GBK
Sublime原生並不支持GBK編碼,但如果安裝了ConvertToUTF8插件,就可以正確顯示ANSI或者GBK編碼的文件。因此,裝插件后打開GBK編碼的源代碼文件,也不會亂碼。
在編譯命令gcc中加入選項 -fexec-charset=GBK 來說明將代碼中的字符串按照GBK編碼,從而和CMD窗口一致,保證不會亂碼。
修改后的c語言的配置文件如下:
{ "working_dir": "$file_path", "cmd": "gcc -Wall -fexec-charset=GBK \"$file_name\" -o \"$file_base_name\"", "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "selector": "source.c", "variants": [ { "name": "Run", "shell_cmd": "gcc -Wall -fexec-charset=GBK \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\"" } ] }
- 參考文章:http://www.yalewoo.com/sublime_text_3_gcc.html
- 參考文章:http://zmendax.github.io/2016/03/03/sublimeC/
