linux .so和.a文件有什么区别?

iezvtpos  于 2023-08-03  发布在  Linux
关注(0)|答案(3)|浏览(141)

我正在尝试编译一个第三方库(在Linux上),并看到它正在生成libsomething. a文件,我有我的其他库,这是.so文件
但是看起来即使.a也是共享库,可以像.so lib一样使用
那么,两者之间有什么区别呢?或者它们只是相同的命名约定不同。

fivyi3re

fivyi3re1#

.a文件是 * 静态库 *,而.so文件是 * 共享对象动态库 *,类似于Windows上的DLL
.a可以在 * 编译 * 过程中 * 作为程序的一部分 * 被包括在内。.so可以被 * 导入 *,而 * 程序被加载 *。

xienkqul

xienkqul2#

当您链接到*.a时,库中的代码包含在可执行文件本身中,并且无需*.a文件即可运行该可执行文件。当您链接*.so时,情况并非如此,*.so文件必须在运行时存在。

vc9ivgsu

vc9ivgsu3#

但看起来即使.a也是共享库
不,这是一个静态图书馆。
并且可以像a .so lib一样使用
如果你指的是链接到它,那么是的。但是你不能dlopen()一个.a文件,而你可以用一个.so文件来做。
你可以随时让我们的老朋友Uncle G来回答你的问题。

相关问题