linux中,a文件与.so文件有什么关系吗

linux中,a文件与.so文件有什么关系吗,第1张

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

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

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

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

它们的具体区别并不算太大,只是链接后的不同,具体区别如下:

o:是编译的中间目标文件将多个中间目标文件,可以链接成可执行文件。

so:文件表示动态链接库。

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

lo:使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息。

la:使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息

o: 编译的目标文件

a: 静态库,其实就是把若干o文件打了个包

so: 动态链接库(共享库)

lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息

la: 使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存