• 【编译部署】使用Visual Studio编译Linux平台程序/动态库(远程连接)


    1. 背景:

    由于日常在 Windows 平台上开发程序,但是项目中涉及到了 Linux 的服务器,所以需要编译 Linux 代码。
    这时候如果把两个平台的代码进行分割,那数据结构等公用部分就无法进行复用,也不便于后期维护,所以如果都在 Windows 平台上进行管理是比较好的选择。
    这时候就会遇到编译问题,如果我们把需要的代码复制到 Linux 机器上进行编译就太麻烦了,而现在 Visual Studio 提供了远程编译的功能,配置完成后编译非常方便。

    2. 使用的环境

    • Windows10,64位操作系统
    • VMware 虚拟机,Ubuntu 20.04.4 LTS
    • Visual Studio 2019

    3. 配置步骤

    3.1 安装 Visual Studio 工具集

    • 打开 Visual Studio 安装文件
    • 勾选“使用C++的Linux开发”
    • 勾选合适的工具
      在这里插入图片描述

    3.2 创建解决方案

    • 选择 C++ 和 Linux 项目
    • 新建一个“控制台应用程序”用于测试
      在这里插入图片描述
      在这里插入图片描述
    • 创建完成后会出现官方的用法简介
      在这里插入图片描述

    3.3 Linux 端准备工作

    • 在虚拟机中的Linux系统内查看IP地址
      在这里插入图片描述
      在这里插入图片描述
    • 在VS中选择“工具——选项”
    • 选到“跨平台”
    • 添加远程连接
    • 主机名是IP地址
    • 端口不变
    • 用户名和密码是Linux系统对应的
      在这里插入图片描述
    • 完成后点击确定
    • 顶部可以看到连接成功
      在这里插入图片描述
      在这里插入图片描述

    3.4 测试编译和运行

    • 点击调试

    • 没有报错即生成成功
      在这里插入图片描述
      在这里插入图片描述

    • 进入Linux系统默认的生成目录

    • 看到生成的文件

    • 进入 terminal 进行运行

    • 可以得到测试结果
      在这里插入图片描述
      在这里插入图片描述

    5. 添加附加包含和附加库

    • 附加包含目录:.h/.hpp头文件位置
    • 这里需要填写远程Linux系统下的绝对路径
      在这里插入图片描述
    • 注意:项目的头文件所处的Linux下的目录一开始我们并不确定
    • 这时候可以直接进行生成,可能会报错,但是不用管
    • 生成一次以后会发现项目的头文件被自动拷贝到了Linux系统下
    • 然后填入Linux下的目录地址
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      第三方库头文件添加:
    • 首先找到所需的头文件所在目录
    • 这里以OpenCV为例,在Linux系统下编译完成后,找到头文件所在目录
    • 把绝对地址写入VS附加包含目录
      在这里插入图片描述
      在这里插入图片描述
      附加库目录:
    • 找到所需要的.so文件在Linux下的绝对地址
    • 填入VS的附加库目录
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      库依赖项:
    • 把“附加库目录”下面,需要的“库依赖项”名称填写到VS
    • 这里名称需要去除前缀“lib”和后缀“.so”
    • 比如这里填写的“opencv_world”
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      ** 编译和测试:**
    • 在代码中 include 所需的头文件
    • 编译成功后,可以在Linux 的生成目录下找到项目生成的.out文件(可执行文件)
      在这里插入图片描述
      在这里插入图片描述
      编译.so动态库:
    • 在VS项目属性中,配置类型改为“动态库”即可
    • 生成成功后,可在Linux端找到该文件
      在这里插入图片描述
      在这里插入图片描述
  • 相关阅读:
    UI插画设计如何提升用户体验优漫动游
    联想曝新型UEFI漏洞,影响70款数百万台笔记本电脑
    Springboot毕设项目环球视野网站92i41(java+VUE+Mybatis+Maven+Mysql)
    jenkins部署springboot项目(超详细讲解)
    java时间日期类
    彻底理解线程
    图数据库Neo4j详解
    JDK中线程池的使用
    文举论金:非农到来!黄金原油全面走势分析策略独家指导
    我在Vscode学OpenCV 图像运算(权重、逻辑运算、掩码、位分解、数字水印)
  • 原文地址:https://blog.csdn.net/qq_42067550/article/details/126542804