使用 Visual Studio 2019 远程开发 Linux 程序

本文详细介绍了如何使用 Visual Studio 2019 进行远程 Linux 开发,包括安装 VS 2019,配置 Linux 项目,设置 VC++ 目录、附加包含目录、附加库目录和库依赖项,以及添加远程环境和远程系统的 IntelliSense 设置。通过这些步骤,开发者可以在本地 Windows 系统上获得 Linux 程序的代码提示并实现远程编译和调试。

环境

  1. 安装 Visual Studio 2019
  2. 安装有 gcc gdb OpenSSH 的 Linux 远程服务器

安装 VS 2019

安装 VS 2019 时,必须要勾选 "使用 C++ 的 Linux 开发" 工具集


创建 Linux 项目

创建一个类型为 Linux 的 控制台应用程序 的解决方案。

项目配置

若要查看配置选项,请选择 "项目" > "属性" 菜单,或在 "解决方案资源管理器" 中右键单击相应项目,然后从上下文菜单中选择 "属性" 。

VC++ 目录设置

转到 "配置属性" > "VC++ 目录" 然后设置 "包含目录"。

由于本地 Windows 系统并不包含 Linux 系统相应的头文件,因此要在此设置远程 Linux 系统头文件的目录。此项设置不影响编译过程 (因为编译过程在远程 Linux 进行,因此即使本地不含有 Linux 头文件,也不影响在 Linux 上的编译过程),但会影响 VS 的 IntelliSense。(代码提示)

设置此项后,VS 会从远程 Linux 服务器自动下载此项所定义的包含目录内的头文件到本地缓存中,这样在本地编写 Linux 程序时即可使用 VS 提供的代码提示功能。

在 305 的服务器上,此项具体配置为:

/usr/include;/usr/local/include;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/include/x86_64-linux-gnu;

附加包含目录设置

转到 "配置属性" > "C/C++" > "常规" 然后设置 "附加包含目录"。

附加包含目录: 指定要添加到包含路径的一个或多个目录。使用分号来分隔多个目录。 (-I[path])。

这个是远程主机上的路径,相当于 gcc 编译时指定 "-I[路径]" 选项。

如果项目依赖第三方库,则需要将第三方库的头文件目录加入其中。

另外,若需要 VS 对这些目录中的头文件进行代码提示,则需要同时把这些目录添加到之前所述的 "VC++ 目录" 属性中的包含目录中。

附加库目录设置

转到 "配置属性" > "连接器" > "常规" 然后设置 "附加库目录"。

附加库目录: 允许用户重写环境库路径。(-L [文件夹])。

这个是远程主机上的路径,相当于 gcc 编译时指定 "-L[路径]" 选项,用于指定引用动态库和静态库的目录。

如果项目依赖第三方库,则需要将第三方库的库目录加入其中。

库依赖项设置

转到 "配置属性" > "连接器" > "输入" 然后设置 "库依赖项" 和 "附加依赖项"。

库依赖项: 此选项可指定要添加到链接器命令行的附加库。 会将其他库添加到前缀为 "lib" 和结尾扩展名为 ".a" 的链接器命令行的末尾。 (-l[FILE])

相当于 gcc 设置 "-l[库名称]" 选项,用于指定链接时所需要的动态库和静态库名称。如果找不到依赖的库文件,链接时会错误,显示 "无法解析的符号"。

添加依赖库项时,只需要将库文件名的前缀 lib 和后缀 .a / .so 去掉。如 libtcmalloc.so, 去掉lib, .so, 填写 tcmalloc 即可。

附加依赖项: 指定要添加到链接命令行的附加项。

填写附加依赖项的路径和库文件全名。

C++ 语言标准设置

转到 "配置属性" > "C/C++" > "语言" 然后设置 "C++ 语言标准"。

选择合适的 C++ 标准:C++17。

有关更多项目配置属性的信息,请参阅微软官方文档:

Linux 项目属性页参考

添加远程环境

有了远程环境我们才能同步头文件或者进行调试运行。

在第一次编译或调试你的项目时 VS 会自动让你连接远程环境,当然,我们推荐在 "调试" > "选项" > "跨平台" > "连接管理器" 中进行设置:

  1. 在 Visual Studio 中,依次选择菜单栏上的 "工具" > "选项" ,以打开 "选项" 对话框。 然后,依次选择 "跨平台" > "连接管理器" ,以打开 "连接管理器" 对话框。

    如果你以前没有在 Visual Studio 中设置过连接,Visual Studio 会在你首次生成项目时,为你打开 "连接管理器" 对话框。

  2. 在 "连接管理器" 对话框中,选择 "添加" 按钮,以添加新连接。

    在任一场景中,均会显示“连接到远程系统”窗口 。

  3. 输入以下信息:

    表 1 远程连接信息
    条目描述
    主机名目标设备的名称或 IP 地址
    端口运行 SSH 服务的端口,通常为 22
    用户名要进行身份验证的用户
    身份验证类型同时支持密码和私钥
    密码输入的用户名的密码
    私钥文件为 ssh 连接创建的私钥文件
    密码与上面选择的私钥一起使用的密码

登录成功后这个连接就添加完成了。

远程系统上标头的 IntelliSense (代码提示)

管理器下面还有一个远程标头管理器的设置项,用来同步头文件。
在连接管理器中添加新连接时,Visual Studio 会自动为远程系统上的编译器检测包含目录。 随后 Visual Studio 压缩这些文件,并将其复制到本地 Windows 计算机上的目录中。 此后,每当在 Visual Studio 或 CMake 项目中使用该连接时,都会使用这些目录中的标头来提供 IntelliSense。

若要管理标头缓存,导航到 "工具" > "选项",依次选择 "跨平台" > "连接管理器" > "远程标头 IntelliSense 管理器" 。 若要在更改 Linux 计算机后更新标头缓存,请选择远程连接,然后选择 "更新"。 选择 "删除",来删除标头但不删除连接本身。 选择 "浏览",打开 "文件资源管理器" 中的本地目录 。 将此文件夹视为只读文件夹。 要下载在 Visual Studio 2017 版本 15.3 之前创建的现有连接的标头,请选择该连接,然后选择 "下载"。

点击 "更新" 按钮就会开始同步头文件,这些文件会被缓存在本地,因为要从远程一次性复制大量文件,所以可能会花费较长的时间。

这样远程环境就添加好了,可以开始写代码了。

参考

微软官方文档

使用 VS 2019 进行 Linux 远程开发

使用 Visual Studio 2017 开发 Linux 程序

[GDB] 使用 Visual Studio 2017 开发 Linux 程序

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值