共享库(Shared Library)、动态库(Dynamic Library)和静态库(Static Library)是三种不同的库文件,它们在编程中有不同的作用和使用方式。
-
静态库:
- 静态库是一组预编译的对象文件的集合,这些对象文件被打包成一个单独的库文件。它们在编译时被链接到应用程序中。
- 在编译时,静态库的代码会被复制到最终的可执行文件中,使得可执行文件独立于外部的库文件。
- 静态库在每个使用它们的可执行文件中都有一份副本,所以会增加可执行文件的大小。
- 静态库的优点是使用简单,无需考虑依赖关系,适用于小型项目或需要独立部署的情况。
-
动态库:
- 动态库是一组编译好的二进制代码,它们在运行时被动态加载到内存中并与应用程序共享。
- 在编译时,应用程序只需要链接到动态库的接口,而不会将库的代码复制到可执行文件中。
- 动态库在运行时被加载到内存中,多个应用程序可以共享同一个动态库的实例,减少了内存占用。
- 动态库的优点是节省空间,有助于共享代码,允许在运行时更新库文件。
-
共享库:
- 共享库是指动态库的一种形式,也称为共享对象(Shared Object)。
- 共享库和动态库的概念是相同的,都是在运行时动态加载的库文件。
- 共享库的文件扩展名通常为
.so
(在Linux/Unix系统中)或.dll
(在Windows系统中)。 - 共享库允许多个应用程序共享同一个库的实例,并且可以在运行时进行更新和替换。