使用 VS Code 通过 SSH 编译 Linux C++ 程序

作者:billy

版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

前言

在软件开发领域,跨平台开发是一项常见需求。特别是对于C++开发者来说,有时需要在 Windows 环境下编写代码,但却需要在 Linux 环境中编译和运行。这种情况在系统编程、嵌入式开发或高性能计算领域尤为常见。

首先明确目标:实现 VS Code 通过 SSH 连接 Linux 主机,使用 CMake 构建 Windows 编写的 C++ 代码,并在 Linux 生成可执行文件。

一、前提条件

  1. 本地 Windows 安装 VS Code,并且本地已有待编译的代码(C/C++ 项目,含 CMakeLists.txt);
  2. 可访问的 Linux 服务器(物理机或者虚拟机,本文以虚拟机为例);
  3. 确保 Windows 与 Linux 主机网络互通;
  4. Linux 主机上已安装 SSH 服务(一般默认安装,可通过 systemctl status sshd检查,未安装则执行 apt install openssh-server);
  5. Linux 主机上已安装 C++ 编译工具链:gcc/g++、cmakec、make(sudo apt update && sudo apt install -y g++ cmake make);

二、安装 VS Code 扩展

打开 VS Code,在左侧扩展栏(快捷键 Ctrl+Shift+X)搜索并安装以下扩展:

  1. Remote - SSH(必装):用于 SSH 连接远程 Linux 主机;
  2. C++(必装):提供语法高亮、调试、IntelliSense;
  3. CMake(必装):CMake 语法高亮和命令支持;
  4. CMake Tools 扩展(必装):一键构建、配置 CMake 工程(关键插件);
  5. C/C++ Extension Pack(可选):打包了 C++ 开发常用扩展,一键安装更便捷;

三、SSH 连接远程 Linux 主机

  1. 按 F1 打开 VS Code 命令面板(快捷键 Ctrl+Shift+P),输入并选择 Remote-SSH: Connect to Host...;
  2. 输入远程 Linux 的 SSH 连接信息,格式为:用户名@远程主机IP/域名 -p 端口号(端口默认 22 可省略),例如:user@192.168.10.21 或 user@192.168.10.21 -p 2222;
  3. 首次连接会提示选择 SSH 配置文件(默认选第一个即可),然后输入远程主机的密码(若配置了 SSH 密钥免密登录,可跳过密码输入);
  4. 连接成功后,VS Code 窗口左下角会显示远程主机的标识(如SSH: 192.168.10.21),此时 VS Code 的操作均基于远程主机;

四、文件夹共享设置

1. Windows 端共享文件夹设置

1)在 Windows 中选中需要共享的文件夹(如 D:\Qt\share),右键 → 属性 → 共享 选项卡;

2)点击 高级共享,勾选 共享此文件夹,设置 共享名(如 Share,后续挂载会用到);

3)点击 权限,确保当前 Windows 用户拥有 读取 / 写入 权限(避免挂载后无法修改文件);

2. 配置共享文件夹,如下图所示
3. VMware 虚拟机安装 VMware Tools

1)在 VMware 菜单栏点击 虚拟机 → 安装 VMware Tools。

2)Ubuntu 会自动挂载光驱,进入光驱目录(如 /media/$USER/VMware Tools)

3)把 VMwareTools-*.tar.gz 拷贝到有权限操作的目录(如 /home)

4)添加可操作权限 sudo chmod +x VM(Tab 键即可显示全名)

5)解压缩:tar -xvf VM(Tab 键),便会自动解压生成 vmware-tools-distrib 文件夹到当前目录

6)进入解压缩后的文件夹中:cd vm(Tab 键)

7)运行安装:sudo ./vm(Tab 键)

8)当出现[yes]或[no]时,只需要输 入 y 并回车即可,其余情况直接回车

9)安装完成后重启 Ubuntu

4. 手动挂载(重启虚拟机会失效。。。)

挂载目录默认是 /mnt/hgfs/[共享名]

若 /mnt/hgfs 不存在,需要手动创建并挂载
sudo mkdir -p /mnt/hgfs
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

5. 设置开机自动挂载

1)先备份原文件(防止配置错误):sudo cp /etc/fstab /etc/fstab.bak

2)编辑 fstab 文件:sudo nano /etc/fstab

3)在文件末尾添加以下内容(直接复制即可):.host:/ /mnt/hgfs fuse.vmhgfs-fuse defaults,allow_other 0 0

4)挂载测试:sudo mount -a

5)开机验证共享文件夹是否失效

6)cd /mnt/hgfs 即可看到共享的文件夹,在共享目录下按 ctrl + D 可以收藏文件夹路径用来快速访问

五、编译代码

1. 命令行编译代码

1)进入项目根目录:cd /mnt/hgfs/Share/xdual

2)创建 build 目录并进入:mkdir -p build && cd build

3)配置 CMake 生成 Makefile:cmake ..

4)编译项目:make -j4

2. vs code 里编译代码

1)选择 CMake: Select a Kit 自动创建 build 文件夹,生成 Makefile 文件

2)选择 CMake: Build 自动调用 make 命令编译 Makefile,编译过程的日志会显示在「输出」面板中

相关推荐
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
盟接之桥2 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿3 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘3 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
Fcy6484 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满4 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠4 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio4 小时前
rk芯片驱动编写
linux·学习
mango_mangojuice4 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
Harvey9034 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s