静态链接和动态链接
【静态链接和动态链接】
文章目录
- 链接
- 静态链接
- 动态链接
- 静态链接库、动态链接库的特点
链接
每个源程序模块独立地编译,然后按照要求将它们组装起来,这个模块组装的过程就是链接。连接的主要内容是将各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地衔接。链接分为静态链接和动态链接。
静态链接 对函数库的链接是放在编译时期完成的叫做静态链接。所有相关的目标文件与牵涉的函数库被链接合成一个可执行文件。在程序运行时刻,与函数库就再无瓜葛,因为所有需要的函数已经复制到相关位置。这些函数库被称为静态库。
动态链接 动态链接就是将一些函数库的链接推迟到程序运行时期。
静态链接库、动态链接库的特点
- 动态链接库有利于进程间资源共享:当程序运行期间需要调用动态链接库,操作系统会首先查看正在运行的所有程序,在内存中查看是否已有此库函数的拷贝,若有,让其共享那一个拷贝,若没有,才载入。此做法虽然会带来动态链接的额外开销,但是却大大节省了系统的内存开销。静态链接则不同,当有多个程序需要调用某一静态链接库函数时,每个程序都要将这个库函数拷贝到自己的代码段中,这种做法将耗费更多的内存资源。
- 动态链接库有利于程序升级:使用静态链接库,当库中的函数发生改变,使用库函数的程序需要重新编译;但如果使用动态链接库,只要动态链接库的函数接口不变,只用重新生成动态库替换之前的就可以。
- 程序执行速度不同:使用静态链接库,在编译时,就将库函数装载到程序中去,而动态链接是在运行时才执行装载,所以在程序运行时,使用静态链接速度更快。
推荐阅读
- 画解算法(1.|画解算法:1. 两数之和)
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 「#1-颜龙武」区块链的价值是什么()
- leetcode|leetcode 92. 反转链表 II
- BNC公链|BNC公链 | Eth2.0测试网Topaz已质押超100万枚ETH
- 【#2-戴栋】区块链可以提升哪些商业上的效率改进
- 父母链接八~未了情结
- iOS,打Framework静态库
- java静态代理模式
- java|java 常用知识点链接