如果函数库的一份拷贝是exe的物理组成部分,则称之为 static link;
如果exe只是包含了file name,让载入器在运行时能够寻找程序需要的函数库,则称之为dynamic link。
收集模块准备执行的三个阶段的规范名称是:link-editing,loading,runtime linking.
static link的模块被链接编辑并载入以便运行;
dynamic link的模块被链接编辑后载入,在运行时链接以便运行。
dynamic link的主要目的是把程序和它们使用的特定函数库版本中分离开。由系统向系统提供接口,该接口保持稳定。不随时间和os的后续版本发生变化。
DLL优点:
1、与功能相同的静态库体积小。因为函数库只在需要时才被映射到进程
2、所有DLL连接到某个特定函数库的exe在运行时共享该函数库的一个单独copy。os内核保证映射到内存的函数库可以被所有使用它们的进程共享。
提供了更好的IO和swap空间利用率。