【Linux动态库和静态库】

GCC 编译的流程:

可执行文件   a.out
静态库          static_dll
动态库          dynamic_dll

静态库

说明:在编译阶段,函数库的代码已经被载入可执行文件中,整个函数库的所有数据都会被整合进               目标代码。

优点 :编译后的执行程序不需要外部的函数库支持
缺点 :生成的文件比较的大,若是函数库的代码改变了,则需要重新编译
特点 :静态库的代码在编译过程中已经被载入可执行程序,因此生成的可执行体积较
            大。

图示

 

动态库

说明:动态库是动态链接的动态库动态函数库在编译的时候并没有被编译进目标代码中,而是在运行的时候,才来链接我们的函数库中你用到的函数。因此动态函数库所产生的可执行文件比较小
由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运
行环境中必须提供相应的库,以及库路径。

特点 :动态库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单
            的引用,因此可执行代码体积较小。

 总结 :

1.我们知道当要使用静态的程序库时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。

2.对动态库而言,动态库会在执行程序内留下一个标记指明当程序执行时,首先必须载入这个库。

3.由于动态库节省空间,linux 下进行连接的缺省操作是首先连接动态库,也就是说,如果同时
存在静态和动态库,不特别指定的话,将与动态库相连接。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值