动态连接库

动态连接库 VS 静态连接库

谁都会走 提交于 2020-03-12 19:35:53
一、静态库与动态库 通常情况下,对函数库的链接是放在 编译时期 ( compile time )完成的。所有相关的对象文件( object file )与牵涉到的函数库( library )被链接合成 一个可执行文件 ( executable file )。 程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下 。所以这些函数库被成为静态库( static libaray ),通常文件名为 “libxxx.a” 的形式。 其实,我们也可以把对一些库函数的链接载入 推迟到程序运行时期 ( runtime )。这就是如雷贯耳的动态链接库( dynamic link library )技术。动态链接库的名字形式为 “libxxx.so” 后缀名为 “.so” 1. 动态链接库有利于进程间资源共享 什么概念呢?就是说,某个程序的在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝了。如果有,则让其共享那一个拷贝;只有没有时才链接载入。这样的模式虽然会带来一些 “ 动态链接 ” 额外的开销,却大大的节省了系统的内存资源。 C 的标准库就是动态链接库,也就是说系统中所有运行的程序共享着同一个 C 标准库的代码段。 2. 将一些程序升级变得简单。 用静态库, 如果库发生变化 ,使用库的程序要重新编译。使用动态库