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

FAIR plus 机器人全产业链接会,链动全球智能新机遇

FAIR plus 机器人全产业链接会,链动全球智能新机遇

本文声明:本篇内容为个人真实体验分享,非商业广告,无强制消费引导。所有推荐仅代表个人感受,仅供参考,按需选择。 过往十年,中国机器人产业蓬勃发展。中国出品的核心部件得到了产业规模化的验证,机器人产品的整体制造能力也开始向全球输出。与此同时,机器人产业正在更加紧密地与人工智能融合,机器人从专用智能走向通用智能。 在此背景下,深圳市机器人协会打造了“FAIR plus机器人全产业链接会”,FAIR plus是一个专注于机器人全产业链技术和开发资源的平台,也是全球首个机器人开发技术展,以供应链和创新技术为切入点,推动全球具身智能机器人产业的发展。通过学术会议、技术标准、社区培育、供需对接等方式,创造人工智能+机器人各产业链环节的开发、产品、工程、方案等技术人员,以及有意引入机器人的场景方相关工艺、设备、信息技术人员线下见面的机会,达成合作,以有效促进机器人向智能化方向发展,连同提升产业整体能力的建设和配置。 2025年4月,首届“FAIR plus机器人全产业链接会”(FAIR plus 2025)以“智启未来链动全球”为主题,汇聚全球顶尖专家、企业领袖,

By Ne0inhk

Android陀螺仪实战:从基础到VR运动策略封装

1. 陀螺仪基础:从传感器数据到三维旋转 大家好,我是老张,在移动端和智能硬件领域摸爬滚打了十几年,今天想和大家聊聊 Android 陀螺仪。很多刚接触的朋友会觉得这东西很神秘,什么角速度、姿态解算,听起来就头大。其实没那么复杂,你可以把陀螺仪想象成一个特别灵敏的“旋转速度计”。当你拿着手机转动时,它就能立刻告诉你:“嘿,你现在正绕着X轴,以每秒0.5弧度的速度在转呢!” 在 Android 里,我们通过 SensorManager 这个“大管家”来和陀螺仪打交道。第一步永远是获取服务,这就像你去银行办事得先取号一样。拿到 SensorManager 后,我们就能查询设备上有没有陀螺仪(Sensor.TYPE_GYROSCOPE)。现在绝大多数手机都有,但稳妥起见,检查一下总是好的。接下来就是注册一个监听器,告诉系统:“我准备好接收旋转数据了,有新数据就赶紧通知我。” 这里有个关键参数叫采样延迟,比如 SENSOR_DELAY_

By Ne0inhk
介绍终身机器人学习的数据集LIBERO

介绍终身机器人学习的数据集LIBERO

1 LIBERO的作用 LIBERO是一个用于研究多任务和终身机器人学习中知识迁移的综合基准测试平台,LIBERO是基于robosuite框架构建的。它专注于机器人操作任务,这些任务需要两类知识: 1. 陈述性知识:关于物体和空间关系的知识 2. 程序性知识:关于运动和行为的知识 2 核心原理 任务生成与基准设计 LIBERO提供了一个程序化生成管道,原则上可以生成无限数量的操作任务。系统包含130个任务,分为四个任务套件,每个套件都有受控的分布偏移: * LIBERO-Spatial/Object/Goal:专注于特定类型知识的迁移 * LIBERO-100:包含需要迁移纠缠知识的100个操作任务 学习框架 系统采用模仿学习作为主要学习方法,因为任务使用稀疏奖励函数(任务完成时获得+1奖励)。LIBERO提供高质量的人类遥操作演示数据集用于训练。 算法与策略架构 LIBERO实现了三种视觉运动策略网络: * bc_rnn_policy:基于RNN的行为克隆策略 * bc_transformer_policy:基于Transformer的行为克隆策略

By Ne0inhk
龙虾机器人(OpenClaw)本地部署完全技术指南

龙虾机器人(OpenClaw)本地部署完全技术指南

龙虾机器人(OpenClaw)本地部署完全技术指南 前言:什么是“龙虾机器人”? 在开始部署之前,我们需要明确部署的对象。通常所说的“龙虾机器人”指的是开源项目 OpenClaw(曾用名:Clawdbot、Moltbot)。它由程序员彼得·斯坦伯格开发,是一个开源的、可本地部署的通用型AI代理系统。与ChatGPT等对话式AI不同,OpenClaw被赋予了操作系统的权限:它可以执行终端命令、读写文件、操控浏览器、安装软件,甚至通过MCP协议调用外部工具。 由于其强大的系统操控能力,安全性是部署时需关注的首要问题。官方及社区普遍建议:不要在主力机或存有敏感数据的生产环境直接裸奔部署,最好使用虚拟机、Docker容器或专用硬件(如Mac Mini或AI开发盒子)进行隔离。 第一章:环境准备与核心依赖 在安装OpenClaw之前,必须准备好运行环境。OpenClaw的核心由TypeScript编写,因此Node.js是必不可少的运行环境。此外,根据安装方式的不同,可能还需要Git、Docker或Python环境。 1.1 硬件建议与系统选择 * Linux

By Ne0inhk