01静态库与动态库的理论篇

01静态库与动态库的理论篇

前提:静态库与动态库共同组成程序库。

下面我们根据这张图来分析静态库与动态库。
假设头顶的矩形为静态库或者动态库,其它三个为执行完毕的可执行文件。

01静态库与动态库的理论篇
1 静态库
若矩形为静态库时,三个可执行文件在编译时,必定都加载该静态库到可执行文件中。
例如静态库=500M;a,b,c.out=10k;那么三个可执行文件的大小均为500M+10K。

2 动态库(共享库)
若矩形为动态库时,编译时不会被加载到可执行文件中,只有在运行时用到动态库的函数才会去动态库调用,所以动态库都是放在内存当中,并且他们是共享一个动态库的。
例如动态库=500M;a,b,c.out=10k;那么三个可执行文件的大小仍为10k;不会被改变。

3 特点总结
1)静态库编译时会被加载到可执行文件,执行效率快,但比较耗内存。
2)动态库运行时被放在内存当中,运行中的进程
用到该动态库时,就去内存中调用,执行效率慢,但节省内存。
3)从开发角度来看,尽量都使用动态库好,独立并且更新方便,静态库是固定的,更新麻烦。