我正在尝试编译第 3 方库(在 linux 上)并看到它正在生成 libsomething.a 文件我有我的其他库是 .so 文件
但似乎 .a 也是共享库,可以像 .so 库一样使用
那么这两者有什么区别吗?或者它们只是相同的不同命名约定。
我正在尝试编译第 3 方库(在 linux 上)并看到它正在生成 libsomething.a 文件我有我的其他库是 .so 文件
但似乎 .a 也是共享库,可以像 .so 库一样使用
那么这两者有什么区别吗?或者它们只是相同的不同命名约定。
文件.a
是静态库,而.so
文件是类似于Windows 上的共享对象动态库。DLL
可以 在编译期间作为程序的一部分.a
包含在程序中,并且可以在加载程序时导入。.so
但似乎 .a 也是共享库
不,它是一个静态库。
并且可以像 .so lib 一样使用
如果你的意思是链接到它,那么是的。但是你不能 dlopen() 一个 .a 文件,你可以用一个 .so 文件来做。
您可以随时请我们的老朋友G叔为您解答。
当您链接到 时*.a
,库中的代码包含在可执行文件本身中,并且可执行文件可以在不需要*.a
文件存在的情况下运行。当您链接到*.so
时,情况并非如此,并且该*.so
文件必须在运行时存在。