Skip to content

Latest commit

 

History

History
29 lines (18 loc) · 1.78 KB

C++中动态链接库和静态连接库的区别是什么?.md

File metadata and controls

29 lines (18 loc) · 1.78 KB

1. 链接时期

  • 静态链接库:在程序编译时,静态库的内容会被复制到最终的可执行文件中。当你运行程序时,不需要库文件,因为所有的功能都已经包含在可执行文件里了。
  • 动态链接库:程序在编译时并不复制库中的代码,而是在程序运行时加载库文件。这意味着库文件必须在程序运行时可用。

2. 文件大小

  • 静态链接库通常会导致较大的可执行文件大小,因为所有使用的库代码都被复制进去了。
  • 动态链接库允许可执行文件小一些,因为代码是在运行时才被加载。

3. 内存占用

  • 静态链接库的缺点是如果有多个程序使用相同的库,每个程序都有自己的副本,这将导致内存的浪费。
  • 动态链接库可以由多个正在运行的程序共享,只需在内存中有一个副本即可。

4. 分发和更新

  • 静态链接库使得更新库变得复杂,因为每个应用都有自己的副本,所以每个应用都需要重新编译和分发。
  • 使用动态链接库时,只需替换库文件并且确保API兼容性,所有使用该库的应用程序就可以直接利用新版本的库,无须重新编译。

5. 跨平台兼容性

  • 静态链接库生成的可执行文件更易于在没有安装相应库的不同系统上运行,因为它们包括了所有需要的代码。
  • 对于动态链接库,需要确保目标系统上存在正确版本的库文件。

6. 链接错误和冲突

  • 静态链接库可能会引起版本冲突问题,尤其是当不同的库依赖同一个库但又各自静态链接了不同版本时。
  • 动态链接库可以减少这种冲突,因为同一份库文件被所有依赖它的程序共享。