在Linux上管理共享库的常用方法是什么?

时间:2012-05-30 08:24:05

标签: c++ c linux open-source shared-libraries

例如,我需要生成一个共享库libXXX.so。

  1. 生成它的常用方法是什么?只使用-fPIC -shared?

  2. 我是否需要创建此库的软链接?我的意思是使用ln -s。

  3. 如果我更新共享库,即如何。从libXXX.so.1.2.3到libXXX.so.1.2.4,我的项目如何知道共享库已更新?我是否需要重新编译整个项目?

  4. 在Makefile中管理共享库的常用方法是什么?

  5. 我完全不明白这些问题。请帮我一个忙: - )

1 个答案:

答案 0 :(得分:2)

您提出问题的主题很多。您的大多数问题都取决于您的环境,以及是否创建软链接取决于您保留库的文件夹以及可能需要访问它的过程等。

请查看link&这个link也提供了有关创建和使用共享库的详细说明。

您的问题的一些简短答案:

  

生成它的常用方法是什么?只使用-fPIC -shared?

使用的选项取决于编译器。 fPIC有助于生成与位置无关的代码,并且共享使库成为共享库。但是,除此之外,还有一些选项可以只显示您决定从库中导出的符号以及在库的全局符号之间创建强连接的选项(-symbolic)等。

  

我是否需要创建此库的软链接?我的意思是使用ln -s。

正如我上面提到的,这取决于您决定放置图书馆的位置。常见的机制是将您的库保存在您选择的某个文件夹中,并在通常“已知”或可访问的文件夹(如/ usr / lib等)中创建指向它的链接。

  

如果我更新共享库,即如何。从libXXX.so.1.2.3到   libXXX.so.1.2.4,我的项目如何知道共享库   更新?我是否需要重新编译整个项目?

共享库的一个主要优点是您可以更新最新版本,而无需重新编译整个代码。再次实现这一点取决于平台&编译器。

  

在Makefile中管理共享库的常用方法是什么?

Google提供了无数链接,我的链接也提供了一些基本细节。