我已经阅读了很多关于这个主题的消息来源,但仍然坚持一些概念。
- 据我所知,在动态链接中,链接被推迟到运行时,即我们不知道库代码在编译时相对于主源的位置。这有助于实现共享库概念,即,该过程可以使用由某些其他过程使用的库代码。
- 我不明白的是动态加载中发生了什么。这个链接是静态完成的吗?如果它是静态完成的,那么推迟加载直到运行时的目的是什么?这是自动的还是程序员需要干预(进行一些调用以加载库)?
谢谢!
答案 0 :(得分:3)
这是两个不同的概念。我不会详细说明动态链接,你的描述已经足够了。
动态加载意味着可执行代码的某些部分不是在程序启动时加载到内存中,而是在执行期间加载,通常是在需要时加载。代码驻留在一些外部库中。
动态加载的原因可能各不相同,通常它们与资源利用率有关 - 例如,在执行期间最小化RAM使用,最小化程序启动时的加载时间等。
动态加载的使用不受操作系统控制,而是由程序员通过操作系统提供的功能控制。代码驻留在外部库中,主程序根据程序的本机逻辑接口并在某个阶段加载它。