跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++

Windows 下 VSCode 连接 VMware 虚拟机搭建 C++ 开发环境(Ubuntu 为例)

介绍在 Windows 主机通过 VSCode Remote SSH 连接 Ubuntu 虚拟机进行 C++ 开发的完整流程。内容包括安装 GCC/GDB 工具链、配置 OpenSSH 服务、建立 SSH 连接、安装必要扩展以及配置 tasks.json 和 launch.json 实现编译调试。文中还列举了常见连接、权限及环境问题解决方案。

DataScient发布于 2026/3/23更新于 2026/7/23.7K 浏览
Windows 下 VSCode 连接 VMware 虚拟机搭建 C++ 开发环境(Ubuntu 为例)

引言

本文将详细介绍如何在 windows 环境下通过 vscode 连接虚拟机搭建 c++ 开发环境。

依赖环境

主机环境:windows 操作系统 (我是 win11)

VMware 虚拟机:已安装 Linux 或其他目标系统(Ubuntu)。

vscode:在 windows 上安装 vscode

工具链:linux 需要安装 gcc/g++(c++ 开发建议用 g++)、gdb 环境,Ubuntu 下可通过 g++ --version 命令查看是否安装,如果安装会显示版本信息

如果未安装,可通过如下命令进行安装,也可以自己编译源码,这个暂时不做展开

sudo apt install g++
sudo apt install gdb 

第一步:vscode 安装 Remote - SSH 扩展,linux 下安装OpenSSH

可通过扩展图标或者按下 Ctrl+Shift+X 搜索安装 Remote - SSH 扩展

linux 可直接用以下命令安装 openssh 服务,

# 更新软件包列表
sudo apt update
# 安装 OpenSSH 服务器
sudo apt install openssh-server -y
# 启动 SSH 服务
sudo systemctl start ssh
# 设置开机自启动
sudo systemctl enable ssh
# 检查服务状态
sudo systemctl status ssh
# 验证 SSH 是否在监听(可选)
sudo netstat -tlnp | grep :22

linux 下输入ifconfig查询 IP 地址,新版推荐用 ip addr 查询,记住这个 IP 地址。

第二步:连接虚拟机

配置 SSH 连接:

  1. 打开命令面板(Ctrl+Shift+P)
  2. 输入"Remote-SSH: Add New SSH Host"
  3. 按格式输入连接信息:ssh username@虚拟机 IP

选择保存到默认配置文件(通常为 C:\Users\你的用户名\.ssh\config),配置文件内容一般为如下格式

Host MyUbuntuVM # 一个你容易记的别名
HostName 192.168.1.100 # 替换为你在第一步查到的 Ubuntu 虚拟机 IP
User your_username # 替换为你在 Ubuntu 系统中的用户名

接下来可在列表中看到连接对象,点击连接,可鼠标右键选择,也可点击右边的小箭头,选择在当前窗口还是新窗口建立连接,首次连接时会提示验证,输入虚拟机密码后完成认证,连接成功后会显示已连接

此时可在资源管理中选择打开文件夹

可以看到远程 linux 文件列表,选中确定即可管理该目录下文件,也可以通过左上角文件管理打开远程文件

此时可以打开终端,就可以像在虚拟机上一样执行各种命令了

第三步:c++ 环境搭建

在扩展中安装如下插件,cmake 如果需要用 cmake 管理程序可以安装,注意一定要在SSH 连接远程服务器上安装,不是在本地

接下来需要配置三个文件,在.vscode 下创建/修改 c_cpp_properties.json,添加以下内容

{
  "configurations": [
    {
      // 配置名称,在 VSCode 中显示为配置选项
      "name": "Linux",
      // 头文件搜索路径
      // "${workspaceFolder}/**" 表示包含工作区所有文件夹及其子文件夹
      "includePath": [
        "${workspaceFolder}/**",
        // 如果需要添加系统特定头文件路径,可以在这里添加,例如:
        // "/usr/local/include",
        // "/usr/include/c++/11"
      ],
      // 预处理器宏定义
      // 可以在这里定义项目特定的宏,例如:
      // ["DEBUG", "LINUX_BUILD"]
      "defines": [],
      // 编译器路径,指定使用的 G++ 编译器位置
      // 在 Ubuntu 系统中,这通常是 GCC/G++ 的标准安装路径
      "compilerPath": "/usr/bin/g++",
      // C 语言标准设置
      // "gnu17" 表示使用 GNU C17 标准(C17 带有 GNU 扩展,也可用不带 GNU 扩展的)
      "cStandard": "gnu17",
      // C++ 语言标准设置
      // "gnu++17" 表示使用 GNU C++17 标准(C++17 带有 GNU 扩展,也可用不带 GNU 扩展的)
      "cppStandard": "gnu++17",
      // IntelliSense 模式设置
      // "linux-gcc-x64" 表示针对 Linux 平台、GCC 编译器、x64 架构的智能感知
      "intelliSenseMode": "linux-gcc-x64",
      // 以下是一些可选但建议添加的配置项:
      // "compilerArgs": [
      // "-Wall",
      // 开启所有警告
      // "-Wextra",
      // 开启额外警告
      // "-O2"
      // 优化级别
      // ],
      // "browse": {
      // "path": [
      // "${workspaceFolder}/**",
      // "/usr/include",
      // "/usr/local/include"
      // ],
      // "limitSymbolsToIncludedHeaders": true
      // }
    }
  ],
  // 配置文件版本号,固定为 4
  "version": 4
}

在.vscode 下创建 tasks.json 文件,填入以下内容:

{
  "tasks": [
    {
      // 任务类型,cppbuild 表示这是 C/C++ 编译任务
      "type": "cppbuild",
      // 任务标签,在命令面板中显示的名称
      "label": "C/C++: g++ 生成活动文件",
      // 使用的编译器路径
      "command": "/usr/bin/g++",
      // 编译参数列表
      "args": [
        "-fdiagnostics-color=always",
        // 始终使用彩色诊断信息
        "-g",
        // 生成调试信息
        "${file}",
        // 要编译的当前活动文件
        "-o",
        // 指定输出文件
        "${fileDirname}/${fileBasenameNoExtension}"
        // 输出路径:同目录下与源文件同名的可执行文件
      ],
      // 执行任务的工作目录
      "options": {
        "cwd": "${fileDirname}"
        // 在源文件所在目录执行
      },
      // 问题匹配器,用于解析编译器输出并在问题面板显示错误/警告
      "problemMatcher": [
        "$gcc"
        // 使用 GCC 问题匹配器
      ],
      // 任务分组配置
      "group": {
        "kind": "build",
        // 属于构建组
        "isDefault": true
        // 作为默认构建任务
      },
      // 任务描述信息
      "detail": "调试器生成的任务。"
    }
  ],
  // 配置文件版本号
  "version": "2.0.0"
}

调试相关配置需要在.vscode/launch.json 文件添加

{
  // 配置数组,可以包含多个调试配置
  "configurations": [
    {
      // 配置名称,在调试下拉菜单中显示
      "name": "C/C++: g++ 构建和调试活动文件",
      // 调试器类型,cppdbg 表示使用 C++ 调试器
      "type": "cppdbg",
      // 请求类型,launch 表示启动新程序进行调试
      "request": "launch",
      // 要调试的程序路径
      // 使用变量:当前文件所在目录 + 当前文件名(无扩展名)
      "program": "${fileDirname}/${fileBasenameNoExtension}",
      // 传递给程序的命令行参数
      "args": [],
      // 是否在程序入口点(main 函数)自动暂停
      "stopAtEntry": false,
      // 调试器的工作目录
      "cwd": "${fileDirname}",
      // 环境变量设置
      "environment": [],
      // 是否使用外部控制台(false 表示使用 VSCode 集成终端)
      "externalConsole": false,
      // 调试器模式,gdb 表示使用 GNU 调试器
      "MIMode": "gdb",
      // 调试器初始化命令
      "setupCommands": [
        {
          "description": "为 gdb 启用整齐打印",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        },
        {
          "description": "将反汇编风格设置为 Intel",
          "text": "-gdb-set disassembly-flavor intel",
          "ignoreFailures": true
        }
      ],
      // 调试前执行的任务名称,必须与 tasks.json 中的 label 完全匹配
      "preLaunchTask": "C/C++: g++ 生成活动文件",
      // GDB 调试器的路径
      "miDebuggerPath": "/usr/bin/gdb"
    }
  ],
  // 配置文件版本号
  "version": "2.0.0"
}

测试 c++ 代码运行,直接点击运行,或者用命令行编译运行,可以看到已经成功输出,后面的 gdb 打印是程序执行完毕后正常打印

接下来打个断点,点击调试或者按 F5 可进入调试阶段,可以看到调试正常运行,可在控制台看到调试相关信息

注意事项

🚨 常见问题与解决方案
1. 连接问题
  • 问题描述:SSH 连接失败,提示"Connection refused"或超时。
  • 解决方案:
    • 检查 SSH 服务:确保虚拟机 SSH 服务正常运行 sudo systemctl status ssh。
    • 确认 IP 地址:虚拟机 IP 可能变更,每次启动后使用 ip addr 确认。
    • 检查防火墙:Ubuntu 默认防火墙通常不会阻止 SSH,如遇问题可尝试 sudo ufw allow ssh
  • 问题描述:权限错误,提示"Permission denied"。
  • 解决方案:
    • 检查用户名和密码是否正确。
    • 如需免密登录,可配置 SSH 密钥。
2. 环境配置问题
  • 问题描述:VSCode 中 C++ 扩展功能不正常(如无法跳转定义、智能提示失效)。
  • 解决方案:
    • 确保 C++ 扩展安装在远程:在 VSCode 扩展界面,确认 C/C++ 扩展显示"已安装在 SSH:目标地址"。
    • 检查编译器路径:在 c_cpp_properties.json 中确保 compilerPath 正确(如 "/usr/bin/g++")。
    • 重新扫描编译器:在远程环境中,按 Ctrl+Shift+P,执行"C/C++: 编辑配置"。
  • 问题描述:编译错误,提示"g++: not found"或类似信息。
  • 解决方案:
    • 安装编译工具:sudo apt install build-essential gdb。
    • 验证安装:在虚拟机终端执行 g++ --version。
3. 调试与运行问题
  • 问题描述:调试器无法启动,提示"Unable to start debugging"。
  • 解决方案:
    • 检查 GDB 路径:在 launch.json 中确保 miDebuggerPath 正确(如 "/usr/bin/gdb")。
    • 检查 preLaunchTask:launch.json 中的 preLaunchTask 需与 tasks.json 中的 label 完全一致。
    • 验证程序路径:program 字段指向的可执行文件路径需正确。
  • 问题描述:调试过程中 GDB 卡住或无响应。
  • 解决方案:
    • 可尝试使用 CMake Tools 插件作为替代方案。
    • 检查虚拟机资源(内存、CPU)是否充足。
  • 问题描述:库版本不兼容(如 glibc、libstdc++ 版本问题)。
  • 解决方案:
    • 升级远程主机库:sudo apt-get update && sudo apt-get upgrade libc6 libstdc++6。
    • 考虑使用静态链接的 VSCode 服务器或容器方案。

总结

本文详细讲解了如何在 windows 环境下通过 vscode 连接虚拟机搭建 c++ 开发环境,我个人一般是在虚拟机上做学习作用,虽然是在本机虚拟机上实现,但是实际工作中连接物理服务器是类似的操作。

目录

  1. 引言
  2. 依赖环境
  3. 第一步:vscode 安装 Remote - SSH 扩展,linux 下安装OpenSSH
  4. 更新软件包列表
  5. 安装 OpenSSH 服务器
  6. 启动 SSH 服务
  7. 设置开机自启动
  8. 检查服务状态
  9. 验证 SSH 是否在监听(可选)
  10. 第二步:连接虚拟机
  11. 第三步:c++ 环境搭建
  12. 注意事项
  13. 🚨 常见问题与解决方案
  14. 1. 连接问题
  15. 2. 环境配置问题
  16. 3. 调试与运行问题
  17. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Windows 批处理脚本中 set 与 setlocal 命令详解
  • OpenClaw Java 基于 Spring Boot 3.3 实现 AI Agent Gateway
  • AI 语言模型详解:原理、架构与应用实践
  • MyLesson 微信小程序前台前端开发(一)
  • 老款 Mac 部署本地 AI:OpenClaw 环境一键搭建
  • Buzz:基于 Whisper 的离线语音转写工具
  • OpenAI 指控 DeepSeek 模型蒸馏,字节发布 Seedance 2.0 与 Java 26 现状
  • MySQL 高性能架构详解:基于 Apache ShardingSphere 的读写分离与分片
  • 主流 AI 编程辅助工具横向对比:Cursor、Copilot 与国产方案解析
  • OpenClaw 飞书机器人配置指南:多渠道 AI 助手集成
  • OpenClaw 飞书通信端机器人配置指南:实现多渠道 AI 助手集成
  • DIY 无人机升压降压电路设计
  • HDFS 分布式文件系统编程实践与常用命令详解
  • AI 自动化测试:接口测试全流程自动化的实现方法
  • Python 正则表达式语法与使用指南
  • DeepSeek 各版本说明与优缺点分析
  • 腾讯云服务器部署 OpenClaw 对接飞书实战
  • Spring AI Tool 机制详解:让大模型调用外部工具
  • Stable Diffusion 模型原理与本地部署实践
  • RAG 检索增强生成技术:原理架构与核心模块详解

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online