区别
二者的不同点在于代码被载入的时刻不同。
静态库【扩展名为(.a或.lib)】在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库,因此体积较大。
动态库【扩展名为(.so或.dll)】在程序编译时并不会被连接到目标代码中,而是在程序运行时才被载入,因此在程序运行时还需要动态库存在,因此代码体积较小。
特点
静态库
好处就是编译成功的可执行文件可以独立运行,而不再需要向外部要求读取函数库的内容;但是从升级难易度来看明显没有优势,如果函数库更新,需要重新编译。
动态库
好处是,不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例。
当可执行文件需要使用到函数库的机制时,程序才会去读取函数库来使用;也就是说可执行文件无法单独运行。这样从产品功能升级角度方便升级,只要替换对应动态库即可,不必重新编译整个可执行文件。