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

时间:2012-09-06 05:32:47

标签: linux shared-libraries

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

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

两者之间有什么区别吗?或者它们的命名惯例不同。

3 个答案:

答案 0 :(得分:24)

.a文件是静态库,而.so文件是共享对象动态库,类似于{{1}在Windows上。

编译期间,DLL可以包含作为程序的部分。 程序加载时可以导入 {/ 1}。

答案 1 :(得分:18)

  

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

不,这是一个静态库。

  

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

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

您可以随时要求我们的老朋友Uncle G回答您的问题。

答案 2 :(得分:15)

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