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

相关推荐
stella·2 小时前
服务器割接,我所学习到的内容。
linux·运维·服务器·学习·shell·割接
胡萝卜3.02 小时前
Linux包管理器:高效安装软件的秘诀
linux·运维·服务器·人工智能·linux包管理·yum教程·apt入门
I · T · LUCKYBOOM2 小时前
iptables 防火墙(二)
linux·运维·服务器·网络·安全·centos
带鱼吃猫2 小时前
Linux 守护进程:会话、终端与后台运行的底层逻辑
linux·运维·服务器
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [fs]iomap
linux·笔记·学习
两拆2 小时前
Linux(redhat7.9)安装KVM虚拟机
linux
Alex Cafu2 小时前
Linux网络编程2(HTTP 协议、IO 多路复用)
linux·c语言·网络·http
yBmZlQzJ2 小时前
第二篇:Linux服务器性能优化实战技巧(提升稳定性与效率)
linux·服务器·性能优化
QT 小鲜肉2 小时前
【Linux命令大全】001.文件管理之mlabel命令(实操篇)
linux·运维·服务器·前端·笔记