目 录CONTENT

文章目录

静态链接 & 动态链接

TalentQ
2025-09-18 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

静态链接 (Static Linking)

  • 时机:在程序编译/链接期完成。

  • 行为:链接器将程序所有用到的静态库(.a/.lib)中的代码和数据,直接复制到最终的可执行文件中。最终生成的是一个完全自包含的独立文件。

动态链接 (Dynamic Linking)

  • 时机:发生在程序运行时(或系统加载时)。

  • 行为:链接器在编译期只记录程序需要哪些动态库(.so/.dll 以及其中的哪些符号(函数、变量)。当程序运行时,操作系统的动态链接器负责找到所需的库并将其加载到内存中,再进行地址重定位,完成最终的链接。

优缺点

静态链接的优缺点

优点:

  1. 部署简单:程序是一个独立的整体,不存在依赖问题。

  2. 性能稳定:无运行时加载开销,函数调用性能确定。

缺点:

  1. 浪费空间:磁盘和内存空间都有浪费。

  2. 更新困难:库更新后,所有使用它的程序都必须重新编译和分发。

动态链接的优缺点

优点:

  1. 节省空间:磁盘和内存空间利用率高。

  2. 更新灵活:库可以独立更新,便于bug修复和安全漏洞修补。

  3. 便于模块化:支持插件系统,程序可以在运行时动态加载功能模块。

缺点:

  1. 依赖管理复杂:如果库版本不兼容或丢失,会导致程序无法运行。

  2. 轻微性能损耗:有运行时加载和链接的开销。

0

评论区