繁体   English   中英

共享对象和 dll 之间的区别

[英]Difference between a shared object and a dll

我有一个库,它在编译时正在构建一个名为 libEXAMPLE.so(在 so.le 文件夹中)的共享对象,以及一个名为 EXAMPLE.so 的 dll(在 dll 文件夹中)。 这两个共享对象的大小非常相似,看起来完全相同。 在互联网上搜索显示,程序使用 dll 进行符号解析的方式与使用共享对象的方式可能存在差异。

你们能帮我理解这个吗?

“DLL”是 Windows 喜欢如何命名它们的动态库

“SO”是 linux 喜欢如何命名他们的动态库

两者都有相同的目的:动态加载。

Windows 使用 PE 二进制格式,Linux 使用 ELF。

体育: http : //en.wikipedia.org/wiki/Portable_Executable

精灵: http : //en.wikipedia.org/wiki/Executable_and_Linkable_Format

我想是一个 Linux 操作系统。

在 Linux 中,静态库(.a,也称为档案)用于编译时的链接,而共享对象 (.so) 用于加载时和运行时的链接。

在您的情况下,似乎出于某种原因,即使这两个文件完全相同,库也会区分加载时链接(libEXAMPLE.so)和运行时链接(EXAMPLE.so)的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM