提升库类型

时间:2017-01-23 13:31:46

标签: c++ boost

我理解仅限标头库,动态链接库(.so文件,这意味着共享对象)和静态库(.a之类的存档)之间的区别。

无论如何,我完全不了解:为什么必须预先编译和动态链接的Boost库(.so文件),以及只能与其标题一起使用的库?需要动态链接的原因是什么?请尽可能详细和详细。 :)

此致 泽索特

1 个答案:

答案 0 :(得分:1)

在很大程度上,它是一种优化。以下是您将至少部分库代码放入单独构建的库文件(例如共享对象)而不是仅使用标题的一些原因:

  1. 您可能需要一个需要存储在某处的全局变量 - 最简单的放置位置是您自己的编译对象。
  2. 您图书馆的客户需要通过"外部功能界面" (FFI)通常基于dlopen(),因此需要编译代码而不是标题(许多FFI无法读取)。
  3. 您的代码大小很重要,可能包含一个或多个大型函数。仅编译一次通常可以节省编译时间和可执行文件大小。
  4. 您希望发送在源格式中不可见的代码,例如扼杀逆向工程或彻底窃取您的代码。