静态库是在程序链接阶段被复制到程序中,动态库是在程序运行时被加载到内存中被调用。
静态库加载速度快,可移植性高,但是比较消耗系统资源,更新部署发布比较麻烦。
动态库加载速度慢,移植需提供动态库。进程间资源共享,更新、部署、发布比较简单。
静态库的制作:
通过gcc得到.o文件:gcc -c a.c b.c,使用ar工具:ar rcs libxxx.a a.o b.o
动态库的制作:
通过gcc获得.o文件:gcc -o -fpic a.o b.o,gcc -shared a.o b.o libxxx.so
区别:
1、静态库的优点:
加载到应用程序速度快、发布时无需提供静态库、移植性高
2、静态库的缺点:
更新、部署、发布麻烦,消耗系统资源、浪费内存
3、动态库的优点:
可以实现在进程间共享资源
更新、部署、发布简单
可以控制何时加载动态库
4、动态库的缺点:
发布时需要提供依赖的动态库
加载速度比静态库慢