可共享和不可共享库之间的区别用于链接

时间:2014-02-17 06:00:25

标签: compiler-construction linker configure

目前我正在群集上安装MPICH。对于configure,有一个参数--enable-shared,“以便在构建MPICH时创建共享库”(installation manual,第9页)。这只是作为例子,我的问题是MPICH不可知:“可共享”和“不可共享”库之间有区别吗?

到目前为止,我认为只有不同的方法来集成库(静态,动态,后期链接),但是

  • 还有不同的库类型吗?
  • 如果是,有什么不同,特别是技术差异?不可共享的库是否编译得不同或功能较少?
  • 如果不是,那么MPICH安装手册条目是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

“可共享”和“不可共享”库之间是否有区别

是:共享库可以在使用它们的不同可执行文件之间共享。

归档库(与共享相反),只能在使用同一可执行文件的多个实例时共享,但不能在不同的可执行文件之间共享。

编辑:

  

使用可共享库是否有缺点

有几个:

  • 调用共享库,以及库中的调用和全局数据访问速度稍慢(通常为1-2%,但在极端情况下可能为10%)。有mitigation techniques,但它们并非无足轻重。
  • 使用共享库要求您将主要可执行文件所需的所有共享库(以及这些共享库的正确版本)发送到目标系统 。一旦库的数量接近100,这可能会成为一个重大问题。
  • 当您的开发系统上的共享库版本与您的生产/集群/客户系统上的版本不匹配时,使用共享库会打开“DLL hell”的大门以及各种奇怪的错误。