跳转到内容

C++ 编程/编译器/链接器/库/静态库和动态库

来自维基教科书,开放的书籍,为开放的世界

静态库和动态库

[编辑 | 编辑源代码]
Clipboard

待办事项
在这里定义“静态库”和“动态库”以及“静态二进制文件”。


使用静态二进制文件的优势

  • 简化程序分发(更少的文件)。
  • 代码简化(不需要像动态库那样进行版本检查)。
  • 只会编译使用的代码。

使用静态二进制文件的缺点

  • 资源浪费:生成更大的二进制文件,因为库被编译到可执行文件中。浪费内存,因为库不能在进程之间共享(在内存中)(取决于操作系统)。
  • 程序将不会从库中的错误修复或扩展中受益,除非重新编译。
库的二进制/源代码兼容性

如果动态链接到库的早期版本的程序能够继续使用同一库的其他版本运行,则该库被称为二进制兼容。如果程序需要重新编译才能在每个新版本的库上运行,则该库被称为源代码兼容

生成二进制兼容库有利于分发,但程序员维护起来更困难。如果库只是源代码兼容,则静态链接通常被认为是一个更好的解决方案,因为它不会给最终用户带来问题。

二进制兼容性节省了大量的麻烦,并且表明该库已经达到了稳定状态。它使得在特定平台上分发软件变得更容易。如果不确保不同版本之间的二进制兼容性,人们将被迫提供静态链接的二进制文件。

华夏公益教科书