导读
本文介绍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/