使用 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,编译过程的日志会显示在「输出」面板中

相关推荐
天才奇男子17 小时前
HAProxy高级功能全解析
linux·运维·服务器·微服务·云原生
学嵌入式的小杨同学17 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
酥暮沐18 小时前
iscsi部署网络存储
linux·网络·存储·iscsi
❀͜͡傀儡师18 小时前
centos 7部署dns服务器
linux·服务器·centos·dns
Dying.Light18 小时前
Linux部署问题
linux·运维·服务器
S190118 小时前
Linux的常用指令
linux·运维·服务器
小义_19 小时前
【RH134知识点问答题】第7章 管理基本存储
linux·运维·服务器
梁洪飞19 小时前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
_运维那些事儿19 小时前
VM环境的CI/CD
linux·运维·网络·阿里云·ci/cd·docker·云计算
Y1rong20 小时前
linux之文件IO
linux