Oracle Solaris Studio 12.2:C++ 用户指南

15.1 认识库

库具有两点好处。首先,它们提供了在多个应用程序间共享代码的方法。如果您有要共享的代码,则可以创建一个具有该代码的库,并将该库链接到需要这些代码的应用程序。其次,库提供了降低大型应用程序复杂性的方法。这类应用程序可以将相对独立的部分生成为库并进行维护,因此减轻程序员在其他部分工作的负担。

生成库只不过是创建 .o 文件(使用 -c 选项编译代码)并使用 CC 命令将 .o 文件并入库中。可以生成两种库:静态(归档)库和动态(共享)库。

对于静态(归档)库,库中的对象在链接时链接到程序的可执行文件中。只有库中属于应用程序所需的那些 .o 文件链接到可执行文件。静态(归档)库名称通常以 .a 后缀结尾。

对于动态(共享)库,库中的对象并不链接到程序的可执行文件,而是链接程序在可执行文件中注明程序依赖于库。执行该程序时,系统会装入程序所需的动态库。如果使用同一动态库的两个程序同时执行,那么操作系统在程序间共享这个动态库。动态(共享)库名称以 .so 后缀结尾。

动态链接共享库较静态链接归档库有多个优势:

但动态库也具有一些缺点: