动态链接器和动态加载器有什么区别?

时间:2012-04-03 07:57:13

标签: linux linker operating-system loader

我知道动态加载器的作用。它在运行时应用程序请求时加载程序,从而最小化内存占用量。但我真的没有得到这个动态链接器是什么?它的优点是什么?我读了很多网上的东西,但他们用抽象的语言说话。

有人可以用一些简单的例子来解释我吗?

1 个答案:

答案 0 :(得分:6)

它们实际上是同一件事的两个术语。

在Unix世界中,术语动态链接器用于表示在运行时链接动态库的操作系统组件,而大多数其他系统上的加载器都可以加载和链接动态库。

因为在类Unix系统下加载库是由一个单独的组件(最常见的ld.so)完成的,所以动态链接器被认为是与程序加载器不同的东西。编译器通常在可执行文件的开头插入一些存根代码来加载ld.sold.so将在调用main之前继续加载其余的依赖库。程序加载是在内核空间中完成的,链接动态库通常在用户空间中完成。

这与Windows不同,Windows中的程序加载和链接动态库都是在内核模式下完成的。