一、静态库
静态库是以.a为后缀结尾的,程序在编译链接的时候把库的代码链接到可执行文件中。
使用方法
- 把头文件拷贝到当前项目中,在文件包含
- 把库文件拷贝到当前项目中,在文件中添加依赖
优缺点
优点:调用速度相对快
缺点:
- 浪费内存空间(多个应用程序依赖同一个静态库的时候,多个程序运行时,会在内存中拷贝多份)
- 对程序的更新部署发布比较麻烦,静态库修改后,需要重新编译整个可执行文件,重新安装
二、动态库
动态库是以.so为后缀结尾的,在链接期,只把索引文件拷贝到可执行文件中,在运行的时候才调用动态库,程序在运行的时候才去链接动态库的代码。
使用方法
- 把头文件拷贝到当前项目中,在文件包含
- 把索引文件拷贝到当前项目中,在文件中添加依赖
- 把动态库dll拷贝到exe同文件夹内
优缺点
优点:
- 节省内存空间(多个应用程序依赖同一个动态的时候,多个程序运行时,会在内存中拷贝一份动态库)
- 更新简单,动态库修改以后,只需要重新编译动态库即可
缺点:调用比静态库慢,移植的时候需要同时移植可执行文件和动态库
总结
静态库有点类似于线下各个人去抄写复制,一旦原本的出现更改就必须全部更新。动态库就是线上版本,需要用的时候上网查就行了,而且可随时更改。