一看就会系列之Ubuntu 系统中 VSCode gcc 开发环境完整配置教程
Ubuntu 系统中 VSCode gcc 开发环境完整配置教程
简介: 本教程将逐步指导您在 Ubuntu 系统上配置 C 语言的开发环境,使用 Visual Studio Code (VS Code) 作为主要编辑器和调试工具。我们将涵盖从安装 VS Code、本地编译器和调试器,到在 VS Code 中编写、编译、运行和调试一个简单的 C 程序的全过程。教程面向初学者,每个步骤都有清晰的命令和说明,帮助您快速搭建起完整的 C 开发环境。
(如果不想安装 vscode 可以直接跳转到 2)
1. 安装 Visual Studio Code
在 Ubuntu 上安装 VS Code 可以通过命令行或者直接下载图形安装包进行。下面介绍两种常见方式:
-
方法一:使用终端 Snap 命令安装: Ubuntu 提供了 Snap 软件包管理,VS Code 已经作为 Snap 包提供。打开终端(快捷键 Ctrl+Alt+T),更新软件源并执行安装命令:
sudo snap install --classic code
-
输入密码,等待安装
-
以上命令将从 Snap 商店获取 VS Code 并安装(
--classic
参数允许 VS Code 使用传统权限)。安装完成后,您可以在应用程序菜单中找到 Visual Studio Code 并启动 (如何在 Ubuntu 20.04 上安装 Visual Studio Code-阿里云开发者社区)。如果终端显示“code
未找到”之类的信息,可能需要重新打开终端或者注销/登录后使code
命令生效。 -
方法二:通过图形界面安装: 您也可以通过 Ubuntu 软件中心或官方网站安装 VS Code。 (如何在 Ubuntu 20.04 上安装 Visual Studio Code-阿里云开发者社区) 具体步骤:打开 Ubuntu 软件中心,在搜索栏输入 “Visual Studio Code”,找到 Visual Studio Code 应用并点击安装。这将自动下载安装适合您系统版本的 VS Code。另一种图形方式是从 VS Code 官网下载
.deb
安装包:访问 VS Code 官方下载页面,选择 Debian/Ubuntu 的.deb
包下载。下载完成后,在终端所在目录运行sudo dpkg -i code*.deb
(将文件名替换为实际下载的文件名),或直接双击该文件以使用软件中心安装。
安装完成后,可以在终端中输入 code --version
检查 VS Code 是否安装成功(或者直接启动 VS Code 查看版本号)。
2. 安装 C 编译器 (GCC) 和调试器 (GDB)
要编写和运行 C 程序,需要安装 GCC 编译器和 GDB 调试器。在大多数 Ubuntu 系统上,GCC/GDB 可通过官方仓库的工具集获得。我们可以通过安装 build-essential(包含 GCC、G++ 等一系列开发工具)以及 GDB 来满足需求:
-
打开终端,先更新软件包索引:
sudo apt update
-
安装 GCC 编译器集和 GDB 调试器:
sudo apt install build-essential gdb
上述命令将安装 GCC、G++ 等编译器以及 GDB 调试器 (ubuntu 下安装C/C++ 开发编译环境 - MasonLee - 博客园)。安装过程中可能需要输入用户密码并确认安装大小,按提示进行即可。
-
验证安装: 安装完成后,您可以通过查看版本号来确认是否成功安装:
gcc --version gdb --version
如果安装成功,这些命令会输出 GCC 和 GDB 的版本信息 (ubuntu 下安装C/C++ 开发编译环境 - MasonLee - 博客园)。例如,您可能会看到类似 “gcc (Ubuntu 11.2.0-XYZ) ...” 的字样。
💡 提示:
build-essential
软件包包含了常用的编译工具链(如 gcc、g++、make 等)。即使您目前只写 C 程序,安装它也确保环境完整。而-g
选项(我们稍后在编译配置中会用到)会在编译时生成调试符号,便于使用 GDB 调试程序。
3. 安装 VS Code 的 C/C++ 扩展插件
VS Code 功能强大但轻量,默认不自带对 C/C++ 代码的智能提示和调试支持。为了获得良好的开发体验,需要安装官方的 C/C++ 扩展(由 Microsoft 提供)。安装步骤如下:
-
启动 VS Code: 在应用程序中打开 Visual Studio Code。如果您想通过终端启动,可以使用命令
code .
(在某个目录下打开该目录为工作区)或者单独运行code
打开 VS Code 主界面。 -
打开扩展商店: 点击左侧活动栏底部的 扩展 图标(看起来像一个方块构成的四方形),或者使用快捷键 Ctrl+Shift+X 打开扩展视图。
-
搜索 C/C++ 扩展: 在扩展视图的搜索栏中输入 “C/C++”。在结果中您应该能看到 C/C++ (Publisher/发布者 是 Microsoft)的扩展。点击它查看详情。
-
安装扩展: 在扩展详情页面,点击安装按钮。VS Code 会从 Marketplace 下载并安装该扩 (Configure VS Code for Microsoft C++)】。安装完成后,“安装”按钮会变为“已安装”,并可能提示您重新加载 VS Code 以激活插件。如果有提示的话,点击重新加载或关闭再打开 VS Code 即可。
该扩展为 VS Code 提供对 C/C++ 代码的语法高亮、代码补全、调试支持等功能,是搭建 C/C++ 开发环境必不可少的组件。安装完毕后,我们就可以配置项目来使用它的功能了。
💡 备注: Microsoft 还提供了 C/C++ Extension Pack 扩展集合,包含了一组有用的 C/C++ 扩展。如果您需要更全面的功能,可以考虑安装该扩展包。不过,对于本教程,核心的 C/C++ 扩展已经足够满足编写和调试 C 代码的需求。
4. 创建 C 项目文件夹和源文件
在开始编写代码之前,我们需要创建一个项目目录来存放源码和配置文件。假设我们要编写一个 “Hello World” 程序作为示例:
-
创建项目文件夹: 您可以通过终端或文件管理器创建一个新的文件夹,例如命名为
hello-c
(名称可以自定)。使用终端的话,执行:mkdir ~/hello-c cd ~/hello-c
这将在您的主目录下创建一个名为 hello-c 的文件夹并进入该目 (Using C++ on Linux in VS Code)2】
-
在 VS Code 中打开项目文件夹: 启动 VS Code,然后点击菜单栏的 文件 > 打开文件夹(或直接将刚创建的文件夹拖拽到 VS Code 窗口中)。您也可以在终端进入该目录后执行
code .
打开当前文件夹作为 VS Code 工 (Using C++ on Linux in VS Code)2】。打开文件夹后,VS Code 的文件资源管理器(左侧栏)应显示该文件夹内容(目前可能是空的)。 -
创建源文件: 在 VS Code 中,按下 Ctrl+N 新建文件,按 Ctrl+S 保存。将文件命名为
hello.c
(确保扩展名为.c
)。通常,将主程序文件命名为main.c
或其他有意义的名字也可以,这里我们用hello.c
方便对应“Hello World”示例。保存后,您会在左侧的资源管理器中看到hello.c
文件出现在当前项目目录下。 -
项目结构: 现在,您的项目文件夹应该包含刚创建的源文件。稍后,当我们配置编译和调试时,VS Code 会在此文件夹下生成一个隐藏的 .vscode 子目录,用于存放配置文件(如
tasks.json
和launch.json ([Using C++ on Linux in VS Code](https://code.visualstudio.com/docs/cpp/config-linux#:~:text=The%20,folder%20in%20the%20workspace))1】。项目的基本结构如下(
.vscode` 文件夹会在稍后步骤生成):hello-c/ ← 项目根文件夹 ├── hello.c ← 源码文件 └── .vscode/ ← VS Code 配置文件夹(稍后创建) ├── tasks.json ← 编译任务配置 └── launch.json ← 调试配置
现在我们已经准备好了工作区和源文件,接下来就是配置 VS Code 以编译和运行这份 C 源码。
5. 配置 VS Code 的编译任务 (tasks.json)
要在 VS Code 中编译 C 程序,我们可以使用 任务 (Task) 来调用 GCC 对代码进行编译。VS Code 通过 tasks.json
文件保存这些任务配置。配置步骤如下:
-
生成 tasks.json 模板: 在 VS Code 中,打开菜单 终端 > 配置任务。如果这是您第一次在该项目中配置任务,VS Code 会提示您**“从模板创建 tasks.json”**或者直接列出几种任务模板选项。选择 “创建 tasks.json 文件(Create tasks.json from template)”,然后在弹出的模板列表中选择 GCC(或 “Others” -> “gcc”)作为编 ( launch.json / tasks.json / c_cpp_properties.json 解析 配置文件 C++ VSCode - HarryPotterIsDead! - 博客园)1】。VS Code 将会自动在当前项目下的
.vscode
文件夹中生成一个默认的tasks.json
文件,其中包含使用 GCC 编译的示例配置。-
在默认生成的
tasks.json
中,VS Code 定义了一个名为 “C/C++: gcc 生成活动文件”(如果您使用的是英文界面则为 “C/C++: gcc build active file”)的任务。这项任务的作用相当于在终端执行gcc <当前文件名>.c -o <当前文件名>
命令,即编译当前打开的 C 文件并输出同名的可执行 ( launch.json / tasks.json / c_cpp_properties.json 解析 配置文件 C++ VSCode - HarryPotterIsDead! - 博客园)1】。它通常包含如下字段:-
command
和args
:指定执行的命令和参数。例如,"command": "/usr/bin/gcc"
表示调用 GCC 编译器,"args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"]
表示编译时使用调试信息(-g
)编译当前文件${file}
,输出到与源文件同目录、同名但无扩展名的可执行 (Visual Studio Code 配置C、C++ 文件debug调试环境 - 程办事儿 - 博客园)0】(比如hello.c
将编译输出hello
可执行文件)。这里${file}
表示当前激活的文件,${fileDirname}
和${fileBasenameNoExtension}
用于构建输出路径,同样可直接使用。 -
label
:任务的名称标签,比如默认可能是"C/C++: gcc 生成活动文件"
。您可以自定义此名称,但需要注意与稍后调试配置中的preLaunchTask
对应(详见下一步)。 -
group
:将任务归类,通常默认{"kind": "build", "isDefault": true}
,表示这是一个构建任务且设为 (Visual Studio Code 配置C、C++ 文件debug调试环境 - 程办事儿 - 博客园)0】。将其标记为默认后,按 Ctrl+Shift+B 时会执行此任务。 -
problemMatcher
:用于捕获编译错误信息并在 VS Code 中高亮显示,一般使用$gcc
以识别 GCC 的错误格式。
-
如果 VS Code 没有自动生成任务,您也可以手动创建
.vscode/tasks.json
并填入配置。一个简化的tasks.json
示例配置如下:{ "version": "2.0.0", "tasks": [ { "type": "shell", "label": "编译 C 程序", "command": "/usr/bin/gcc", "args": [ "-g", // 生成调试符号 "${file}", // 当前打开的文件 "-o", // 指定输出文件名 "${fileDirname}/${fileBasenameNoExtension}" // 输出为与源文件同名的可执行文件 ], "options": { "cwd": "${workspaceFolder}" // 执行编译命令时的当前目录 }, "problemMatcher": ["$gcc"], "group": { "kind": "build", "isDefault": true // 将此任务设为默认构建任务 } } ] }
您可以根据需要调整其中的参数。例如,
-g
使编译产生调试信息(方便 GDB 调试),如果不需要调试也可去掉;默认使用当前文件编译,如果有多个源文件需要同时编译,可将"${file}"
改为"${workspaceFolder}/*.c"
等模式,以编译整个项目的所有 C (Using C++ on Linux in VS Code)1】。 -
-
保存配置: 编辑完成后保存
tasks.json
。此时在 VS Code 左侧的资源管理器中,应该能看到.vscode/tasks.json
文件存在。我们的编译任务就配置完成了。
💡 小贴士: 您可以通过 VS Code 的命令面板(F1 或 Ctrl+Shift+P)运行 "Tasks: Run Build Task" 来触发默认编译任务,或者直接按下 Ctrl+Shift+B 快捷键执行。编译输出(如出现错误或成功信息)会显示在 VS Code 窗口下方的 终端 (Terminal) 面板中。编译成功后,将在项目目录下生成可执行文件(例如 `hello (Using C++ on Linux in VS Code)00】
6. 配置 VS Code 的调试配置 (launch.json)
完成编译任务配置后,我们还需要配置调试,以便使用 VS Code 调试 C 程序。调试配置保存在 .vscode/launch.json
文件中。VS Code 提供了创建默认调试配置的向导:
-
生成 launch.json 模板: 在 VS Code 中,点击左侧边栏的运行和调试图标(类似一个带虫的三角形图标),打开运行调试视图。由于我们尚未创建调试配置,此时会出现一个 “运行和调试” 面板,提示我们创建配置文件。点击其中的 “创建 a launch.json file” 按钮,然后在弹出的环境选择下拉菜单中选择 **C++ (GDB/LLDB ( launch.json / tasks.json / c_cpp_properties.json 解析 配置文件 C++ VSCode - HarryPotterIsDead! - 博客园)33】作为调试环境。VS Code 将会根据选择自动生成
launch.json
文件。
(Visual Studio Code 配置C、C++ 文件debug调试环境 - 程办事儿 - 博客园)ge】 选择 C++ (GDB/LLDB) 调试环境: 上图高亮显示了在 VS Code 中选择 C++ (GDB/LLDB) 作为调试环境的界面。选择该选项后,VS Code 将为 C/C++ 程序创建默认的调试配置 launch.json
文件,其中预设了使用 GDB 调试的相关设置。
-
选择调试配置: 紧接着,VS Code 可能会要求您选择具体的调试配置。如果之前已安装 C/C++ 扩展,通常会提供一系列模板,比如「gcc - 生成和调试活动文件」或「clang - 生成和调试活动文件」等。这里我们选择 “gcc - 生成和调试活动文件”(表示使用 GCC 编译并调试当前 (Visual Studio Code 配置C、C++ 文件debug调试环境 - 程办事儿 - 博客园) (Visual Studio Code 配置C、C++ 文件debug调试环境 - 程办事儿 - 博客园)32】。
(Visual Studio Code 配置C、C++ 文件debug调试环境 - 程办事儿 - 博客园)ge】 选择 GCC 调试配置: 上图展示了选择 gcc - 生成和调试活动文件 这一默认调试配置的界面。选择该项后,VS Code 将自动在项目的 .vscode
文件夹中生成对应的 launch.json
(以及必要时更新 tasks.json
)配置,用于使用 GCC 对当前 C 源文件编译并启动 GDB 调试。
-
检查并修改 launch.json: 默认生成的
launch.json
会包含一个或多个调试配置项。找到名称类似 “gcc - 生成和调试活动文件” 的配置(这应该是当前默认配置)。常见需要关注的字段如下:-
program
:可执行程序的路径。例如默认值通常为"${fileDirname}/${fileBasenameNoExtension}"
,意思是以当前文件名(不含扩展)作为可执行文件名称,并假定它位于与源文件相同的目录下。这应与我们在编译任务中输出的位置一致。如果您将源文件命名为hello.c
且编译输出hello
,那么默认设置通常是正确的,无需更改。 -
cwd
:程序运行时的工作目录。默认一般为"${workspaceFolder}"
(即项目根目录)。保持默认即可。 -
console
/externalConsole
:是否使用外部终端。默认"externalConsole": false
表示使用 VS Code 内置的调试控制台来显示程序的标准输出。如需在单独的终端窗口中运行程序,可设为true
。 -
MIMode
和miDebuggerPath
:调试器类型及路径。默认"MIMode": "gdb"
,"miDebuggerPath": "/usr/bin/gdb"
,表示使用 GDB ( launch.json / tasks.json / c_cpp_properties.json 解析 配置文件 C++ VSCode - HarryPotterIsDead! - 博客园) ( launch.json / tasks.json / c_cpp_properties.json 解析 配置文件 C++ VSCode - HarryPotterIsDead! - 博客园)82】一般不用修改,只要您已安装了 GDB 且路径正确即可。 -
preLaunchTask
:调试会话开始前执行的任务。VS Code 默认会将这里设置为先前我们配置的编译任务名,以确保每次调试前自动编译最新代码。例如,如果任务名是 “C/C++: gcc 生成活动文件”,这里通常会有"preLaunchTask": "C/C++: gcc 生成活动文件"
。确保此名字与tasks.json
中对应任务的"label"
完全一致,否则在启动调试时 VS Code 将无法找到要执行的编 ( launch.json / tasks.json / c_cpp_properties.json 解析 配置文件 C++ VSCode - HarryPotterIsDead! - 博客园)82】。如果您在前一步自定义了任务名称,比如用了"label": "编译 C 程序"
,这里也需要相应改为"preLaunchTask": "编译 C 程序"
来匹配。
默认生成的配置通常已经考虑了上述字段,大多数情况下无需额外修改。如果您只有一个源文件并使用默认任务名,基本开箱即用。如有需要可以修改
"name"
字段来自定义配置名称,但这仅用于区分配置项,对功能无影响。 -
-
保存配置: 确认无误后,保存
launch.json
文件。现在调试配置已完成,可以开始编写代码并调试运行了。
💡 总结: 简而言之,我们使用 VS Code 提供的向导创建了调试配置,它指定了程序的可执行文件路径、调试器类型(GDB)、以及在调试前需要运行的编译任务等信息。这样,当我们启动调试时,VS Code 会先调用 GCC 编译(由
preLaunchTask
指定),然后自动调用 GDB 加载编译出的程序进行调试。
7. 编写一个 Hello World 程序
环境配置就绪后,我们来编写一个简单的 Hello World 程序测试一下。一方面可以验证工具链工作正常,另一方面熟悉 VS Code 基本的编写、编译、调试流程。
-
编辑源代码: 打开之前创建的
hello.c
文件(在 VS Code 左侧点击该文件)。在文件中输入以下代码:#include
int main(void) { printf("Hello, World! "); return 0; } 这段 C 代码包含了标准输入输出库
并定义了main
函数,调用printf
输出经典的 “Hello, World!” 字符串和换行符,然后返回 0。完成输入后,按 Ctrl+S 保存文件。 -
理解代码结构: 上述程序是一个典型的 C 语言入门示例:
-
#include
引入了标准 I/O 库,以使用printf
函数。 -
int main(void)
定义了主函数入口。 -
函数体内调用
printf("Hello, World! ")
打印问候语并换行。 -
return 0;
返回 0 通常表示程序成功执行。
确认代码无误并保存后,我们准备进行编译和运行调试。
-