so文件、a文件区别与转化

so文件、a文件区别与转化,第1张

so文件是动态库文件,.a 是有一系列 .o 文件通过 ar 程序打包在一起的静态库,要把它清搭郑转成动态库只需先解开,生成一堆 .o 文件,再通过编译器(比如 gcc 或 ifort,视具体情况而定)编枝凳成动态答颂库即可。

ar -x libtest.a

gcc -shared *.o -o libtest.so

.a和.so文件都是函数文件。库是一组预先编译好的函数的集合,库文件的名字以lib开头,随后的部分指明这是什么渗斗颂库(例如c代表C语言库,m代表数学库)。

.a代表的是静态函数库,当同时销蚂运行多个程序并且都使用到同一个函数库的函数时,内存中就会有同一函数的多份副本,会消耗大量宝贵的内存。

.so是共享函数库,可以克服.a函数库的不足。当一个程序使用共享函数库时,程序本身丛郑不再包含函数代码,而只是引用共享代码,当实际调用时,共享库才被加载到内存中。

.a文件类似于Windows下的.lib文件,.so文件类似于Windows下面的.dll文件,这样就好理解了。

其实我扮枣是想说和缺源明.so文件唤态和.a文件可以随便挪,并且对于netlib blas+lapack和Libgoto BLAS+vasp lapack来说,编译vasp只需要编译它们时得到的.so文件和.a文件,并且可以大胆的对.so文件、.a文件改名、移动。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12117199.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存