动态库与静态库的对比

 

静态库

动态库

加载方式

链接器从静态库中提取所需的函数复制到可执行文件中,最后只要可执行文件既可以运行。
 

动态库中的链接在加载和运行时才会解析,所以可执行文件中不包括静态库中的函数,需要一起交给用户才能执行。

内存占用

可执行文件只从静态库中提取所需的部分。

需要全部加载到内存中。

文件数量

所有代码都包含在可执行文件中

分布在可执行文件和多个动态库文件中,

速度

慢:通过指针在 过程链接表PLT中查找

碎片化

碎片化严重:
动态库加载在可被内存页大小(4096)整除的圆形内存地址(round memory addresses)处。这将使所有动态库争用相同的高速缓存线路。这降低了代码缓存和数据缓存的效率。

可共享

不可共享:封装在内部

同时运行的多个程序可以共享 动态库。

替换

不支持

简单,直接替换动态库文件即可

插件化

不支持

好:可以为已有的程序制作插件。

评价

适合于对运行速度和内存要求高的地方,

多个程序共享调用,可替换

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值