动态链接库.so和静态链接库.a的区别

静态链接库:

  •扩展名:.a
  •编译行为:在编译的时候,将函数库直接整合到执行程序中(所以利用静态库编译生成的文档会更大)
 •独立执行的状态:编译成功的可执行文件可以独立运行,不需要再向外部要求读取函式库的内容
 •更新:如果函式库更新,需要将整个项目程序重新编译
 •好处:方便程序移植

动态链接库:

  •扩展名:.so
  •编译行为:在编译的时候,程序里面仅有指向动态库所在的指标,其内容并没有被整合到执行文件中。所以,在程序运行之初不需要加载所有代码,只有在用到函式库中的某个函数时,程序才会去读取动态库的内容(所以利用动态库编译生成的文档会小些)
 •独立执行的状态:编译成功的可执行文件不能独立执行,函式库必须存在,而且库所在的目录也不能改变。(移动之后,必须重新编译链接)
  •更新:如果函式库更新,不需要重新编译,因为执行文件里仅有库的位置(前提是函式库名称、位置都没变)
  •好处:
  1) 只保留接口,将动态库和程序代码独立,提高代码的可复用性,降低程序耦合度。
  2) 节约内存,减少页面交换。
比如:计算机同时运行多个程序,都应用static.a,在内存中就会存在多份拷贝。一旦程序数量过多,就有可能内存不足。
动态链接库.so和静态链接库.a的区别
而在动态库在内存中只存在一份拷贝,不会浪费空间。
动态链接库.so和静态链接库.a的区别

转载于:https://blog.51cto.com/13097817/2047647

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值