8

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

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

  2. 我需要创建到这个库的软链接吗?我的意思是使用 ln -s。

  3. 如果我更新共享库怎么办,即。从libXXX.so.1.2.3到libXXX.so.1.2.4,我的项目怎么知道共享库更新了?我需要重新编译整个项目吗?

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

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

4

1 回答 1

2

您提出问题的主题非常广泛。您的大多数问题取决于您的环境以及是否创建软链接取决于您将库保存在哪个文件夹中以及哪些进程可能需要访问它等。

请查看此链接和此链接,其中提供了有关创建和使用共享库的详细说明。

对您的问题的一些简短回答:

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

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

我需要创建到这个库的软链接吗?我的意思是使用 ln -s。

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

如果我更新共享库怎么办,即。从libXXX.so.1.2.3到libXXX.so.1.2.4,我的项目怎么知道共享库更新了?我需要重新编译整个项目吗?

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

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

谷歌中有无数的链接,我的链接也提供了一些基本的细节。

于 2012-05-30T08:35:24.937 回答