计算机

动态链接库

动态链接库,在 Windows 上为 dll 文件,在 Linux 上为 so 文件,是一个二进制文件,包含可以被多个程序共享和动态调用的代码和数据。

链接

静态链接

静态链接(Static Linking)是将所有需要的目标文件和库文件在编译时就嵌入到最终的可执行文件中。

平常使用 g++ 进行编译时,默认就采用了静态链接。

  • 优点:
    • 不依赖外部库文件,执行文件可以独立运行。
    • 运行时不需要查找和加载库文件。
  • 缺点:
    • 可执行文件体积较大,因为所有库代码都包含在内。
    • 更新库文件需要重新编译整个程序。

动态链接

动态链接(Dynamic Linking)是在运行时将库文件加载到内存中,并链接到可执行文件。这种库文件称为动态链接库(在 Unix/Linux 中为 .so 文件,在 Windows 中为 .dll 文件)。

动态链接库的优势包括:

  1. 代码重用:多个程序可以共享相同的库,而不需要在每个程序中都包含相同的代码。
  2. 节省内存:由于多个程序共享同一个库,内存使用更少。
  3. 更新方便:可以独立于程序更新库,而不需要重新编译和部署整个应用程序。

使用动态链接方法编译的文件,在运行时需要确保链接器能找到动态链接库,否则程序会报错。可以通过设置环境变量 LD_LIBRARY_PATH 来指定库文件的路径。

BEYOND THE ARTICLE

读完了,有什么想法?

阅读已保存的问答示例,并循着引用回到原文。

查看公开问答示例
— 本文完 — 返回文章列表