-
链接方式
静态链接:把静态库编译进目标文件;
动态链接:没有把库编译进目标文件;程序运行时才加载运行代码(地址无关代码技术,装载时重定位,只做语法检查)
-
空间占用
静态库:静态库存在多个副本(内存和磁盘)
动态库:只有一个副本
-
使用方式
静态库:可以直接运行
动态库:动态加载,运行环境需要指定查找路径(LInux: LD_LINARARY_PATH)
-
执行速度
静态库较快,动态库相比较慢。
-
库文件发生变更
1. 接口改变:不论是动态库还是静态库,都需要重新编译。
2. 接口实现改变:静态库需要重新编译;动态库只需要编译库文件即可。
参考
【【C++面试题】面试官:请问动态库与静态库的区别?】