静态库的名字一般是libxxx.a,代码在编译过程中已经被载入可执行程序,因此体积比较大,程序运行时将不再需要该静态库。
动态库的名字一般是libxxx.so,代码在编译过程中仅简单的引用,在可执行程序运行时才载入内存。因此代码体积比较小,程序运行时需要动态库。动态库与程序代码独立,这样就可以提高代码的可复用度,和降低程序的耦合度。
区别:
速度方面,静态库把库直接加载到程序中,运行速度比较快;动态库速度较慢
内存方面,静态库多个程序运行时内存中会有多个副本,占用内存较大;动态库多个程序运行时共享一份相同的动态库,占用内存较小
迭代方面,静态库一旦程序中有任何模块更新,整个程序就要重新编译,升级不方便;动态库只要将旧的目标文件覆盖掉,升级比较方便。