为什么要动态连接

静态连接将需要的库文件直接链接进ELF中,假设多个ELF需要同一个库文件,如几乎所有的C代码都需要C库,那么C库会在多个ELF中存在完全一样的副本,对硬件资源是一种绝对浪费,尤其是在硬件资源比较受限的嵌入式系统中,不仅浪费flash,加载多个进程后,还浪费内存。

而动态连接能完美的解决以上问题,可以使依赖同一个库文件的各进程统一使用磁盘和内存中唯一的库文件。

而且多个进程共享一个库文件,不仅节省flash和内存,由于现代cpu都有cache用于提高访问速度,因为动态连接可以减少物理页面的换入和换出处理,所以可以增加CPU cache的命中率。

同时,程序的升级和发布更新也要更加容易,如果使用静态库,则必须发布链接静态库的ELF,如果作为动态库存在,则可以单独发布,跟主程序的耦合要减少很多,发布更新起来也要方便的多,试想,一个像matlib那样的程序,如果要更新一部分程序就要整个发布,7.8个G,估计大家开始down之后,可以直接睡觉了。

动态连接同样增强了程序的扩展和兼容性,对于开放平台或者软件意义尤其重大,发布的主平台只要定好相关接口,其他第三方开发者就可以开放功能特性各异的动态库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值