dll – 加载时间动态链接和运行时动态链接之间的区别
发布时间:2020-12-13 20:13:52 所属栏目:Windows 来源:网络整理
导读:将程序加载到内存中时,加载时动态链接和运行时动态链接有什么区别? 加载时间链接是指当操作系统将可执行文件/库加载到内存时,由可执行文件(或另一个库)引用的库中的符号被处理. 运行时链接是指当您使用操作系统提供的API或通过库在需要时加载DLL或DSO,然后
将程序加载到内存中时,加载时动态链接和运行时动态链接有什么区别?
加载时间链接是指当操作系统将可执行文件/库加载到内存时,由可执行文件(或另一个库)引用的库中的符号被处理.
运行时链接是指当您使用操作系统提供的API或通过库在需要时加载DLL或DSO,然后执行符号解析. 我比Windows DLL更了解Linux DSO,但原则应该是一样的. .NET库可能不同. 在linux中,插件架构是这样完成的.您的程序将使用运行时链接加载库并调用某些功能.然后可能卸载它.它还允许导出加载相同符号的多个库,而不会发生冲突.我认为DLL将以相同的方式工作. 可执行文件在其符号表中具有需要由某个库填充的“空格”.这些空格通常是在加载时或编译时填写的.您可以通过使用运行时链接来否定符号表中“空格”的需要. 运行时链接有用的另一个场景是调试库,或者在运行时从多个ABI / API兼容的库中进行选择.我经常有一个图书馆,说“foo”和一个叫“foo_unstable”,并有一个测试应用程序在2之间切换并进行一些测试. 在linux下,要查看可执行程序链接到哪个库,请执行ldd命令并获取输出(on / 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 操作系统将尝试在加载时加载库(.so文件).它可能已经有内存库. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
- 是否可以通过ssh进入Windows(通过cygwin sshd)并
- 如何从Windows上的Ruby运行非ASCII / Unicode sh
- 如何在Windows上的MySQL上运行innodb_force_reco
- winapi – Windows API提取zip文件?
- powershell – 不能在New-MoveRequest中使用UPN凭
- 在Windows上为Ant设置Java路径
- 在wix中注册com dll
- windows-server-2008 – Windows Server R2中的最
- 是否存在适用于Windows的seccomp模拟
- window下redis的安装和创建redis启动服务
热点阅读