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

raj*_*noy 20 linux shared-libraries

我正在尝试编译第三方库(在Linux上)并看到它正在生成libsomething.a文件我有我的其他库是.so文件

但似乎即使.a是共享库,也可以像.so lib一样使用

那两者之间有什么区别吗?或者它们与不同的命名约定相同.

gks*_*gks 26

一个.a文件是一个静态库,而.so文件是一个共享对象动态库类似于DLL在Windows上.

.a罐包括作为部件的一个中的程序汇编&.so进口,而程序加载.


小智 18

但看起来甚至.a都是共享库

不,这是一个静态库.

并且可以像.so lib一样使用

如果你的意思是链接到它,那么是的.但你不能dlopen()你可以用.so文件做的.a文件.

你可以随时问我们的老朋友G叔叔回答你的问题.

  • "Uncle G"的链接被破坏了. (9认同)

Wil*_*ell 15

当您链接时*.a,来自库的代码包含在可执行文件本身中,并且可以运行可执行文件而无需*.a文件存在.当你链接时*.so,情况并非如此,*.so文件必须在运行时出现.

  • 非常内容丰富的回顾。 (2认同)