我有一个库,在编译时会生成一个名为libEXAMPLE.so的共享对象(在so.le文件夹中),以及一个名为EXAMPLE.so的动态链接库(在dll文件夹中)。这两个共享对象的大小非常相似,看起来完全是同一件事。搜索互联网发现,程序使用dll进行符号解析的方式与使用共享对象的方式可能存在差异。
你们能帮我理解这个问题吗?
你们能帮我理解这个问题吗?
我想使用Linux操作系统。
在Linux中,静态库(.a,也称为存档)用于编译时链接,而共享对象(.so)既用于加载时链接又用于运行时链接。
在您的情况下,似乎由于某种原因,库将文件区分为加载时链接(libEXAMPLE.so)和运行时链接(EXAMPLE.so),即使这两个文件完全相同。
ld.so
处理,并且可以通过API函数(如dlopen
)进行操作。我在任何文档中都没有看到共享对象和动态链接库之间的区别。 - Rookdlopen()
只是用于加载共享库的符合POSIX标准的接口。它并不指定底层操作系统使用的格式。 - πάντα ῥεῖ