linux动态库和静态库

概述

linux下有两种库:动态库和静态库。

静态库在编译过程中已经被载入,因此编译出来的可执行程序都比较大。程序运行时不再需要静态库,即程序编译完之后静态库就没用了。

动态库(共享库)在程序运行时载入内存,在编译过程中仅简单的引用,因此可执行文件体积比较小。程序运行需要加载动态库,即程序和动态库必须同时存在。

静态库

  • 静态库是.o文件的集合,使用时可以把.a文件当成多个.o的集合使用。
  • 如果.a依赖于动态库,生成.a时不会把.so动态库集合进来,那么使用者使用.a时需要同时链接其依赖的.so库。在产生.a时要避免依赖过多的动态库。
  • 如果.a依赖于其他的.o文件(比如调用了某个.o中定义的函数),生成.a时不会把.o文件或其内部的函数集合进来,那么在使用.a文件编译执行文件会报错符号找不到。
  • 静态库更新之后使用静态库的程序必须重新编译。

动态库

  • 在编译的时候动态库并没有被编译进目标代码,你的程序执行到相关函数时才去调用动态库,所以程序运行时必须提供相应的库。
  • 动态库更新之后不需要重新编译目标程序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值