1.制作过程
静态库:
生成.o文件后
ar rcs *.o libxxx.a
动态库:
生成.o文件时,静态库是-c选项,而动态库是-fpic/-FPIC, 因为动态库需要生成与位置无关的代码,动态库在运行是是被动态加载到内存中的,位置不固定
打包时是
gcc -shared *.o -o libxxx.so
2.优缺点
静态库:
优点:
1.静态库被打包到应用程序中,所以加载速度更快(静态库是在链接时直接将代码加载到内存中,而动态库在加载时需要去寻找动态库位置,所以相对更慢一些)
2.发布时无需提供静态库,移植方便(直接将代码链接成可执行文件发给使用者,因此发布时无需提供静态库)
缺点:
1.消耗系统资源,浪费内存(在链接时将代码加载到内存中,因此每有一个使用该静态库的接口就会加载一次该静态库)
2.更新、部署、发布麻烦(当更新静态库中的函数时,需要重新将静态库打包给使用者并重新编译链接,或由发布者重新编译链接为可执行程序再发给使用者)
动态库:
优点:
1.可以实现进程间资源共享(只要有一个程序使用了该动态库,那么该动态库就会被动态加载到内存中,其他程序使用该动态库时可以直接使用,不需要重新加载)
2.更新、部署、发布简单(更新时只需要将原来位置的动态库替换为新的动态库即可,程序在运行时才会动态加载动态库)
3.可以控制何时加载动态库
缺点:
1.加载速度比静态库慢(因为多了一个动态加载即寻找动态库的过程)
2.发布程序时需提供依赖的动态库
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)