微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

静态链接库:

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

动态链接库:

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

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


而在动态库在内存中只存在一份拷贝,不会浪费空间。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐