Ubuntu 系统配置 VS Code C++ 开发环境
前言
在 Linux 环境下进行 C++ 开发是许多开发者的选择,Ubuntu 作为最受欢迎的 Linux 发行版之一,拥有完善的软件生态和活跃的社区支持。本文将详细介绍如何在 Ubuntu 系统中配置完整的 C++ 开发环境,包括编译器、调试器、构建工具以及 VS Code 编辑器的配置。
测试环境:
- Ubuntu 20.04 LTS
- VS Code 1.x
- GCC 9.4.0 / G++ 9.4.0
一、安装基础编译工具链
1.1 更新系统软件包
首先,确保系统软件包列表是最新的:
bash
sudo apt update
sudo apt upgrade
1.2 安装 build-essential
build-essential 是一个元数据包,包含了 GNU 编辑器集合(GCC/G++)、GNU 调试器(GDB)、Make 等编译 C/C++ 程序所必需的开发库和工具。安装它相当于一次性安装了 gcc、g++、make 等核心工具。
bash
sudo apt install build-essential
1.3 验证安装
安装完成后,可以通过以下命令验证各工具的版本:
查看 GCC 版本:
bash
gcc --version
输出示例:
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
查看 G++ 版本:
bash
g++ --version
输出示例:
g++ (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
查看 Make 版本:
bash
make --version
输出示例:
GNU Make 4.2.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
二、安装调试器和构建工具
2.1 安装 GDB 调试器
GDB(GNU Debugger)是 Linux 下最常用的命令行调试器,VS Code 的 C/C++ 调试功能依赖于它。
bash
sudo apt install gdb
查看 GDB 版本:
bash
gdb --version
输出示例:
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
2.2 安装 CMake 构建工具
CMake 是一个跨平台的自动化建构系统,它使用平台独立的配置文件来控制软件编译过程。对于大型 C++ 项目,CMake 是事实上的标准构建工具。
bash
sudo apt install cmake
查看 CMake 版本:
bash
cmake --version
输出示例:
cmake version 3.16.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).
三、安装和配置 VS Code
3.1 安装 VS Code
如果尚未安装 VS Code,可以从官方网站下载 .deb 安装包,或通过 Snap 安装:
bash
sudo snap install code --classic
3.2 安装 C/C++ 扩展
打开 VS Code,点击左侧活动栏的扩展图标(或按 Ctrl+Shift+X),搜索并安装以下扩展:
- C/C++ Extension Pack(推荐):微软官方提供的 C/C++ 扩展包,包含智能感知、调试、代码导航等功能。
- Code Runner(可选):一键运行代码片段,适合快速测试。
- C/C++ Compile Run(可选):简化编译和运行流程。
安装 C/C++ Extension Pack 后,其他相关插件会自动附带安装。
四、配置 VS Code C++ 开发环境
VS Code 与 Visual Studio 或其他大型 IDE 的工作机制类似,每个项目有一个单独的工作空间(目录)。可以为每个工作空间配置定制的环境,也可以配置默认的全局环境。
在配置 C/C++ 开发环境时,主要涉及三个配置文件,它们都位于项目根目录下的 .vscode 文件夹中:
- tasks.json:定义编译任务,告诉 VS Code 如何编译源文件
- launch.json:定义调试配置,控制调试器的行为
- c_cpp_properties.json:定义 IntelliSense 设置,如头文件路径、编译器路径、C/C++ 标准等
4.1 配置 tasks.json(编译任务)
tasks.json 用于告诉 VS Code 如何编译你的 C++ 源文件。
创建方法:
- 打开任意
.cpp文件 - 点击菜单栏
Terminal→Configure Tasks... - 选择
C/C++: g++ build active file
VS Code 会自动生成一个 tasks.json 文件,内容如下:
json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
关键配置说明:
type:任务类型,可以设置为"cppbuild"或"shell"。"shell"更通用,可以根据需要修改。label:任务名称,可以自定义,但必须与launch.json中的preLaunchTask字段保持一致。command:指定编译器路径,可以使用绝对路径/usr/bin/g++,也可以直接使用g++(系统会在 PATH 中查找)。args:编译器参数数组:-fdiagnostics-color=always:始终显示彩色诊断信息-g:生成调试信息,供 GDB 使用${file}:当前打开的文件-o ${fileDirname}/${fileBasenameNoExtension}:输出文件路径,与源文件同名但不带扩展名
options.cwd:工作目录,${fileDirname}表示当前文件所在目录problemMatcher:问题匹配器,$gcc用于解析 GCC/G++ 的输出错误group:任务组,"isDefault": true表示这是默认构建任务
注意: 不需要修改诸如 ${fileDirname}、${fileBasenameNoExtension} 这样的预定义变量,它们是 VS Code 的动态变量,会根据当前文件自动替换。更多变量参考详见官方文档。
4.2 配置 launch.json(调试配置)
launch.json 用于配置调试环境,控制 GDB 调试器的行为。
创建方法:
- 打开任意
.cpp文件 - 点击菜单栏
Run→Add Configuration... - 选择
C/C++: (gdb) Launch
或者点击侧边栏的"运行和调试"图标,然后点击"创建 launch.json 文件",选择 C/C++: (gdb) Launch。
VS Code 会自动生成一个 launch.json 文件,内容如下:
json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++ - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++ build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
关键配置说明:
name:调试配置的名称,显示在调试下拉菜单中type:调试器类型,cppdbg表示使用 C/C++ 调试扩展request:请求类型,launch表示启动新进程进行调试program:需要调试的可执行文件路径。${fileDirname}/${fileBasenameNoExtension}表示当前文件所在目录下、与当前文件同名但不带扩展名的可执行文件。例如,当foobar.cpp处于打开状态时,编译得到的foobar会被调试。args:传递给程序的命令行参数数组stopAtEntry:是否在程序入口处停止。默认为false,运行时调试器不会在源文件中添加断点;设置为true时,调试会在main函数入口处等待,方便逐步调试。cwd:工作目录,${fileDirname}表示当前文件所在目录externalConsole:是否使用外部控制台。false表示使用 VS Code 内置终端,true表示弹出独立终端窗口MIMode:调试器模式,gdb表示使用 GDBsetupCommands:调试器启动时执行的命令。-enable-pretty-printing启用 GDB 的美化打印功能,使 STL 容器等复杂数据结构的显示更易读preLaunchTask:调试前执行的任务,必须与tasks.json中的label字段一致miDebuggerPath:GDB 调试器的路径,通常为/usr/bin/gdb
4.3 配置 c_cpp_properties.json(IntelliSense 配置)
c_cpp_properties.json 用于配置 IntelliSense(智能感知)的行为,包括头文件搜索路径、编译器路径、C/C++ 标准等。
创建方法:
- 按
Ctrl+Shift+P打开命令面板 - 输入并选择
C/C++: Edit Configurations (JSON)
VS Code 会自动创建一个 c_cpp_properties.json 文件,内容如下:
json
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c17",
"cppStandard": "gnu++14",
"intelliSenseMode": "linux-gcc-x64",
"configurationProvider": "ms-vscode.cmake-tools"
}
],
"version": 4
}
关键配置说明:
name:配置名称,可以根据不同平台设置多个配置includePath:头文件搜索路径数组。${workspaceFolder}/**表示递归搜索工作区文件夹下的所有子目录defines:预处理器宏定义数组,例如["DEBUG", "_DEBUG"]compilerPath:编译器路径,IntelliSense 使用此编译器来获取系统头文件路径和内置宏cStandard:C 语言标准,可选值包括c89、c99、c11、c17等cppStandard:C++ 语言标准,可选值包括c++98、c++11、c++14、c++17、c++20、gnu++14等。gnu++前缀表示启用 GNU 扩展intelliSenseMode:IntelliSense 模式,应与编译器和平台匹配。linux-gcc-x64表示 Linux 平台下的 GCC 64 位模式configurationProvider:配置提供者,如果使用 CMake 项目,可以设置为ms-vscode.cmake-tools,让 CMake Tools 扩展自动提供配置
五、测试配置
5.1 创建测试文件
在工作区创建一个名为 test.cpp 的文件,输入以下代码:
cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
cout << "Hello, Ubuntu C++ Development!" << endl;
string name = "VS Code";
cout << "Welcome to " << name << " on Ubuntu!" << endl;
return 0;
}
注意: cout 后要加 endl,否则会延迟输出。endl 不仅插入换行符,还会刷新输出缓冲区。
5.2 编译和运行
方法一:使用终端手动编译
bash
g++ -g test.cpp -o test
./test
方法二:使用 VS Code 任务
- 打开
test.cpp文件 - 按
Ctrl+Shift+B运行默认构建任务 - 在终端中运行生成的可执行文件:
./test
方法三:使用 Code Runner 扩展
- 右键点击编辑器,选择
Run Code - 或直接按
Ctrl+Alt+N
5.3 调试测试
- 在
main函数的某一行设置断点(点击行号左侧) - 按
F5或点击侧边栏的"运行和调试"按钮 - 选择
g++ - Build and debug active file配置 - 调试器会在断点处暂停,可以查看变量、单步执行等
六、常见问题与解决方案
6.1 找不到头文件
如果 IntelliSense 提示找不到某些头文件,检查 c_cpp_properties.json 中的 includePath 是否正确。对于系统头文件,确保 compilerPath 指向正确的编译器。
6.2 调试时无法命中断点
确保编译时添加了 -g 标志生成调试信息。检查 launch.json 中的 program 路径是否正确指向可执行文件。
6.3 中文乱码问题
如果终端输出中文乱码,可以在编译时添加 -fexec-charset=UTF-8 参数:
json
"args": [
"-fdiagnostics-color=always",
"-g",
"-fexec-charset=UTF-8",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
]
6.4 多文件项目编译
对于多文件项目,建议改用 CMake 或 Makefile 管理构建过程。在 tasks.json 中可以调用 make 或 cmake --build 命令:
json
{
"type": "shell",
"label": "CMake Build",
"command": "cmake",
"args": ["--build", "${workspaceFolder}/build"],
"group": {
"kind": "build",
"isDefault": true
}
}
七、总结
本文详细介绍了在 Ubuntu 系统中配置 VS Code C++ 开发环境的完整流程,包括:
- 安装基础编译工具链(GCC/G++、Make)
- 安装调试器(GDB)和构建工具(CMake)
- 安装 VS Code 及 C/C++ 扩展
- 配置
tasks.json、launch.json和c_cpp_properties.json三个核心文件 - 测试编译、运行和调试功能
通过以上配置,你可以在 Ubuntu 上获得接近 Visual Studio 的 C++ 开发体验。对于大型项目,建议结合 CMake 使用,以获得更好的项目管理和跨平台支持。