windows下 vscode 连接VMware虚拟机 c++开发环境搭建(Ubuntu为例),超详细,看这一篇就够了

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")。
    • 检查preLaunchTasklaunch.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++开发环境,我个人一般是在虚拟机上做学习作用,虽然是在本机虚拟机上实现,但是实际工作中连接物理服务器是类似的操作。

Read more

人工智能 Gemini 2.5 Pro:深度解析技术突破与实战应用

人工智能 Gemini 2.5 Pro:深度解析技术突破与实战应用

🎬 个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬 艾莉丝的简介: 文章目录 * 前言 * 一、技术架构的三大革命性突破 * 1.1 稀疏混合专家架构:容量与效率的完美平衡 * 1.2 动态推理预算:让AI学会"思考" * 1.3 超长上下文处理:百万Token带来的质变 * 二、多模态能力的实质性突破 * 2.1 视频理解到交互应用 * 2.2 图像到代码的精准转换 * 2.3 跨模态逻辑推理

By Ne0inhk
OpenClaw龙虾图鉴:16只AI Agent选型指南

OpenClaw龙虾图鉴:16只AI Agent选型指南

这里写目录标题 * 🦞 OpenClaw龙虾图鉴:16只AI Agent选型指南 * 🎯 快速选型指南 * 🥇 第一梯队:官方正统 * 1️⃣ OpenClaw - 原生官网框架 * 2️⃣ 🌙 KimiClaw - 云端大存储+Kimi K2.5 * 3️⃣ ⚡ MaxClaw - 成本杀手,10秒部署 * 🥈 第二梯队:极客专精 * 4️⃣ 🔥 NullClaw - 678KB极致疯子 * 5️⃣ 🦀 OpenFang - Rust生产级Agent OS * 6️⃣ 🐍 Nanobot - Python死忠粉 * 7️⃣ 🤖 NanoClaw - 多Agent协作狂魔 * 🥉 第三梯队:场景特化 * 🌱 第四梯队:新兴潜力股 * 1️⃣5️⃣ 🌱 EasyClaw -

By Ne0inhk
【金仓数据库征文】学校AI数字人:从Sql Server到KingbaseES的数据库转型之路

【金仓数据库征文】学校AI数字人:从Sql Server到KingbaseES的数据库转型之路

摘要:本文围绕学校 AI 数字人项目从 Sql Server 数据库替换至 KingbaseES 数据库的实践展开,涵盖迁移背景、两种数据库对比、替换实施步骤、应用效果展示、问题与解决措施等多方面内容,为教育领域类似项目提供了详实参考。 目录 1.背景与需求 2.两种数据库对比 2.1功能特性差异 2.2兼容性分析 3.替换实施步骤 3.1前期准备工作 3.2数据迁移过程 3.3系统测试与优化 4.应用效果展示 4.1性能提升表现 4.2稳定性与安全性增强 5.问题与解决措施 5.1迁移中遇到的问题 5.2解决方案与经验总结 5.3 三个KingbaseDTS经度代码案例及解释 6.总结与展望 6.

By Ne0inhk
Flutter for OpenHarmony:Flutter 三方库 pem — 在鸿蒙应用中优雅处理加密证书与密钥(适配鸿蒙 HarmonyOS Next ohos)

Flutter for OpenHarmony:Flutter 三方库 pem — 在鸿蒙应用中优雅处理加密证书与密钥(适配鸿蒙 HarmonyOS Next ohos)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net。 Flutter for OpenHarmony:Flutter 三方库 pem — 在鸿蒙应用中优雅处理加密证书与密钥(适配鸿蒙 HarmonyOS Next ohos) 在现代移动应用的网络安全、数字签名及加密传输中,证书的管理是基石。无论是对接 HTTPS 的私有根证书,还是在进行 RSA 加密时加载私钥,我们通常会接触到 PEM (Privacy-Enhanced Mail) 格式的文件——即那些以 -----BEGIN CERTIFICATE----- 开头的文本块。 在 Flutter for OpenHarmony 开发中,如何高效地解析和编码这些 Base64 文本数据?pem 库提供了一套标准的、纯 Dart 的工具包。今天,我们将实战如何利用它在鸿蒙项目里完成安全底座的构建。 一、

By Ne0inhk