2012-04-03 75 views
7

我知道什么是动态加载程序。它在应用程序运行时请求加载程序,从而最大限度地减少内存占用量。但我真的不知道这个动态链接器是什么?它的优点是什么?我在网上阅读了很多内容,但他们正在抽象地谈论。动态链接器和动态加载器有什么区别?

任何人都可以解释我有一些简单的例子吗?

+0

http://stackoverflow.com/questions/311882/what-do-statically-linked-and-dynamically-linked-mean/311889#311889 – Vijay 2012-04-03 11:50:03

+0

@peter thanks!它有帮助。 – 2012-04-03 15:21:43

回答

6

对于同样的事情,它们实际上是两个术语。

在Unix世界中,术语动态接头用于表示操作系统,其在运行时链接的动态库的分量,而在大多数其他系统装载机确实都程序加载和链接动态库。

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

这是与Windows,其中两个程序加载和链接动态库在内核模式下进行。

相关问题