Sublime text3配置C编译环境

摘要:
导读本文介绍sublimetext3的C开发环境搭建,包括MinGW的安装,gcc运行C语言,在sublime中运行以及在cmd中运行的方法。0x02SublimeText3默认c/c++编译系统的不足编译系统把gcc加入环境变量以后,sublime中默认的编译系统就可以正常使用了。0x04中文编码乱码的问题由于SublimeText3中文件默认编码格式是utf-8,而windows中的命令行默认编码格式是GBK。修改源代码格式为GBKSublime原生并不支持GBK编码,但如果安装了ConvertToUTF8插件,就可以正确显示ANSI或者GBK编码的文件。
导读

本文介绍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中的一个著名的项目,包含了gccg++gdb等工具。也就是说,安装MinGw后,我们就可以使用gcc和g++命令了。

下载地址:https://sourceforge.net/projects/mingw/files/ ,下载一个MinGW安装器。

Sublime text3配置C编译环境第1张

选择这几个包就够了,选择完成后单机installation菜单中的 Apply changes选项同意更改。

Sublime text3配置C编译环境第2张

然后等待安装完成,默认安装路径是C:MinGW


配置环境变量

为了方便,一般我们会把gcc所在的路径加入系统的环境变量,这样就可以直接使用gcc命令而不用绝对路径。

右键计算机->属性->高级系统设置->环境变量 把MinGW的bin文件夹路径加入path中,注意以英文分号;相隔。

mingw-env


gcc命令介绍

编译C语言:gcc -Wall source.c -o 可执行文件名

加入-Wall选项,打开常用的警告。

0x02 Sublime Text 3默认c/c++编译系统的不足

编译系统

把gcc加入环境变量以后,sublime中默认的编译系统就可以正常使用了。 sublime自带有默认的C++编译命令,对于cpp文件可正常编译运行。

不足之处

  1. 程序输出捕获到Sublime窗口中,这样导致不能运行时输入信息。执行含有scanf语句的代码会卡住。
  2. 默认情况下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 3PackagesUser目录下,修改名为c.sublime-build。 这时候,可以在Tools -> Build System下看到刚才新建的c了

c-compile1

选中后就可以使用了。

由于默认情况下.c文件sublime识别为c++类型,所以使用自动选择的时候还需要修改一点:

c-compile2

点击红色箭头处的c++ 选择Open all with current extension as .. 然后选择C。这样以后打开.c文件就默认是c类型。 这时候按Ctrl+Shift+B

c-compile3

  • 第三个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""}]}

免责声明:文章转载自《Sublime text3配置C编译环境》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇第四课:部署Dashboard服务局域网WEB方式实现TTS实时语音合成下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

KEIL MDK 5.12帮你快速建工程模板的技巧

KEIL 5帮你快速建工程模板的技巧 本人使用keil mdk 5.12有一段时间了,发现keil mdk 5.12里面驱动库比较方便。这个新功能可以节省我们的时间,也可以让初学者能尽快上手和掌握这个芯片。大家以后既就可以很方便的建自己的工程模板了,再也不会为了找芯片的驱动库而烦恼。 今天外我来教大家来怎么使用这个建工程的利器吧。 首先是新建工程吧,如下图...

Deep Learning部署TVM Golang运行时Runtime

Deep Learning部署TVM Golang运行时Runtime 介绍 TVM是一个开放式深度学习编译器堆栈,用于编译从不同框架到CPU,GPU或专用加速器的各种深度学习模型。TVM支持来自Tensorflow,Onnx,Keras,Mxnet,Darknet,CoreML和Caffe2等各种前端的模型编译。TVM编译模块可以部署在LLVM(Java...

曹工说Redis源码(1)-- redis debug环境搭建,使用clion,达到和调试java一样的效果

概要 最近写了spring系列,这个系列还在进行中,然后有些同学开始叫我大神,然后以为我各方面都比较厉害,当然了,我是有自知之明的,大佬大神什么的,当作一个称呼就好,如果真的以为自己就是大神,那可能就走偏了。 其实我不少方面都比较薄弱,比如redis、mysql、jvm这些c语言写的东西,很多书,我也看过多次,看的那段时间,你可能懂了,也可以在面试的时候,...

makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解

在linux中输入vi Makefile 来实现创建Makefile文件 注意:命令行前必须加TAB键 例如:将两个文件led.c和crt0.S汇编文件,制作一个Makefile文件 1 1led.bin : crt0.S led.c 2 2 arm-linux-gcc -c -o crt0.o crt0.c 3 3 arm-linux-gcc -c...

adb shell 查看系统属性(用来判断特殊的操作系统)

一般来讲,在android程序开发中进行需要判断设备类型和系统版本 1、设备类型判断(android.os.Build.MODEL) 比如判断属于Google Nexus 5,Nexus 7,MIUI v5, MIUI v6,三星设备,魅族设备等; 这类型的问题都使用的android.os.Build.MODEL来判断,android.os.Build.M...

缓冲区溢出保护机制——Linux

缓冲区溢出保护机制 Linux canary(栈保护) 栈溢出保护是一种缓冲区溢出攻击的缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行。 当启用栈保护后,函数开始执行的时候会先往栈里插入cookie信息,该cookie往往放置在ebp/rbp的正上方,当函数真正返回的时候会验证cookie信息是否合...