> 技术文档 > 一看就会系列之Ubuntu 系统中 VSCode gcc 开发环境完整配置教程_ubuntu vscode

一看就会系列之Ubuntu 系统中 VSCode gcc 开发环境完整配置教程_ubuntu vscode

 

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

    一看就会系列之Ubuntu 系统中 VSCode gcc 开发环境完整配置教程_ubuntu vscode

  • 输入密码,等待安装

  • 以上命令将从 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 查看版本号)。

一看就会系列之Ubuntu 系统中 VSCode gcc 开发环境完整配置教程_ubuntu vscode

2. 安装 C 编译器 (GCC) 和调试器 (GDB)

要编写和运行 C 程序,需要安装 GCC 编译器和 GDB 调试器。在大多数 Ubuntu 系统上,GCC/GDB 可通过官方仓库的工具集获得。我们可以通过安装 build-essential(包含 GCC、G++ 等一系列开发工具)以及 GDB 来满足需求:

  1. 打开终端,先更新软件包索引:

    sudo apt update
  2. 安装 GCC 编译器集和 GDB 调试器:

    sudo apt install build-essential gdb

    上述命令将安装 GCC、G++ 等编译器以及 GDB 调试器 (ubuntu 下安装C/C++ 开发编译环境 - MasonLee - 博客园)。安装过程中可能需要输入用户密码并确认安装大小,按提示进行即可。

  3. 验证安装: 安装完成后,您可以通过查看版本号来确认是否成功安装:

    gcc --versiongdb --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 提供)。安装步骤如下:

  1. 启动 VS Code: 在应用程序中打开 Visual Studio Code。如果您想通过终端启动,可以使用命令 code . (在某个目录下打开该目录为工作区)或者单独运行 code 打开 VS Code 主界面。

  2. 打开扩展商店: 点击左侧活动栏底部的 扩展 图标(看起来像一个方块构成的四方形),或者使用快捷键 Ctrl+Shift+X 打开扩展视图。

  3. 搜索 C/C++ 扩展: 在扩展视图的搜索栏中输入 “C/C++”。在结果中您应该能看到 C/C++ (Publisher/发布者 是 Microsoft)的扩展。点击它查看详情。

  4. 安装扩展: 在扩展详情页面,点击安装按钮。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” 程序作为示例:

  1. 创建项目文件夹: 您可以通过终端或文件管理器创建一个新的文件夹,例如命名为hello-c(名称可以自定)。使用终端的话,执行:

    mkdir ~/hello-ccd ~/hello-c

    这将在您的主目录下创建一个名为 hello-c 的文件夹并进入该目 (Using C++ on Linux in VS Code)2】

  2. 在 VS Code 中打开项目文件夹: 启动 VS Code,然后点击菜单栏的 文件 > 打开文件夹(或直接将刚创建的文件夹拖拽到 VS Code 窗口中)。您也可以在终端进入该目录后执行 code . 打开当前文件夹作为 VS Code 工 (Using C++ on Linux in VS Code)2】。打开文件夹后,VS Code 的文件资源管理器(左侧栏)应显示该文件夹内容(目前可能是空的)。

  3. 创建源文件: 在 VS Code 中,按下 Ctrl+N 新建文件,按 Ctrl+S 保存。将文件命名为 hello.c(确保扩展名为 .c)。通常,将主程序文件命名为 main.c 或其他有意义的名字也可以,这里我们用 hello.c 方便对应“Hello World”示例。保存后,您会在左侧的资源管理器中看到 hello.c 文件出现在当前项目目录下。

  4. 项目结构: 现在,您的项目文件夹应该包含刚创建的源文件。稍后,当我们配置编译和调试时,VS Code 会在此文件夹下生成一个隐藏的 .vscode 子目录,用于存放配置文件(如 tasks.jsonlaunch.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 文件保存这些任务配置。配置步骤如下:

  1. 生成 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】。它通常包含如下字段:

      • commandargs:指定执行的命令和参数。例如,\"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】。

  2. 保存配置: 编辑完成后保存 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 提供了创建默认调试配置的向导:

  1. 生成 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 调试的相关设置。

  1. 选择调试配置: 紧接着,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 调试。

  1. 检查并修改 launch.json: 默认生成的 launch.json 会包含一个或多个调试配置项。找到名称类似 “gcc - 生成和调试活动文件” 的配置(这应该是当前默认配置)。常见需要关注的字段如下:

    • program:可执行程序的路径。例如默认值通常为 \"${fileDirname}/${fileBasenameNoExtension}\",意思是以当前文件名(不含扩展)作为可执行文件名称,并假定它位于与源文件相同的目录下。这应与我们在编译任务中输出的位置一致。如果您将源文件命名为 hello.c 且编译输出 hello,那么默认设置通常是正确的,无需更改。

    • cwd:程序运行时的工作目录。默认一般为 \"${workspaceFolder}\"(即项目根目录)。保持默认即可。

    • console / externalConsole:是否使用外部终端。默认 \"externalConsole\": false 表示使用 VS Code 内置的调试控制台来显示程序的标准输出。如需在单独的终端窗口中运行程序,可设为 true

    • MIModemiDebuggerPath:调试器类型及路径。默认 \"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\" 字段来自定义配置名称,但这仅用于区分配置项,对功能无影响。

  2. 保存配置: 确认无误后,保存 launch.json 文件。现在调试配置已完成,可以开始编写代码并调试运行了。

💡 总结: 简而言之,我们使用 VS Code 提供的向导创建了调试配置,它指定了程序的可执行文件路径、调试器类型(GDB)、以及在调试前需要运行的编译任务等信息。这样,当我们启动调试时,VS Code 会先调用 GCC 编译(由 preLaunchTask 指定),然后自动调用 GDB 加载编译出的程序进行调试。

7. 编写一个 Hello World 程序

环境配置就绪后,我们来编写一个简单的 Hello World 程序测试一下。一方面可以验证工具链工作正常,另一方面熟悉 VS Code 基本的编写、编译、调试流程。

  1. 编辑源代码: 打开之前创建的 hello.c 文件(在 VS Code 左侧点击该文件)。在文件中输入以下代码:

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

    这段 C 代码包含了标准输入输出库 并定义了 main 函数,调用 printf 输出经典的 “Hello, World!” 字符串和换行符,然后返回 0。完成输入后,按 Ctrl+S 保存文件。

  2. 理解代码结构: 上述程序是一个典型的 C 语言入门示例:

    • #include 引入了标准 I/O 库,以使用 printf 函数。

    • int main(void) 定义了主函数入口。

    • 函数体内调用 printf(\"Hello, World!\\n\") 打印问候语并换行。

    • return 0; 返回 0 通常表示程序成功执行。

    确认代码无误并保存后,我们准备进行编译和运行调试。