先回忆一下将一个程序编译成可执行程序的步骤传送门
静态链接是指将多个目标文件合并为一个可执行文件,直观感觉就是将所有目标文件的段合并。需要注意的是可执行文件与目标文件的结构基本一致,不同的是是否“可执行”。
静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。
静态库的缺点:
- 程序体积膨胀
- 程序升级改动很小也要更新整个程序
Tips:多个程序只调用一个动态库,英文动态库在内存中只存在一份拷贝。