小编Sal*_*alo的帖子

C++应用程序 - 我应该为库使用静态或动态链接吗?

我将开始一个新的C++项目,该项目将依赖于一系列库,包括部分Boost库,log4cxx或google日志库 - 并且随着项目的发展,其他项目(我还没有预料到) .

它必须在32位和64位系统上运行,很可能是在一个非常多样化的Linux环境中,我不希望所有必需的库都可​​用,也不需要su权限.

我的问题是,我应该通过动态或静态链接到所有这些库来构建我的应用程序吗?

笔记:

(1)我知道静态链接在开发过程中可能会很痛苦(编译时间较长,32位和64位交叉编译,依赖链包含所有库等),但在测试过程中更容易 - 只需移动文件即可运行.

(2)另一方面,动态链接接缝在开发阶段更容易 - 编译时间短(不知道如何处理来自我的32位开发环境的64位库的动态链接),没有依赖链的喧嚣.另一方面,新版本的部署可能很难看 - 特别是在需要新库时(参见上述条件,目标机器上没有su权限,也没有这些库可用).

(3)我已阅读有关此主题的相关问题,但无法确定哪种方法最适合我的方案.

结论:

  1. 谢谢大家的意见!
  2. 我可能会使用静态链接,因为:
    • 部署更容易
    • 在perf期间可预测的性能和更一致的结果.测试(见本文:http://www.inf.usi.ch/faculty/hauswirth/publications/CU-CS-1042-08.pdf)
    • 正如所指出的,静态与动态编译的大小和持续时间似乎并没有那么大的差异
    • 更简单,更快速的测试周期
    • 我可以保留所有的开发.循环我的开发.机

c++ boost cross-compiling dynamic-linking static-linking

13
推荐指数
1
解决办法
4372
查看次数