本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行
库有两种:静态库(.a 、.lib)和动态库(.so、dll)。
所谓静态、动态是指链接。
静态库的特点
- 静态库对函数库的链接是放在编译时期完成的。
- 程序在运行时与函数库再无瓜葛,移植方便。
- 浪费空间和资源,因为所有相关的目标文件与牵涉到的函数库被链接合成一个可执行文件。
动态库的特点
- 动态库在程序编译时并不会被链接到目标代码中,而是在程序运行时才被载入。
- 不同的应用程序如果调用相同的库,那么在内存里只需要一份该共享库的实例,规避了空间浪费问题。
- 动态库在程序运行时才被载入,也解决了静态库对程序的更新、部署和发布也会带来麻烦。用户只需要更新动态库即可,增量更新。