【问题标题】:What is the difference between dynamic linker and dynamic loader?动态链接器和动态加载器有什么区别?
【发布时间】:2012-04-16 20:57:08
【问题描述】:

我知道动态加载器的作用。它在应用程序在运行时请求时加载程序,从而最大限度地减少内存占用。但我真的不明白这个动态链接器是什么?它的优点是什么?我读了很多网上的东西,但它们都是抽象的。

谁能用一些简单的例子解释一下?

【问题讨论】:

标签: linux linker operating-system loader


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2014-02-08
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2011-05-08
    • 2013-06-19
    相关资源
    最近更新 更多