动态链接库和静态链接库的区别
来源:互联网 发布:武汉服装网络批发城 编辑:程序博客网 时间:2024/06/06 01:48
平时总听人讲动态链接库、静态链接库、lib、dll、so等名词,一直搞不清楚这几者之间的区别以及各自的应用场合。后来上网仔细查了一下资料,终于搞清楚了,在这里整理一下先。
动态链接库:动态链接库中包含了多个已经被编译、链接好的函数和数据资源,但并不包含函数的源码。动态链接库在windows下是.dll 文件,英文为Dynamic Link Library,在Linux下是.so文件。如果在你的程序中使用了动态链接库,那么在程序运行时,会动态地将该库加载,然后调用库中的函数。动态库的优点是便于维护和更新各个程序模块,比如在一个大型程序中,会有数十个甚至更多的模块。使用动态库封装每个模块后,在需要更新某模块时,只需替换该模块对应的.dll或者.so文件即可,而不需要更新整个程序,这一点是下文要讲到的静态链接库无法实现的。
静态链接库:静态链接库在windows下是.lib文件,在Linux下是.a文件。和动态链接库不同,它包含了函数的源代码,因此文件大小通常比动态库大很多。如果你的程序中依赖了某个静态库,那么在你的程序编译链接过程中,会自动从静态库中取出需要用到的函数代码,然后和当前程序进行链接,生成可执行文件。由此可见,最终的可执行文件在运行时不再需要依赖静态库,可直接运行,这一点明显区别于动态库(在动态库的情况中,程序在运行时必须能够找到相应的动态库文件)。另外和动态库不同的是,静态库中某函数更新后,整个程序需要重新编译链接。
动态库和静态库各有利弊,可根据应用要求选择合适的使用方法。
PS:这里还有一个很重要的概念需要强调。在使用编程工具(如VS)编译生成dll时,同时会生成.lib文件,注意,这里的.lib文件并不是静态链接库,而是.dll的导入库,是为了方便程序在dll中寻找相应函数的,所以千万不能搞混了!
好了,第一篇博文就写到这里吧。
- 静态链接库和动态链接库的区别
- 动态链接库和静态链接库的区别
- 动态链接库和静态链接库的区别
- 动态链接库和静态链接库的区别
- 动态链接库和静态链接库的区别
- 静态链接库和动态链接库的区别
- 动态链接库和静态链接库的区别
- 静态链接库和动态链接库的区别
- 动态链接库和静态链接库的区别
- 动态链接库和静态链接库的区别
- 动态链接库和静态链接库的区别
- 动态链接库和静态链接库的区别
- 动态链接库和静态链接库的区别
- 动态链接库和静态链接库的区别
- 静态链接库和动态链接库的区别
- 动态链接库和静态链接库的区别
- 动态链接库和静态链接库的区别
- 静态链接库和动态链接库的区别
- VxWorks入门级开发环境学习
- 龙应台祝贺莫言获诺奖:好家伙你得奖了-莫言-诺贝尔文学奖-龙应台
- R语言与点估计学习笔记(EM算法与Bootstrap法)
- 总结一下 Spring的IOC、DI
- 中乳协:婴幼儿乳粉9月份抽检合格率百分之百-乳制品-婴幼儿配方-国家标准
- 动态链接库和静态链接库的区别
- ubuntu,win7双系统,重装win7后恢复grub引导
- CUDA
- ZOJ 1097 CODE the Tree
- python list 的复制拷贝的简单介绍
- poj 2201 笛卡尔树
- 求大哥大姐,C 链表写入文件和读取
- Struts2 接收参数 中文乱码问题
- poj 3160 spfa+tarjan 无向图最值问题