准备
此教程主要为有自己解决问题的能力且刚入门的人编写,所以会有点啰嗦。
步骤
- 安装编译器等
- 安装并配置 Visual Studio Code
在这里插一个小知识,关于文本编辑器(俗称编辑器)、编译器、集成开发环境(IDE) 的区别。因为发现很多新手并没有搞清楚这些概念,有些老师也没有特意强调。
小知识
文本编辑器
文本编辑器是计算机软件中的一种。主要用于用来编写和查看文本文件。有一些特殊的文本编辑器支持增加自有的格式来丰富文档的表现形式。操作系统或者集成开发环境通常会带有可以查看和编辑纯文本的编辑器,可增加格式的文本编辑器通常是个人用户或者公司在制作需要格式的文件中使用。
-维基百科
在编码中,简单来说可认为是你写文本的那个窗口程序。
编译器
编译器(compiler)是一种计算机程序,它会将某种编程语言写成的源代码(原始语言)转换成另一种编程语言(目标语言)。
它主要的目的是将便于人编写、阅读、维护的高级计算机语言所写作的源代码程序,翻译为计算机能解读、运行的低阶机器语言的程序,也就是可执行文件。编译器将原始程序(source program)作为输入,翻译产生使用目标语言(target language)的等价程序。源代码一般为高级语言(High-level language),如Pascal、C、C++、C# 、Java等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。
一个现代编译器的主要工作流程如下:
源代码(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 汇编程序(assembler)→ 目标代码(object code)→ 链接器(linker)→ 可执行文件(executables),最后打包好的文件就可以给电脑去判读运行了。
-维基百科
简单来说,可认为是将你写的高级语言代码翻译成机器语言代码。
集成开发环境
集成开发环境(Integrated Development Environment,简称IDE。是一种辅助程序开发人员开发软件的应用软件,在开发工具内部就可以辅助编写源代码文本、并编译打包成为可用的程序,有些甚至可以设计图形接口。
IDE通常包括编程语言编辑器、自动构建工具、通常还包括调试器。有些IDE包含编译器/解释器,如微软的Microsoft Visual Studio,有些则不包含,如Eclipse、SharpDevelop等,这些IDE是通过调用第三方编译器来实现代码的编译工作的。有时IDE还会包含版本控制系统和一些可以设计图形用户界面的工具。许多支持面向对象的现代化IDE还包括了类别浏览器、对象查看器、对象结构图。虽然当前有一些IDE支持多种编程语言(例如Eclipse、NetBeans、Microsoft Visual Studio),但是一般而言,IDE主要还是针对特定的编程语言而量身打造(例如Visual Basic)。
-维基百科
简单来说,可认为是一个同时携带了编辑器、编译器等的程序,比较便捷,但有的也很强大。大部分老师推荐的写代码的工具都属于这一类。
Visual Studio Code
我们今天主要基于 Visual Studio Code 展开教程,下面简称 VS Code。这是一款微软出品的编辑器,但因支持各种拓展插件,使其可以具备类似 IDE 功能的同时,继续保持轻量。但毕竟它本身是个编辑器,不包含编译器等功能。因此我们需要自己去配置它们,也就是我们常说的,搭建、配置开发环境。
编译器安装
这里的编译器只是统称,会同时包含调试器、汇编器等。
因为每个系统下的编译器实现不同(规范相同),所以要根据不同版本下载不同的编译器。以下列出推荐安装的,也是教程中用到的。
Windows
macOS
- Clang
- GCC
Linux
- GCC(自带)
Windows
这里使用 MinGW-w64 的实现。
安装
如果再一开始出现 Cannot download reposytory.txt[0]
错误,可以尝试关闭杀毒软件(包括 Windows Defender),并以管理员方式运行。
选项相关
- Version:GCC 版本,若无特殊需求优选最高
- Architecture:系统架构,64 位系统选
x86_64
,32 位选i686
- Threads:操作系统 API,开发 Windows 程序选
win32
,开发 Linux、Unix、macOS 等其他 posix 协议的操作系统程序选posix
- Exception:异常处理模型
- 64 位系统
seh
:性能优化好,优选sjlj
:稳定性好- 32 位系统
dwarf
:性能优化好sjlj
:稳定性好
- Build revision:修订版本,保持默认即可
添加环境变量
安装完成后,还需添加环境变量。
因为安装程序不会自动添加环境变量,所以要手动添加。为什么要添加呢?简单来说,你在终端中执行命令,命令本身很短,那系统可能分不清或根本不知道这是指什么。在这种情况下,系统会去检索环境变量目录中的文件,如果有匹配的,就执行相应程序。
打开 此电脑-属性-高级系统设置-高级-环境变量
,在 系统变量-Path
编辑并新建你 MinGw-w64 安装目录下的 bin 文件夹路径,例如 C:\Program Files\mingw-w64\xxx\mingw64\bin
。保存即可。
之后可以在终端(如 cmd)中输入 gcc --version
,如果有显示版本号就代表安装成功。
(额外:这里可以注意一下终端和 Shell 的关系)
macOS
因为 macOS 与 Linux 类似,都属于类 UNIX 系统。所以在搭建环境这一块有天然的支持优势,大部分情况下会比 Windows 方便很多。
Clang
这是最简单的。在 App Store 中搜索 Xcode,下载安装即可。
GCC
推荐通过 Homebrew 安装,很是好用和方便。
Homebrew
这里稍稍说一下 Homebrew 是什么。
Homebrew是一款自由及开放源代码的软件包管理系统,用以简化macOS系统上的软件安装过程。
-维基百科
包管理系统可以说是 Linux 最大的优势,这里不做拓展,之后可能会写一篇文章专门讲一下。macOS 自身并没有包管理程序、社区,但作为同是类 UNIX 家族测程序,怎么可以这样的?!Homebrew 的出世解决了这个痛点。
Homebrew 基于 Ruby 语言编写,macOS 是自带的。但将来的 macOS 可能不会自带 Ruby,如果这样的话之后会更新教程以同步。(来源)
安装 Homebrew
方便起见,推荐还是先在 App Store 中安装 Xcode 再进行以下操作。
打开终端,输入以下指令即可。可能会先提示安装 Command Line Tools。
1 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" |
安装 GCC
在终端中输入以下指令。
1 | brew install gcc |
如果要安装不同版本的 GCC,可以先 brew search gcc
再 brew install xxx
安装相应版本。
好了,到此就完成了。如果有兴趣继续使用 Homebrew,可以自己查看相关文档。顺便一提,Homebrew Cask 也可以按照桌面程序。
Linux
大部分 Linux 发行版都自带 GCC,所以一般不需要自己安装。
最后
到这里你就可以编译并调试你的程序啦!不过,这所有的过程都要你手动执行。简单以下面的 hello.c
程序演示。
1 |
|
在文件相应目录下,执行 gcc hello.c
即可。你会发现同目录下多了一个可执行文件,运行即可。
VS Code 配置
安装很简单,就不多说了。
如果在添加环境变量之前就运行了 VS Code 的话,请先将其完全退出, 文件-退出
。否则将会识别不了新的命令。
配置
为什么要配置呢?因为 VS Code 只是一个编辑器,你必须自己指定编译器、调试任务后它才能正常工作。VS Code 有工作区的概念,可以在一个工作区内进行相应操作和配置。为了说明方便,暂时默认我们的工作区只有一个单一的文件夹。
下述示例中的配置内容是在 Windows+MinGW 下编写的。所以,在 Windows 系统中,每一步都推荐使用示例中的内容。在 macOS 和 Linux 中,一般默认可以。
Step1
首先,在 VS Code 的拓展中搜索并安装 C/C++,它提供了 C/C++ 代码补全、调试等功能。
Step2
这步是创建编译相关的配置文件,会在工作区文件夹中创建 .vscode/c_cpp_properties.json
文件。
Ctrl/Command + Shift + P
,输入 C/C++:Edit Configurations
,这里选用 JSON 编辑。
C/C++ 插件会自动检测编译器位置。所以如果编译器安装成功,输入以上命令后一般就会得到一个可用的配置文件。下面是一个示例:
1 | { |
如果你发现 compilerPath
的程序并不是你需要的编译器,可以手动修改。
Step 3
这步是创建任务相关的配置文件,会在工作区文件夹中创建 .vscode/tasks.json
文件。
Ctrl/Command + Shift + P
,输入 Tasks: Configure Task
。
在输入上述命令后,如果有弹出类似 C/C++: gcc.exe build active file
等选项,可以直接选取,这会直接自动创建完整的调试配置文件。
当然,如果你希望要自己编辑,可以选择 使用模板创建 tasks.json 文件
。
下面是一个示例:
1 | { |
如果需要编译 C++ 代码,请将 command
改为 g++
。如果未添加环境变量,请将其改为编译程序的完整路径。
Step4
这步是创建调试相关的配置文件,会在工作区文件夹中创建 .vscode/launch.json
文件。
Ctrl/Command + Shift + P
,输入 Debug: Open launch.json
,选择 C++ (GDB/LLDB)
,选择 默认配置
。可以根据提示自行修改。以下是一个示例:
1 | { |
请将 miDebuggerPath
改为你调试器的地址。
注意,配置文件中一定要包含 preLaunchTask
项,这是在调试之前预执行的任务。因此,此处要填写 Step3 中相应任务的 label
。
最后
至此,已经全部配置完成。
然后只需在 VS Code 左边菜单的运行中,点击左上角的绿色三角,即可开始编译并调试 C/C++ 文件。
参考
- https://rsreland.net/blog/202002172024/