Operating system 动态链接与动态加载的区别

Operating system 动态链接与动态加载的区别,operating-system,dynamic-linking,dynamic-loading,Operating System,Dynamic Linking,Dynamic Loading,引用维基百科关于动态加载的内容 动态加载是一种机制,通过这种机制,计算机程序可以在运行时将库加载到内存中。与静态链接和动态链接不同,动态加载允许计算机程序在没有这些库的情况下启动 因此,如果我错了,请纠正我,但是在动态加载中,库是通过加载库函数显式加载的 而在动态链接中,加载和链接可执行文件所需的共享库被推迟到运行时,操作系统 负责将库的内容从持久存储复制到RAM 你能用简单的话解释一下动态链接和动态加载之间的区别吗?我还是很困惑 提前感谢 你似乎对术语很感兴趣。“动态链接”一词对于实际发生的事

引用维基百科关于动态加载的内容

动态加载是一种机制,通过这种机制,计算机程序可以在运行时将库加载到内存中。与静态链接和动态链接不同,动态加载允许计算机程序在没有这些库的情况下启动

因此,如果我错了,请纠正我,但是在动态加载中,库是通过加载库函数显式加载的

而在动态链接中,加载和链接可执行文件所需的共享库被推迟到运行时,操作系统 负责将库的内容从持久存储复制到RAM

你能用简单的话解释一下动态链接和动态加载之间的区别吗?我还是很困惑


提前感谢

你似乎对术语很感兴趣。“动态链接”一词对于实际发生的事情来说是一个用词不当的词

链接器通常处理三种类型的文件:

  • 对象文件
  • 对象库
  • 共享库
  • 对象库只是一个包含可以从中提取的其他对象文件的文件,因此我将忽略该选项

    对象文件包含文件定义的全局符号表和文件引用的全局符号表。链接器将文件中的引用“链接”到另一个文件中的定义。它将链接文件的代码和数据内容添加到可执行文件(或共享库)

    共享库包含定义的通用符号表和库引用的通用符号表。链接器将对象文件中的全局符号引用“链接”到共享库文件。链接完成时,可执行文件(或共享库)知道哪个共享库文件包含符号,但不知道符号在哪里

    有时,链接这些共享库的过程称为“动态链接”

    可执行文件有一个全局符号引用表,该表已映射到通用符号共享库

    运行可执行文件时,程序加载器将检查引用的共享库的可执行文件。然后它将(1)加载共享库;(2) 阅读图书馆的通用符号表,并查找参考符号的地址;(3) 修复对可执行文件中那些符号的引用

    因为共享库可以引用其他共享库,所以这是一个递归过程

    有时,在运行时加载引用共享库的程序的过程称为“动态链接”(现在我们有两个相同术语的定义)

    许多操作系统使用相同的系统服务加载共享库,并在共享库中查找通用符号的地址,这些服务可供应用程序使用。在运行时(加载应用程序后),应用程序可以通过(1)加载共享库和(2)定位所需符号来动态访问函数或其他通用符号

    这就是您所说的“动态加载”。

    可能重复的