English 中文(简体)
装载时间动态连接和运行时间动态联系之间的差别
原标题:Difference between load-time dynamic linking and run-time dynamic linking

在将方案装入记忆时,负荷运行动态连接和运行时间动态连接之间的区别是什么?

问题回答

装货时间连接是指当操作系统将可执行/图书馆装上记忆时,由可执行(或另一图书馆)参考的图书馆标志处理。

实时连接是指您使用由本组织提供的一份普通照会或通过图书馆在需要时装上一部DLL或DSO,然后执行文号决议。

我比Windows DLLs了解更多关于含水层的多,但这一原则应当相同。 互联网图书馆可能有所不同。

lin花结构就是这样做的。 你们的方案将使用与装设图书馆有关的操作时间,并指定一些职能。 然后可能卸下。 它还允许具有相同出口标志的多个图书馆在不发生冲突的情况下装载。 我认为,DLLs将以同样的方式开展工作。

可在需要一些图书馆填写的符号表中拥有“空白空间”。 这些空白空间通常在装货时填满,或汇编时间。 您可以通过使用实时连接来否定在文号表中需要“空白空间”。

运行时间连接的另一种情况是,在运行时间将图书馆分散,或从多个图书馆选取。 我常常有一个图书馆,即“foo”和“foo_unstable”,并有一个测试仪,即从2月到进行一些测试。

了解哪些图书馆在装货时有可执行的联系,则由您管理<编码>ldd的指挥,并取得(关于/bin/ls的)产出:

linux-vdso.so.1 =>  (0x00007fff139ff000)
librt.so.1 => /lib64/librt.so.1 (0x0000003c4f200000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003c4fa00000)
libcap.so.2 => /lib64/libcap.so.2 (0x0000003c53a00000)
libacl.so.1 => /lib64/libacl.so.1 (0x0000003c58e0000

操作系统将试图在装货时装上图书馆(即文件)。 它可能已经拥有图书馆。

Aiden Bell涵盖了基本内容,但我补充说:

定期动态链接通常通过静态地将您的申请与<代码>.lib或.a文档链接完成,该文档载有自动确定与文号的操作时间链接的代码,这些编号将载于.dll.so。 通常用于固定功能(即C跑道图书馆等),并允许贵方方案从图书馆的装饰中获得好处,同时保持可执行的规模较小(将共同编码纳入一个图书馆)。

运行时间连接被用于增强功能功能,如假装。 正如艾森所说,你使用<代码>LoadLibrary()或等值,在日常工作中积极附上模块,或许可以相互浏览含有假冒的DLs的目录,然后装上每个目录,然后用本土的纸张标本与之交谈。 通过这样做,你的方案能够装上即便在编辑/链接时也不存在的模块,从而在部署后能够有机地增长。

基本上,这两种方法最终都援引了LoadLibrary( > API,但使用一套固定的标志和图书馆处理前一种情况,而后者则更具有活力。

在负荷运行中,可执行的联系与达格·哈马舍尔德图书馆连接,而在无可起诉的实时动态联系中,则与任何DLL链接。

如果申请的启动业绩很重要,则动态连接更为可取。

过早地优化了<代码>GetProcAddress() ,从DLLL的开始便设定了固定的抵消。 较早的应诉人不能与违反国际交易日志开放原则的较新的DLLs合作;新的可起诉人不能与较老的DLLs合作,因为被抵消的职能可能有所不同,从而违反了国际交易日志的近似原则。 当你违反SOLID时,你会获得DL-HELL。

开放时间不能过早优化<代码>GetProcAddress()电话。 较老的迫害者可以与新的DLLs公司合作,但不能使用遵守SOLID的近似原则的新职能;新的迫害者可以与年龄较大的DLLs合作,但不能使用遵守SOLID近似原则的新职能。 将使用较老的迫害者与较年长的DLLs进行比较,并利用较新的迫害者DLLs,就是遵守国际流离失所问题开放原则。

定向方案拟订。 如果没有<代码>Liskov Substitution Principle,在这种情形下,新的DLLL不能以较年长的可执行性加以利用,或者不能用较老的DLL加以执行。 较新的版本是:inheritance,不论这些版本是可执行的还是可执行的。





相关问题
What resources are shared between threads?

Recently, I have been asked a question in an interview what s the difference between a process and a thread. Really, I did not know the answer. I thought for a minute and gave a very weird answer. ...

Random access of multiple files and file caching

This relates to some software I ve been given to "fix". The easiest and quickest solution would make it open and read 10 random files out of hundreds and extract some very short strings for processing ...

What form is DLL & what makes it processor dependent

I know DLL contains one or more exported functions that are compiled, linked, and stored separately.. My question is about not about how to create it.. but it is all about in what form it is stored.. ...

Thread behavior on multicore machines

Does the threads of a single process run in parallel on a multi-core machine on windows XP? Is the behavior same on different windows versions (windows server editions) I have heard that only threads ...

How to check which Operating System?

How can I check OS version in a batch file or through a vbs in an Windows 2k/2k3 environment ? You know ... Something like ... : "If winver Win2k then ... or if winver Win2k3 then ....

热门标签