1 环境准备

1.1 安装使用C++Linux开发的工具集

首先需要在Visual Studio Installer中安装使用C++的linux开发的工具集

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

等待使用C++的Linux开发的工具集安装完成,并重启Visual Studio。

1.2 准备可远程的Linux服务器以及在远程服务器安装远程调试环境

1.2.1 明确Linux服务器的cpu架构

首先需要清楚该服务器的cpu是x_86、x_64还是arm,这在之后的Visual Studio中需要选择编译平台。

1.2.2 配置远程Linux服务器的SSH

配置远程Linux服务器的SSH连接,并可以通过SSH可以连接到远程的Linux机子。

1.2.3 配置远程Linux服务器的编译环境

以我目前使用的Ubuntu为例,我们需要在Linux服务器上安装可进行C++程序编译以及远程调试的包。

在安装包之前,更新apt,

apt update
apt upgrade -y

使用,

sudo apt-get install openssh-server g++ gdb gdbserver -y

安装所需的包,等待包安装完成。

2 在Visual Studio中添加跨平台的SSH连接

打开Visual Studio,菜单栏的工具-选项菜单

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

在选项-跨平台-连接管理器中点击添加按钮,添加上一节中配置的Linux远程服务器的SSH连接,

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

依次填入SSH连接的主机名(ip地址),SSH端口,用户名,以及密码添加远程Linux服务器的链接。

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

3 在Visual Studio中进行Linux C++程序调试和编码

3.1 创建Linux C++ 项目

这里选择控制台应用程序做简要说明

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

填入项目名称以及在Windows系统上项目的存放路径,和平常在Windows上创建C++项目没有很大的区别。

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

3.2 配置解决方案平台

根据远程Linux服务器的cpu架构,选择对应的配置。

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

3.3 选择编译的远程服务器

在第2节中已经介绍了如何为远程Linux服务器添加SSH连接,如果添加成功,会在调试按钮下显示可用的远程调试机器,如下图所示,如果配置了多台远程服务器,可选择合适的机器进行编译。

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

3.4 Linux C++程序编译

默认创建的控制台会在main.cpp中创建以下初始代码,

#include <cstdio>

int main()
{
    printf("%s 向你问好!\n", "LinuxTest");
    return 0;
}

我们可以像在Visual Studio中编译Windows C++程序一样点击生成-生成解决方案编译此Linux平台的C++程序。

编译完成且成功的信息如下:

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

3.5 Linux C++程序运行

我们可以像在Visual Studio中运行Windows C++程序一样运行此Linux平台的C++程序。

按F5运行程序,运行成功的信息如下:

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

从上述信息中,可以看出编译好的程序在远程服务器/home/ascend/projects/LinuxTest文件夹中。

3.6 Linux服务器C++程序编译的项目配置

在Visual Studio中右键Linux C++程序,点击属性,在属性页的常规配置中,我们可以对本地项目配置以及远程Linux服务器的项目配置进行更改。

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

其中:

  • 输出目录:本机的输出文件目录
  • 中间目录:本机的中间文件输出目录
  • 目标文件名:项目将生成的文件名
  • 目标文件扩展名:此项目将生成的文件扩展名
  • 平台工具集:指远程Linux服务器用于生成当前配置的工具,如果远程Linux服务器有GCC、Clang等编译工具,可以进行选择
  • 远程生成计算机:所指定的用于本项目编译的远程Linux服务器
  • 远程根目录:指远程Linux服务器中的所有以此方式编译的项目的根目录,比如上一节中的/home/ascend/projects
  • 远程项目相对目录:指远程Linux服务器中的当前项目的目录,比如上一节中的/home/ascend/projects/LinuxTest
  • 远程中间相对目录:指远程Linux服务器中的当前项目的中间文件目录,比如上一节中的/home/ascend/projects/LinuxTest/obj/ARM64/Debug
  • 远程输出相对目录:指远程Linxu服务器中的当前项目的输出文件目录,比如上一节中的/home/ascend/projects/LinuxTest/bin/ARM64/Debug
  • 远程部署目录:将项目部署到的远程Linux服务计算机上的指定目录

可以根据需要修改上述配置的属性信息。

3.7 Linux服务器C++程序编译的第三方库链接配置

我们还可以在项目属性中配置本项目所需链接的第三方库,不过需要注意的是,所配置的第三方库必须在远程Linux服务器上存在。配置的方法与在Windows C++程序中配置第三库的方法类似,
不过配置的路径必须是Linux上的路径。

3.7.1 配置第三方库的包含目录

在C/C++ - 常规 - 附加包含目录填入第三方库的头文件包含路径

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

3.7.2 配置第三方库的库文件

在链接器-常规-附加库目录中填入第三库所在的文件路径

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

在链接器 - 输入 - 库依赖项填入第三方库的名字,这里需要注意的是,假如库名字为libaddf.so,那么只需要填入addf即可,不需要加lib前缀和so后缀,编译器会自行添加。

Visual Studio – 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序-StubbornHuang Blog

参考链接