我正在尝试编译第三方库(在linux上)并看到它正在生成libsomething.a文件我有其他库.so文件
但似乎即使.a是共享库,也可以像.so lib一样使用
两者之间有什么区别吗?或者它们的命名惯例不同。
答案 0 :(得分:24)
.a
文件是静态库,而.so
文件是共享对象动态库,类似于{{1}在Windows上。
编译期间,DLL
可以包含作为程序的部分。 程序加载时可以导入 {/ 1}。
答案 1 :(得分:18)
但看起来甚至.a都是共享库
不,这是一个静态库。
并且可以像.so lib一样使用
如果你的意思是链接到它,那么是的。但你不能dlopen()你可以用.so文件做的.a文件。
您可以随时要求我们的老朋友Uncle G回答您的问题。
答案 2 :(得分:15)
当你链接到*.a
时,库中的代码包含在可执行文件本身中,并且可以运行可执行文件而不需要*.a
文件。当您链接到*.so
时,情况并非如此,并且*.so
文件必须在运行时出现。