如何通过命令行编译并运行程序之Windows版本

2019-10-28 / C Windows

引言:大部分同学在学习C/C++语言时所使用的开发环境,要不就是上古时代遗留下来的毒瘤产品,比如:VC 6.0 甚至还有 Turbo C. 这种东西在笔者开始学习C语言时候都已经是一个没什么人用的产品了。那都已经是12年前的事情了,虽然一直不能理解为什么国内编写教学教材的这些专家们为什么就不能努力努力改变一下现状呢。于是有了这么一篇简单搭建最原始也是笔者认为朴素的开发环境。

首先咱们需要知道几个概念:

  1. 编辑器: 编辑器是用来编写咱们的C语言或者是其他语言源代码的。
  2. 编译器: 编译器是一整个套件,里面有非常多的程序,主要是用来将咱们写出来的C语言代码编译器可执行程序。
  3. 调试器: 调试器是用来对编译出来的程序进行调试的,这次咱们搭建的环境中虽然有编译器,但是这种命令行调用调试器的方式略显麻烦。另外,笔者早期自学编程时还不知道有调试器这么好玩的东西的存在,于是用着 printf 这样的函数进行输出信息调试的。

而现在常见的IDE(集成开发环境) 都是将上述功能集成在一个软件之上,虽然使用其他非常方便,但是但是如果在运行程序时候出现一些问题,解决其他就显得不是那么容易。这说明一个好的集成开发环境非常重要。Visual Studio 确实在功能上还算是一个很好的集成开发环境,但是微软搞的这一套,总是跟书上跟C语言标准不一样,所以对新手或者是算法竞赛的同学来说,并不太适合。Code::Blocks bug略显多呀,经常突然就不能编译了,而且在运行时候套用了一层 cb_console_runner 这个程序。

综上所述, 笔者非常推荐下面将要介绍的命令行编译运行的方式。而且这种方式不仅可以在Windows环境上使用,而且可以在Linux、macOS上使用,最重要的是,这样就不太需要图形化了。在Linux服务器上,一般来说是没有图形化的,也就是说只有通过这种命令行编译程序的方式来在服务器上编译程序了。

0x00 下载 Windows 上 GCC 编译器套件 MinGW

在学习C语言或者C++语言时候我们推荐使用 GCC 编译器,但是 GCC 编译器是 UNIX/Linux 系统上的,那么 Windows 上想要使用就需要安装对应的编译器套件,也就是 MinGW.

首先通过下面的链接下载MinGW压缩包。

MinGW下载地址

下载后会得到一个 x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z 的文件。

通过压缩软件解压(右键提取到 "x86_64-8.1.0-release-posix-seh-rt_v6-rev0\")后在 "x86_64-8.1.0-release-posix-seh-rt_v6-rev0" 目录中可以得到一个 mingw64 的文件。将这个 mingw64 文件夹复制到 C盘 目录下面。

打开 mingw64 目录下的 bin 子目录,将其中的 mingw32-make.exe 复制一份命名为 make.exe

0x01 配置环境变量

  1. 右键计算机(或叫我的电脑、Win10上叫此电脑),点击属性,然后点击高级系统属性。

    72ccb7773912b31b3c39aa0a8b18367adab4e179

  2. 点击顶部的“高级”,然后点击下面的环境变量。

    0b7b02087bf40ad1a71ea0c05a2c11dfa9ecce1f

  3. 选中系统变量中的 Path ,点击编辑。

    94cad1c8a786c917245c341ac43d70cf3bc757b1

  4. 然后在尾部添加一个 ; (注意是英文符号的; 而不是中文输入法下的;) ,并将mingw目录以及后面的 \bin 一起复制到添加的 ; 后面。笔者mingw所在目录为:C:\mingw 于是复制 C:\mingw\bin 到上述 ; 后面。注: Windows 10 系统上Path环境变量编辑时是点击添加,此时不需要添加 ;

  5. 然后点击确定即可。

  6. 打开命令提示符(Win7通过Win+R然后输入cmd即可打开,Win10打开开始菜单搜索cmd即可找到)并输入gcc --version ,如果有如下图显示,则表示环境变量配置完成。

    20191028094242

0x02 配置鼠标右键打开命令提示符

新建一个文本文档文件,打开输入如下代码,并将文件名改为 opencmdhere.reg 记住要更改后缀名,Windows 系统默认后缀名是隐藏的,需要设置为显示后缀名,至于怎么显示出来。请自行百度:Win7 如何显示文件后缀名

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\opencmd]
@="Open CMD Here"
"Icon"="C:\\Windows\\System32\\cmd.exe"

[HKEY_CLASSES_ROOT\Directory\Background\shell\opencmd\command]
@="cmd.exe \"%V\""

在更改文件名后,文件图标应该会改变为如下所示。

20191028094625

双击该文件并点击确定。

0x03 安装 Sublime Text 3 代码编辑器

事实上,这里我们用来编写的代码编辑器有很多很多,笔者比较喜欢用 Sublime Text 3 代码编辑器。

首先前往 http://www.sublimetext.com/ 下载并安装。安装过程中需要勾选 Add to explorer context menu 选项,勾选之后可以方便后续通过鼠标右键打开你的源码文件。

注: Sublime Text 3 是一款优秀的代码编辑器,也是收费软件,但是可以无限使用,只是在没有通过注册码激活的情况下,偶尔在保存代码的时候会弹出提示激活的提示。虽然可以通过网上找到一些激活的办法,但在个人经济允许的情况下购买激活码支持正版优秀软件。

0x04 开始写代码

  1. 新建一个空目录。笔者建议在新建目录时,这个目录名是不带空格的纯英文目录名,以避免中文字符带来的问题。而且这个目录的上一层目录以及之前的目录均是如此。

    这里使用 D:\codes-demo 来举例。

  2. 打开上述空目录,并新建名为 main.c 的文件。(源码文件名可以随意命名,命名方式建议如上述目录名规则一样。)

  3. 选中 main.c 文件右键 Open with sublimetext

  4. 接下来就可以在编辑器中开始写代码了。

    #include <stdio.h>
    
    int main()
    {
        printf("Hello world.\n");
        return 0;
    }
    

0x05 编译并运行程序。

  1. 在目录空白部分右键,Open CMD Here

  2. 在弹出的命令提示符窗口中输入 dir 可以查看当前目录中的所有文件及文件夹。

    20191028100327

  3. 接下来输入 gcc main.c -o main 可以编译 main.c 文件到 main.exe ,当输出如下,没有编译错误信息,则表示程序编译正常,如果遇到错误信息则可以通过网络搜索找出错误在哪里。而且错误信息中都会明确指出错误出现的位置。

    20191028100527

  4. 通过编译出来的文件名进行运行。这里编译出来的是 main.exe 文件。

    20191028100743

0x06 中文乱码解决方法

如果你写的程序中需要输出中文的话,那么正常编译是会乱码的。这是因为默认的GCC编译出来的中文字符集是UTF-8的,而 Windows 命令行字符集是GBK的,自然输出就乱码了。这个时候就只要指明编译的字符集。

gcc -fexec-charset=GBK main.c -o main

0x07 文末细语

这篇文章是在早上下雨不能骑车而在宿舍治疗拖延症的情况下写就的。这篇文章拖了整整六年了。终于在今天写出来了。