在Linux下写C程序时,常常有很多基础通用重复性的代码,最常见的比如重复使用CURL库创建HTTP请求,动态链接库就为了解决这个问题,可以把重复性的函数库单独编译成so文件,然后多个程序可以共享一个so文件提供的函数库
Linux内置了一些常见的类库so文件,我们也可以自己编译自己需要的类库文件放到/usr/lib
目录下,使用动态链接库有以下优势
- 提升编译速度,类库部分不需要重新编译
- 更容易升级部分功能,比如所有程序依赖curl库,那么如果curl可以单独升级而不用重新编译程序
- 由于源码体积减少,所以编译出来的可执行文件体积也小
当然,也有缺点
- 运行环境要准备好相关依赖库
- 启动相对较慢,因为要加载动态库自然相比静态库慢一些,慢多少取决于实际环境