“模块静态或动态绑定到共享库”是什么意思?

时间:2011-03-27 20:23:20

标签: binding terminology

引自a reply to a post

  

3.然后,调用模块将静态或动态绑定到   共享库。

     

4.一旦您的调用库绑定到共享库,它就可以了   指定它想要绑定到   特别切入点。这是   通常由名字完成,但大多数   平台也提供选项   按索引绑定(更快,更多   如果您的模块发生变化,则会变脆   入口点重新订购。)

     

5.您通常也会声明要在您的电话中呼叫的功能   某个地方的模块,以便您的语言   可以做静态类型检查,知道   调用约定是什么等。

我想知道

  1. 什么是“模块静态或 动态绑定到共享 图书馆“是什么意思?它是什么意思name binding,即...的关联 在某些模块中识别对象 共享中的(代码或数据) 库,或来自某个模块的linking 到共享库?
  2. 我可以找到更像维基百科的地方 按名称和方式绑定的说明 按索引?
  3. 谢谢和问候!

2 个答案:

答案 0 :(得分:3)

动态和静态链接是在现代计算机操作系统中共享库代码的方法。

动态链接在运行时发生。它在启动时交换了一些额外的工作,用于一些不错的功能,例如允许修补/替换库,这反过来可以修复或添加到链接(绑定)到它的应用程序的功能。

静态链接是将库的某些部分复制到可执行文件中的位置。这对于启动更快,有时更便于分发,因为您不必担心收件人是否具有所有共享库。在某些情况下,它还可以节省空间。这对于嵌入式应用程序来说很常见。

http://en.wikipedia.org/wiki/Dynamic-link_library http://en.wikipedia.org/wiki/Static_library

按名称绑定是指将函数,变量和常量从库链接到应用程序,应用程序模块或其他库的过程。基本上,库是代码存档,并且有一个表指向代码在库中的每个编译位,并且链接器使用这些名称来查找所需位的位置。就像电话簿=)

绑定和链接在很多情况下可以互换使用。

以这种方式思考:按名称绑定引用仍然是名称,查找将不得不搜索某种名称空间来解析访问。通过链接将名称转换为地址,通常只是一次,然后不再需要名称。多次访问的链接速度很快。

某些绑定系统可能会实现地址缓存以加快查找速度。一个很好的例子是桌面的ARP缓存,它缓存使用DNS服务器按名称查找的IP地址(巧合的是,最常用的DNS服务器称为“绑定”。)

脚本语言通常通过名称而不是链接来绑定事物,因为在解释语言本身时,执行基于名称的查找的开销并不是很大的惩罚。

答案 1 :(得分:2)

绑定意味着加载和获取共享库的地址。通常,程序将在编译时引用共享库,这称为静态绑定。

动态绑定是指程序在运行时确定共享库的名称并加载它