【问题标题】:Should I add whole library to my project in c++我应该在 C++ 中将整个库添加到我的项目中吗
【发布时间】:2020-08-29 12:28:45
【问题描述】:

我对 C++ 很陌生。目前我正在处理涉及项目的 ONNX 并且我有一个问题,如果我必须使我的应用程序可移植(假设将使用它的人没有在他们的机器上安装 onnx)我是否必须安装整个库我的 项目文件夹还是我应该怎么做?

感谢您的帮助

【问题讨论】:

  • 我不知道 ONNX 是什么,但通常情况下,您使用的任何框架都会提供用于部署的运行时库。在某些情况下,他们甚至可能会为您提供预先安装了依赖项的 docker 映像,您可以将应用程序复制到其中并且应该是完全可移植的。
  • 另一种选择是静态链接到您使用的所有内容,这降低了对客户端计算机的要求,基本上您最终会得到一个不需要特定安装/部署文件夹即可运行的单个 exe。
  • @YannTM 抱歉这个愚蠢的问题,但这是我第一次使用这项技术,但我是否可以静态链接库,以便使用我的应用程序的人不需要安装特定的库在他们的机器上?如果是这样,你会这么好,链接这么好?

标签: c++ cmake static-libraries


【解决方案1】:

因此,一种选择是静态链接所有库,因此使用该应用程序的人不需要在他们的机器上安装特定库

查看此问答:

Compiling a static executable with CMake

我建议在这些库可用的地方设置 CI 机器(或者更好的是使用可重现的安装脚本/容器配置)(是的,这代表需要为您设置一些工作),然后提供将这台机器上的静态链接二进制文件提供给您的客户(所以对他们来说没有麻烦)。

您会在线阅读有关静态链接二进制文件的潜在兼容性问题以及有关 exe 大小的投诉(有些人认为 -static 是邪恶的),但老实说,这种方法对客户端配置的压力可能最小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 2022-01-14
    • 2013-04-14
    相关资源
    最近更新 更多