跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris Studio 12.3:C++ 用户指南 Oracle Solaris Studio 12.3 Information Library (简体中文) |
库具有两点好处。首先,它们提供了在多个应用程序间共享代码的方法。如果您有要共享的代码,则可以创建一个具有该代码的库,并将该库链接到需要这些代码的应用程序。其次,库提供了降低大型应用程序复杂性的方法。这类应用程序可以将相对独立的部分生成为库并进行维护,因此减轻程序员在其他部分工作的负担。
生成库只不过是创建 .o 文件(使用 -c 选项编译代码)并使用 CC 命令将 .o 文件并入库中。可以生成两种库:静态(归档)库和动态(共享)库。
对于静态(归档)库,库中的对象在链接时链接到程序的可执行文件中。只有库中属于应用程序所需的那些 .o 文件链接到可执行文件。静态(归档)库名称通常以 .a 后缀结尾。
对于动态(共享)库,库中的对象并不链接到程序的可执行文件,而是由链接程序在可执行文件中注明程序依赖于该库。执行该程序时,系统会装入程序所需的动态库。如果使用同一动态库的两个程序同时执行,那么操作系统在程序间共享这个动态库。动态(共享)库的名称以 .so 后缀结尾。
动态链接共享库较静态链接归档库有多个优势:
可执行文件较小。
在运行时,代码的有效部分可在程序间共享,这样就可以降低内存使用量。
库可以在运行时替换,无需重新链接应用程序。(这是用于使程序能够利用 Oracle Solaris 操作系统中的多项改进的主要机制,有了此机制,无需重新链接和分发程序。)
但动态库也具有一些缺点: