Skip to content

Latest commit

 

History

History
13 lines (11 loc) · 1.26 KB

动态链接和静态链接的区别.md

File metadata and controls

13 lines (11 loc) · 1.26 KB

主要区别在于链接到程序的时间方式

  1. 静态链接:
    • 在编译期间,静态库的代码就被包含进了目标可执行文件中,之后即使没有静态库文件,也能正常运行。
    • 生成的可执行文件较大,因为它包含了所有需要的库函数。
    • 更改静态库的功能或修复错误需要重新编译应用程序,分发新版本的可执行文件。
  2. 动态链接:
    • 动态链接是在运行时完成的,也就是说,在编译阶段并不会把库文件的代码加入到可执行文件,而只是添加一些引用信息。在程序执行时,由操作系统负责将动态库加载到内存中供程序使用。
    • 可执行文件较小,因为它仅仅包含对动态库的引用,而非实际的代码。
    • 如果多个应用程序都使用相同的库,那么这个库只需要在内存中保留一份即可,节约了系统资源。
    • 当动态库更新时,不需要重新编译和链接应用程序,运行程序时自然会调用新版本的库。

每种链接方式都有其利弊。静态链接产生的程序更独立,但可能导致二进制文件很大;动态链接可以共享库提高效率,但如果相关的库不在系统上,那么程序无法运行。