NDK-动态库和静态库

库的概念

在Window平台和Linux平台下都大量存在着库。Android中也存在库,库顾名思义,指的是一个容器文件,里面装的是函数,由于windows和linux的平台不同 (主要是编译器、汇编器和连接器的不同),因此二者库的二进制是不兼容的。

库存在的意义

库是别人写好的现有的,成熟的,可以复用的代码,和jar包是一个道理

库的种类:动态库和静态库

动态库: .so/.dll (linux/windows) ,文件比较小,速度相对慢
静态库: .a./.lib (linux/windows) ,文件比较大,速度相对快

.so 类似于 jar包
.a 类似于 aar

动态库和静态库的区别

  • 静态库文件比较大,动态库比较小
  • 静态库需要再编译时,被链接在目标代码中,动态库在运行时才会被加载到目标代码中
  • 动态库类似于jar包,打包是不需要重新进行编译
  • 静态库类似于Android中的Module、aar,一旦打包APK需要重新进行编译

载入时刻不同:

  • 静态库在程序编译时会链接到目标代码中,程序运行时不再需要静态库,因此体积较大。而且每次编译都需要载入静态代码都会因此内存开销大。
  • 动态库在程序编译时不会被链接到目标代码中,而是在程序运行时才被载入,程序运行时需要动态库存在,因此体积较小。而且系统只载入一次动态库,不同程序可以得到的内存中相同的动态库副本,因此内存开销小。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氦客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值