c++ 之动态库与静态库区别
区别:静态库和动态库最本质的区别就是:该库是否被编译进目标(程序)内部。
分别介绍:
静态(函数)库
一般扩展名为(.a或.lib),这类的函数库通常扩展名为libxxx.a或xxx.lib 。
这类库在编译的时候会直接整合到目标程序中,所以利用静态函数库编译成的文件会比较大,这类函数库最大的优点就是编译成功的可执行文件可以独立运行,而不再需要向外部要求读取函数库的内容;但是从升级难易度来看明显没有优势,如果函数库更新,需要重新编译。
动态函数库
动态函数库的扩展名一般为(.so或.dll),这类函数库通常名为libxxx.so或xxx.dll 。
与静态函数库被整个捕捉到程序中不同,动态函数库在编译的时候,在程序里只有一个“指向”的位置而已,也就是说当可执行文件需要使用到函数库的机制时,程序才会去读取函数库来使用;也就是说可执行文件无法单独运行。这样从产品功能升级角度方便升级,只要替换对应动态库即可,不必重新编译整个可执行文件。
总结:综上,不能看出:
从产品化的角度,发布的算法库或功能库尽量使动态库,这样方便更新和升级,不必重新编译整个可执行文件,只需新版本动态库替换掉旧动态库即可。
从函数库集成的角度,若要将发布的所有子库(不止一个)集成为一个动态库向外提供接口,那么就需要将所有子库编译为静态库,这样所有子库就可以全部编译进目标动态库中,由最终的一个集成库向外提供功能。
c++ 之动态库与静态库区别相关推荐
- ios 开发中 动态库 与静态库的区别
使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...
- 动态库、静态库、运行时库、引入库之间的区别
动态库.静态库.运行时库.引入库之间的区别 杂集.捡对口味的看看吧. 转自:http://lingualspark.blog.sohu.com/94785899.html 运行时库:Unix中一个典型 ...
- 头文件和库文件区别,动态库和静态库的区别,动静态库的生成
文章目录 一.什么是头文件?什么是库文件?有什么区别? 先说总结 目标文件 二.什么是静态库?什么是动态库?有什么区别? 三.为什么只用在程序头部写上包含的头文件,头文件中并没有实现内容就可以使用声明 ...
- mingw64下动态库和静态库链接的真正区别和用法(详细)
笔者一直以来都对mingw64下动态库和静态库链接的真正区别和用法存疑,于是做了一些测试,这篇文章记录了测试过程和测试结果,如果只想知道结果可以跳转到文章末尾 一.准备工作 首先准备三个测试文件 其中 ...
- Linux系统中动态库和静态库的区别
Linux系统中"动态库"和"静态库"那点事儿 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源 ...
- Linux动态库和静态库比较
Linux动态库和静态库比较文件预览 文件目录树如下,如你所见,非常简单. 1. libtest/ 2. |-- lt.c 3. |-- lt.h 4. `-- test.c ...
- 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...
- 动态库和静态库的创建
库:一组别人实现好的函数接口 1.命名方法 静态库 : libname.a 动态库 : libname.so 注意 :库的名字是name 2.链接动态库和静态库的区别 预处理,编译,汇编 ...
- c语言仿ce内存搜索工 源代码_C语言函数库:动态库和静态库优缺点比较
函数的重要性 我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护.我们可以把他们制 ...
- 动态库与静态库优缺点比较(转 侵删)
动态库与静态库优缺点比较 2017-10-09 13:32:01 我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效 ...
最新文章
- cifs------网络文件系统(1)
- 学习BeetlSQL总结(2)——查询API,更新API
- c语言:输入两个正整数m和n,求其最大公约数和最小公倍数
- gzip android,怎么在Android系统中使用gzip进行数据传递
- UVa 1368 - DNA Consensus String
- 百度联盟广告如何理解按父容器宽度
- SSM 整合 4:Spring IoC 容器基于的两个重要接口 BeanFactory 和 ApplicationContext
- MySQL高级知识(十六)——小表驱动大表
- 算法之路(5)--括号匹配问题(Valid Parentheses)[leetcode]
- php preg split,php preg_split()字符串分割函数的使用方法
- java day09【继承、super、this、抽象类】
- 【转】 Pro Android学习笔记(八一):服务(6):复杂数据Parcel
- 10.1综合强化刷题 Day2 morning
- 黑莓7100刷机及修改PIN,完美破解超越输入法
- 计算机组成原理-检错码、纠错码
- linux下libreoffice增加字体,Linux下Libreoffice增加字体
- 今日芯声 | 从“罪犯”到“英镑人物”,图灵比肩英国女王
- Docker的基本管理命令!!!学会docker的第一步
- 苹果手机通话声音小怎么调_通话音量小怎么办?教你安卓和苹果的解决教程,只需2步...
- 自成一派的正则表达式
热门文章
- MS Office Excel 2007/2003 资料下载汇总
- 雷蛇毒蝰迷你版无法连接雷云3解决方法
- HDLBits: 在线学习 SystemVerilog(十七)-Problem 106-114(移位寄存器)
- FreeSWITCH之配置G729转码
- 动图怎么分解成图片?Gif图片如何在线分解
- 机器学习之支持向量机: Support Vector Machines (SVM)
- 广告深度学习计算:召回算法和工程协同优化的若干经验
- 看这里看这里:结构体的超级详细讲解
- WEB HTML 二级菜单 折叠展开菜单
- 什么是线性表?什么是线性表的顺序存储结构?什么是线性表的链式存储结构?