2014-02-17 45 views
1

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

直到现在我以为只有集成库(静态,动态,后期联)的方式不同,但

  • 在那里也有不同的库类型?
  • 如果是,有什么区别,特别是技术差异?非共享库是不同的编译还是包含较少的功能?
  • 如果否,MPICH安装手册条目是什么?

谢谢!

回答

0

是有“可共享”和“不可共享的”库

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

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

编辑:

是否有使用共享库

的缺点

有以下几种:

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

谢谢你的回答!使用可共享库有什么缺点吗?否则,根本不可共享图书馆的理由是什么? – strauberry

+0

@strauberry我已经更新了答案。 –