动态库和静态库都是用来共享需要反复使用的公共代码,通过链接库文件和可执行文件使用库文件中的公共代码。库一般是黑盒子,内部对使用者来说不可见。库是经过编译的,能够提高程序的编译效率。
静态库:在链接过程中复制库文件中的公共代码到可执行文件中。Linux后缀为.a;Windows下后缀为.lib
动态库:在链接过程中不需要复制代码,而是由系统动态加载到内存中以便调用。后缀为.so
优缺点:静态库在程序执行的时候不需要依赖库效率高,而是使用库中拷贝的代码,这也导致了代码被多次重复复制。动态库不需要多次拷贝代码,但程序依赖于库执行效率低。