静态库
①命名以*.o结尾
②静态库在链接阶段直接加入可执行文件,执行过程无需该静态库
③静态库生成的文件链接产生的可执行文件 相对于动态库 较大
动态库
特点
①命名以*.so结尾
②目标文件在链接阶段只指明链接的动态库,动态库与目标文件互相独立,执行过程需要该动态库
③动态库生成的目标文件较小
对于工程共通源码文件(如多个进程使用同一模块源码),将其制作为动态库可节省系统空间。当动态库出现bug,只需要重新生成一个动态库替换即可。
内存实现
动态库在整个内存空间有一份,而每个进程都有各自的虚拟空间,虚拟空间会通过匿名映射(mmap)使其进程与动态库关联。
加载
显式链接
不需要申明动态库相关头文件,调用时需要加载动态库名称
只有执行到相应代码时才加载动态库(大型项目)
隐式链接
需要添加相应头文件
由系统控制加载时间,一般在程序启动时就加载(项目启动即可发现库是否有问题)
本文介绍了静态库和动态库的主要特点。静态库在链接时被整合进可执行文件,使得生成的文件较大但运行独立;动态库不包含在可执行文件中,运行时需要动态加载,生成的文件较小但依赖于系统中的动态库。动态库更新方便,只需替换库文件,多个进程可以共享内存空间。加载方式包括显式和隐式链接,前者在运行时加载,后者在程序启动时加载。
830

被折叠的 条评论
为什么被折叠?



