Skip to content

手把手带你从零开始搭建一个C语言开发环境

开始之前

谈到编程,什么是编程,都需要那些步骤?简单点来说: 编程就是将我们希望计算机做的事用代码(一种特殊的文本)描述出来,然后将代码转换成可执行文件(就是最终的程序),交给计算机执行,完成特定的任务。
那么在这个过程中,我们需要准备哪些工具软件呢?准备好开发说需要的各种工具软件,就是搭建开发环境。


安装工具链

什么是工具链

在上面的介绍中提到,我们需要把代码转换为可执行的程序。在这里有一个初学者可能产生的误解: 代码不就是可以运行的吗?为什么还需要转换呢?其实,代码本身是不能直接运行的,它只是一个文本文件,计算机无法理解。因此,我们需要一个工具来将这个文本文件转换成计算机可以执行的二进制文件(也就是由0和1组成的可执行文件)。
那么这个工具是什么呢?如果以前有学过一点编程的同学可能会说是编译器(Compile)[1]。这个说法大体是正确的,但不够全面。事实上,在现代软件开发的过程中,从源代码到可执行文件的转换过程是由一系列工具组成的,这个工具的集合就被称为工具链(Toolchain),而编译器则是工具链中的一个重要组成部分。关于工具链和构建过程将在以后的课程中详细介绍。
现在我们知道了工具链的概念: 工具链就是一个能够将一个或多个有着特殊格式的文本文件(源代码)经过包括编译(编排、翻译)等一系列处理步骤,最终生成一个或多个可执行文件的工具集合。

安装GCC

GCC(GNU Compiler Collection)是一个开源的编译器套件,支持多种编程语言,包括C、C++、Fortran等。同时,GCC有着强大的跨平台支持,可以在Linux、Windows、macOS等操作系统上运行,是C语言开发的标准编译器之一。本教程将以Windows下的GCC为例,介绍如何安装工具链。

  1. 下载GCC: 访问 SourceForge MinGW-w64 页面,下载x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z文件。或者在本教程文档的同目录下找到同名文件下载.
  2. 解压文件: 将下载的.7z文件解压到一个方便好记目录,比如D:\Dev\env下,切记路径不能包含中文(非ascii字符)和特殊符号。
  3. 记下路径: 解压后会得到一个名为mingw64的文件夹[2],进入文件夹,打开bin目录,记下此时的路径,比如D:\Dev\env\mingw64\bin。可以看到bin目录下有很多以.exe结尾的可执行文件,这些就是GCC的编译器和相关工具。在其中,我们可以找到gcc.exe,这便是GCC编译器的主程序。双击一下它,没反应?别慌,这是因为它是一个命令行工具,没有图形化界面,需要在命令行中运行,马上我们就会用到它。

编写你的第一个C程序

像原始人一样编程

有了GCC编译器,是不是可以构建我们的第一个C程序了呢?当然可以,尽管这种方法可能看起来比较原始。

  1. 创建源代码文件: 找到一个合适的目录(非中文路径),比如D:\Dev\project\myFirstCProgram,同样记下这个路径,在该目录下右键新建文本文档,重命名为hello.txt(请先打开资源管理器的“查看”选项卡,找到“显示”,勾选“文件扩展名”,以便能看到文件的后缀名)。

  2. 编写代码: 双击或右键使用记事本打开hello.txt文件,输入以下代码:

    ```

    include

    int main() { printf("Hello, World!\n"); return 0; }

    ```

    保存并关闭文件。

  3. 编译代码: 回到一开始记下的gcc的bin文件夹==(以下所有使用到GCC的命令都需要在该目录下执行)==右键bin文件夹的空白处,选择在终端中打开(windows 11)或在资源管理器地址栏输入cmd并回车,打开命令提示符窗口。还记得我们之前记下的GCC的bin路径吗?这里以D:\Dev\env\mingw64\bin为例,实际请根据你记下的路径更改

    ``` gcc.exe -x c {工程路径}\hello.txt -o {工程路径}\hello.exe

    ```

    例如

    ``` gcc.exe -x c D:\Dev\project\myFirstCProgram\hello.txt -o D:\Dev\project\myFirstCProgram\hello.exe

    ```

    这条命令会将hello.txt文件编译成一个名为hello.exe的可执行文件。

  4. 运行程序: 先别急着退出终端,如果命令输入完成后没有报错,那就证明你的程序应该编译成功了,你可以检查一下文件夹中是否有出现hello.exe可执行文件。接下来回到工程目录并在新建终端中输入以下命令来运行程序:

    ``` .\hello.exe

    ```

    此处的hello.exe就是编译输出的程序,.\表示当前目录下,因此这条命令的意思是运行当前目录下的hello.exe程序,这种路径的表示方法叫相对路径

    如果一切顺利,你应该会看到输出:

    ``` Hello, World!

    ```

一些思考和反思

首先恭喜你,你已经成功编写并运行了你的第一个C程序!但请按耐住激动的心情,不知你是否对刚才的一系列操作感到迷惑和恐慌?接下来让我一一解释在上面的操作中都发生了什么,并且思考是否有更好的方法来完成这些操作。

  1. 操作解释

    1. 首先我们创建并编写源代码文件hello.txt,这就是我们所说的源代码,编译器通过读取这个文件中的内容来了解我们希望计算机执行的任务。不知道你有无注意到一个细节,在上面的教程中,我特意保留了新建文本文件的.txt后缀名,这是想告诉你,所谓的源代码,其实就是一个文本文件,其与其他文本文件没有本质区别,唯一的区别仅在于其内容符合特定的语法规范(C语言语法)。你可以更改文件的后缀名为.c,也就是变成hello.c,这实际上并不会改变文件的内容,它仍然是一个文本文件,只不过.c后缀名可以告诉编译器和系统: 这是一个特殊的文本文件,里面的内容是C语言的源代码,请你用针对C源代码的方式来编译或打开它。
    2. 接着我们使用命令来调用GCC编译器为我们编译源代码文件,生成可执行文件hello.exe。关于什么是命令,这在以后的课程中会详细介绍,这里只需要知道,命令就是我们通过键盘输入的一些指令,计算机通过这些指令来执行特定的操作。接下来我来解释上面输入的命令每部分是什么意思。

    ``` gcc.exe -x c D:\Dev\project\myFirstCProgram\hello.txt -o D:\Dev\project\myFirstCProgram\hello.exe

    ```

    • gcc.exe: GCC编译器的主程序
    • D:\Dev\project\myFirstCProgram\hello.txt: 这是之前记下的工程目录路径,告诉GCC我们要编译的源代码文件在哪里,以及生成的可执行文件要放在哪里。
    • -x c: 这个选项告诉GCC,我们要编译的源代码文件是C语言的代码。如果文件后缀名为.c,编译器会自动识别为C语言代码,这个选项可以省略。
    • hello.txt: 这是我们要编译的源代码文件名。
    • -o: 这个选项告诉GCC,编译生成的可执行文件名和路径。

    你可以输入以下命令来获取更多关于GCC的帮助信息:

    ``` gcc.exe --help

    ```

  2. 回顾反思
    以上操作过程中,你可能有以下疑问:

    1. 使用Windows自带的记事本太呆了,代码要一个一个字打,输错了也没有提示。而且我看网上好像也没人用记事本写代码,有没有更好的的方式?
    2. 编译时输入的命令也太长了,还要记什么路径,而且每次使用GCC,都需要在GCC所在的文件夹中打开终端,有没有能在所有地方都能轻松使用GCC的方法?

    针对上述的问题,我的回答是: 有的兄弟,有的。让我们进入下一章节,来介绍如何简化上述的过程,摆脱这种原始人的开发方式。


让开发更加高效

接下来就让我介绍如何才能拜托这种原始人的开发方式,让我们步入更加现代的C语言开发。

配置环境变量

在上述的操作中,我们需要在GCC的安装目录下运行GCC,这显然不够方便。能不能让计算机帮我们找到GCC编译器呢?答案是可以的,我们可以通过设置环境变量(Environment Variable)来实现。
环境变量是操作系统用来存储系统信息的变量,就像一本“系统说明书”,告诉程序一些运行所需的路径信息、配置参数、特殊设置等。你可以把系统环境变量理解为一种特殊的系统设置项,只不过不在Windows的设置界面中。
一个系统环境变量包含变量名和对应的值,变量名是一个字符串,用于标识这个变量,而值则是与这个变量相关的具体信息,比如路径、配置等。
在这里,我们需要设置一个名为PATH的环境变量,它是一个包含多个路径的字符串,操作系统会在这些路径中查找可执行文件。当我们在命令行中输入一个命令(可执行文件名)时,操作系统会在PATH变量中指定的路径中查找对应的可执行文件。

设置步骤

  1. 点击开始菜单(Windows图标),搜索“环境变量”,选择“编辑系统环境变量”。
  2. 高级选项卡中,点击右下角环境变量按钮。
  3. 在环境变量窗口中,找到上方用户变量区域[3],找到名为Path的变量,选中后点击编辑
  4. 找到并打开之前GCC(MinGW)安装目录下的bin文件夹,比如D:\Dev\env\mingw64\bin,按Ctrl+C复制这个路径。
  5. 在编辑环境变量窗口中,点击新建,将刚刚复制的目录路径按Ctrl+V粘贴进去,一路点击点击确定保存。

验证设置

设置完成后,我们需要验证一下是否成功。右键Windows徽标,选择终端,或者按Win + R输入cmd打开一个新的命令提示符窗口(注意必须是新的窗口,因为环境变量的更改只会在新打开的窗口中生效),输入以下命令:

gcc --help

如果你看到GCC的帮助信息,那么恭喜你,环境变量设置成功了!
现在你可以试着在其他地方打开终端,输入gcc命令,看看是否能成功运行。

在设置好了环境变量后,可以直接输入想要运行的可执行文件名(如gcc),系统便会为我们进行以下操作:

  1. 系统首先在当前目录下(即你打开命令行时所在的目录,显示在输入命令时的>前)查找是否有名为gcc.exe的可执行文件,若有,则直接运行。
  2. 若在当前目录下没有找到,则系统会在PATH环境变量中指定的所有路径中查找名为gcc.exe的可执行文件,若找到,则运行它。
  3. 若在所有路径中都没有找到,则会提示“找不到命令”,这时你可以检查一下是否输入了正确的命令,或者是否设置了正确的环境变量。

至此,你已经了解并成功设置了环境变量,在之后的命令中,你可以直接输入gcc而不需要每次都进入GCC的安装目录。

一些小任务

  • 你能试着将你常用的一些程序的路径添加到PATH环境变量中吗?例如添加WeChat.exe的路径,尝试看能不能在命令行中直接输入WeChat来打开微信。
  • 思考PATH环境变量存在的意义,为什么系统不直接全盘查找需要运行的文件,而是通过PATH来指定查找路径?

安装现代文本编辑器

我们提到,源代码其实就是一个文本文件,因此编写代码便需要文本编辑器。Windows自带的记事本便是一个文本编辑器,你完全可以使用记事本来写代码,但它功能过于简单,只有最基础的文字编辑功能,无法提供诸如语法高亮、代码补全、错误提示等功能,开发效率极低。幸运的是,有很多现代的文本编辑器(或称代码编辑器)可以帮助我们更高效地编写代码。
Visual Studio Code(简称VS Code)是一个开源的、跨平台的文本编辑器,支持多种编程语言,包括C语言。它提供了丰富的插件生态系统,可以通过安装插件来扩展功能,非常适合C语言开发。本教程将以VS Code为例,介绍如何安装和配置一个现代的文本编辑器。

安装VS Code

  1. 下载VS Code: 访问 Visual Studio Code官网 下载适合你操作系统(Windows)的版本。
  2. 安装VS Code:
    1. 双击下载的安装包(不需要管理员)
    2. 在第一个页面,点击我同意此协议,然后点击下一步
    3. 在第二个页面,选择VS Code程序本体的安装路径,强烈建议使用默认路径(大约400MB左右,且不会随着软件使用增长),点击下一步
    4. 在第三个页面,选择开始菜单文件夹,可以使用默认设置,点击下一步
    5. 在第四个页面:
      • 创建桌面快捷方式: 根据需要选择
      • 将“通过Code打开”...: 两个选项务必勾上,这样以后打开Code工程会方便很多
      • 将Code注册为受支持的文件类型的编辑器: 保持默认勾选,这样以后双击打开.c等源码文件会直接用VS Code打开
      • 添加到PATH: 保持默认勾选,作用同上文所述。
        点击下一步.
    6. 在第五个页面,点击安装,等待安装完成。

汉化VS Code

安装完成后,打开VS Code,你会发现VS Code的界面是英文的,如果你更习惯使用中文界面,可以通过以下步骤进行汉化:

  1. 打开VS Code,点击左侧活动栏中的Extensions图标(或按Ctrl+Shift+X)。
  2. 在搜索框中输入Chinese,找到Chinese (Simplified)(简体中文) Language Pack for Visual Studio Code,点击Install
  3. 安装完成后,VS Code会在右下角弹窗提示你重启,点击Change Language and Restart按钮即可,也可手动关闭软件重启VS Code。

为VS Code安装C语言开发相关插件

VS Code只是一个文本编辑器,本身并不具备各种代码编写开发的辅助功能,但可以通过安装插件来扩展,这正是VS Code的强大之处.
在上一步的汉化中,你其实已经接触到了VS Code的插件系统。重新打开扩展页面,搜索并安装以下插件:

  • C/C++ Extension Pack: 这是一个C/C++语言的扩展包,包含三个插件: C/C++ C/C++ Themes CMake Tools,提供了C/C++语言的语法分析、代码补全、错误提示、构建辅助等功能。
  • Code Runner: 用于快速编译运行单文件C代码。

使用VS Code编程

安装好插件之后,点击左上角文件-打开文件...,找到你在上一章节中编写第一个C程序的文件夹(当然也可以新建一个文件夹),点击选择文件夹
打开左侧栏资源管理器,右键空白处新建文件,新建一个C源文件,例如VSC_Hello.c并打开。
尝试手打以下代码,体验VS Code的代码智能补全功能:

#include <stdio.h>

int main() {
    printf("Hello, VS Code!\n");
    return 0;
}

完成后按Ctrl + S保存文件。
接下来就是编译运行可执行文件,你有两种方法:

  • 点击右上角切换面板或按Ctrl+j打开底部面板,在面板顶部栏选择终端以打开内置终端,输入上一章节的编译命令,例如:
gcc VSC_Hello.c -o VSC_Hello.exe

运行程序:

.\VSC_Hello.exe

  • 除了输入命令外,我们刚刚安装的Code Runner插件为我们提供了更方便的方法:编写好程序并保存后,点击右上角小三角旁的下拉菜单,选择Run Code,或直接按Ctrl + Alt + N编译运行程序。可以看到,插件自动为我们执行了之前输入的gcc命令,是不是很方便?

总结

在本课程中,我们学习了如何在Windows上安装配置C语言开发环境,包括安装GCC编译器、配置环境变量以及安装VS Code编辑器和相关插件。在最后,我想强调和补充一些关键点:

  1. 对于一个完整的开发环境,一般包括两个相对独立的部分:

    • 文本编辑器及相关开发辅助工具(如语言服务器[4],源代码管理工具,构建工具等)
    • 工具链(包括编译器、链接器、调试器等)

    当然也有一些软件,针对某种或某类编程语言,将以上的文本编辑器,工具链和常用开发工具集成在一起,形成一种可以一键安装的软件,我们叫它集成开发环境(Integrated Development Environment, IDE)
    这种一键安装配置的IDE,提供开箱即用的开发体验,极大简化了环境配置过程,方便了开发者的使用。但IDE体积往往较大,启动较慢,且配置不够灵活,因此我们仍需要掌握如何安装配置文本编辑器+工具链的开发环境(尤其对于嵌入式开发来说)。

  2. 在开发的过程中,我们往往会遇到各种重复繁琐的操作,但人是懒惰的(这点尤其适用于软件开发者),我们不希望总是重复的做一些工作,因此往往会开发出各种自动化的工具来帮我们完成这些任务。例如在本课程中介绍的编译代码的方式:一开始我们通过输入一个很长的命令来完成编译,而后通过一些方式简化了命令的长度,最后,我们又通过使用VS Code插件来帮我们输入命令。这种自动化的过程在往后的开发中很常见,例如在编译具有很多源文件的大型工程中,我们不需要针对每个源文件都输入一次编译命令,而是可以通过构建工具来自动化这一过程。又例如,在一些开发项目(比如STM32开发)中存在着相同的初始化代码或库文件,这时我们可以使用代码生成工具来帮助我们快速生成这些重复的代码。

下一步

本课程介绍了搭建基于VS Code的C语言开发环境的全过程,但针对VS Code本身的使用只是草草带过,因此接下来你可以尝试学习使用VS Code的各种功能,了解相关机制,探索更多VS Code插件。在本章节的附件中,提供了一些有用的资源和补充教程,帮助你更深入地了解VS Code的使用。


  1. 除了编译器,还有解释器,其作用与编译器大体相同,只是工作方式有所区别 ↩︎

  2. MinGW,全称Minimalist GNU for Windows,是一个在Windows上运行的GNU工具链,其中包括我们需要的GCC编译器 ↩︎

  3. 系统变量对所用用户生效,而用户变量只对当前用户生效。因为一般Windows电脑都只有一个用户,因此在没有冲突的情况下,在这两个区域添加更改环境变量效果是一样的 ↩︎

  4. 语言服务器(LSP),提供代码智能补全、高亮、定义跳转、错误提示等功能 ↩︎