【发布时间】:2012-04-16 20:57:08
【问题描述】:
我知道动态加载器的作用。它在应用程序在运行时请求时加载程序,从而最大限度地减少内存占用。但我真的不明白这个动态链接器是什么?它的优点是什么?我读了很多网上的东西,但它们都是抽象的。
谁能用一些简单的例子解释一下?
【问题讨论】:
标签: linux linker operating-system loader
我知道动态加载器的作用。它在应用程序在运行时请求时加载程序,从而最大限度地减少内存占用。但我真的不明白这个动态链接器是什么?它的优点是什么?我读了很多网上的东西,但它们都是抽象的。
谁能用一些简单的例子解释一下?
【问题讨论】:
标签: linux linker operating-system loader
它们实际上是同一事物的两个术语。
在 Unix 世界中,术语动态链接器用于表示在运行时链接动态库的操作系统组件,而大多数其他系统上的加载器既可以加载程序,也可以链接动态库。
因为在类 Unix 系统下加载库是由一个单独的组件完成的(ld.so 最常见),所以动态链接器被认为是与程序加载器不同的东西。编译器通常在可执行文件的开头插入一些存根代码以加载ld.so,而ld.so 将在调用main 之前继续加载其余的依赖库。虽然程序加载是在内核空间完成的,但链接动态库通常是在用户空间完成的。
这与 Windows 不同,Windows 中程序加载和链接动态库都是在内核模式下完成的。
【讨论】: