Ubuntu 系统配置 VS Code C++ 开发环境
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 更新系统软件包
首先,确保系统软件包列表是最新的:
sudoaptupdatesudoaptupgrade1.2 安装 build-essential
build-essential是一个元数据包,包含了 GNU 编辑器集合(GCC/G++)、GNU 调试器(GDB)、Make 等编译 C/C++ 程序所必需的开发库和工具。安装它相当于一次性安装了 gcc、g++、make 等核心工具。
sudoaptinstallbuild-essential1.3 验证安装
安装完成后,可以通过以下命令验证各工具的版本:
查看 GCC 版本:
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++ 版本:
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 版本:
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++ 调试功能依赖于它。
sudoaptinstallgdb查看 GDB 版本:
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 是事实上的标准构建工具。
sudoaptinstallcmake查看 CMake 版本:
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 安装:
sudosnapinstallcode--classic3.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文件,内容如下:
{"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文件,内容如下:
{// 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文件,内容如下:
{"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的文件,输入以下代码:
#include<iostream>#include<string>usingnamespacestd;intmain(){cout<<"Hello, Ubuntu C++ Development!"<<endl;string name="VS Code";cout<<"Welcome to "<<name<<" on Ubuntu!"<<endl;return0;}注意:cout后要加endl,否则会延迟输出。endl不仅插入换行符,还会刷新输出缓冲区。
5.2 编译和运行
方法一:使用终端手动编译
g++-gtest.cpp-otest./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参数:
"args":["-fdiagnostics-color=always","-g","-fexec-charset=UTF-8","${file}","-o","${fileDirname}/${fileBasenameNoExtension}"]6.4 多文件项目编译
对于多文件项目,建议改用 CMake 或 Makefile 管理构建过程。在tasks.json中可以调用make或cmake --build命令:
{"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 使用,以获得更好的项目管理和跨平台支持。
参考资料
- VS Code C++ 官方文档
- GCC 官方文档
- GDB 用户手册
- CMake 官方文档
