什么是object library

object library是多个object files合成的一个object file,可以被多个executable file方便 地使用。

我们知道,一种生成executable file的方式是,先根据source files生成相应的object files, 然后将生成的object fileslinker链接起来,最后生成可运行的executable file,就像这样:

$ cc -g -c prog.c mod1.c mod2.c mod3.c

$ cc -g -o prog_nolib prog.o mod1.o mod2.o mod3.o

但是呢,有很多时候,我们或许会有一些source files被不止一个executable file用到。在这种 情况下,我们可以首先将source files生成相应的object files,然后,再将生成的object files 按需链接起来,生成不同的executable files。这样虽然节省了我们编译时间,但是又造成了另一个 问题,那就是我们仍然需要在链接阶段一个一个地列出object file的名字,而且我们在自己的机器上 会充满大量的object files

因此为了解决这个问题,我们可以将多个object files打包成一个unit,这个unit就叫做 object library

object library分为两种,static libraryshared library。 其中shared library更加先进,而且相较于出现较早的static library,有很多优势。

:以上内容基本相当于对“《The Linux Programming Interface》Chapter 41: Fundamentals of Shared Libraries 41.1 Object Libraries” 的翻译,更加具体详细的内容,请看原版。

以上。