动态库与静态库

一、什么是静态库动态库

  1. 静态库:一般名字是libXXX.a,其中XXX是库的名字,利用静态库便于的文件比较大,因为整个函数库的所有数据都会被整合到目标代码中,优点就是编译后的程序不需要外部库的支持,但是也是缺点,因为如果静态函数库要变化的话,程序就必须重新编译
  2. 动态库:一般名字是libXXX.M.N.so,其中,XXX是库的名字,M是库的主版本号,N是库的副版本号。也可以不要版本号,但是名字必须有,相对于静态函数库,动态函数库在编译的时候并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。

      动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。Linux系统有几个重要的目录存放相应的函数库,如/lib/usr/lib。当要使用静态的程序库时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。然而,对动态库而言,就不是这样。动态库会在执行程序内留下一个标记指明当程序执行时,首先必须载入这个库。由于动态库节省空间,linux下进行连接的缺省操作是首先连接动态库,也就是说,如果同时存在静态和动态库,不特别指定的话,将与动态库相连接。加选项-static使用静态链接
    http://blog.csdn.net/lf_2016/article/details/55563442

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值