问题

我们在使用c++封装为库,有两个平台:win(xxx.lib,静态;xxx.dll:动态库) 和 linux(xxx.a,静态;xxx.so:动态库) ,那么静态库动态库的区别是什么呢?

解决

  • 区别:静态库和动态库最本质的区别就是:该库是否被编译进目标(程序)内部。

  • 分别介绍:

    • 静态(函数)库

      一般扩展名为(.a或.lib),这类的函数库通常扩展名为libxxx.a或xxx.lib 。
      这类库在编译的时候会直接整合到目标程序中,所以利用静态函数库编译成的文件会比较大,这类函数库最大的优点就是编译成功的可执行文件可以独立运行,而不再需要向外部要求读取函数库的内容;但是从升级难易度来看明显没有优势,如果函数库更新,需要重新编译。

    • 动态函数库
      动态函数库的扩展名一般为(.so或.dll),这类函数库通常名为libxxx.so或xxx.dll 。
      与静态函数库被整个捕捉到程序中不同,动态函数库在编译的时候,在程序里只有一个“指向”的位置而已,也就是说当可执行文件需要使用到函数库的机制时,程序才会去读取函数库来使用;也就是说可执行文件无法单独运行。这样从产品功能升级角度方便升级,只要替换对应动态库即可,不必重新编译整个可执行文件。

  • 总结:综上,不能看出:

    • 从产品化的角度,发布的算法库或功能库尽量使动态库,这样方便更新和升级,不必重新编译整个可执行文件,只需新版本动态库替换掉旧动态库即可。
      从函数库集成的角度,若要将发布的所有子库(不止一个)集成为一个动态库向外提供接口,那么就需要将所有子库编译为静态库,这样所有子库就可以全部编译进目标动态库中,由最终的一个集成库向外提供功能。

【C++】:动态库与静态库区别相关推荐

  1. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

  2. 动态库、静态库、运行时库、引入库之间的区别

    动态库.静态库.运行时库.引入库之间的区别 杂集.捡对口味的看看吧. 转自:http://lingualspark.blog.sohu.com/94785899.html 运行时库:Unix中一个典型 ...

  3. 头文件和库文件区别,动态库和静态库的区别,动静态库的生成

    文章目录 一.什么是头文件?什么是库文件?有什么区别? 先说总结 目标文件 二.什么是静态库?什么是动态库?有什么区别? 三.为什么只用在程序头部写上包含的头文件,头文件中并没有实现内容就可以使用声明 ...

  4. mingw64下动态库和静态库链接的真正区别和用法(详细)

    笔者一直以来都对mingw64下动态库和静态库链接的真正区别和用法存疑,于是做了一些测试,这篇文章记录了测试过程和测试结果,如果只想知道结果可以跳转到文章末尾 一.准备工作 首先准备三个测试文件 其中 ...

  5. Linux系统中动态库和静态库的区别

    Linux系统中"动态库"和"静态库"那点事儿 今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻.在这之前,我们需要了解一下源 ...

  6. Linux动态库和静态库比较

     Linux动态库和静态库比较文件预览 文件目录树如下,如你所见,非常简单.    1. libtest/    2. |-- lt.c    3. |-- lt.h    4. `-- test.c ...

  7. 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )

    文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

  8. 动态库和静态库的创建

    库:一组别人实现好的函数接口 1.命名方法  静态库 : libname.a  动态库 : libname.so  注意   :库的名字是name  2.链接动态库和静态库的区别  预处理,编译,汇编 ...

  9. c语言仿ce内存搜索工 源代码_C语言函数库:动态库和静态库优缺点比较

    函数的重要性 我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护.我们可以把他们制 ...

  10. 动态库与静态库优缺点比较(转 侵删)

    动态库与静态库优缺点比较 2017-10-09   13:32:01      我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效 ...

最新文章

  1. 高翔Slambook第七讲代码解读(特征点提取)
  2. dva 中使用绝对路径/别名的方法
  3. sqap不支持python3吗_Supporting Python 3(支持python3)——欢迎来到Python 3
  4. 如何用课件制作工具演示面积一定的矩形
  5. [BUUCTF-pwn]——not_the_same_3dsctf_2016
  6. c++ 虚函数的实现机制
  7. vue + element-ui 聊天_Vue 插槽详解
  8. Python 爬虫---(7) Python3网络爬虫快速入门实战解析
  9. VS2012+SQLServer2008 R2 开发工具
  10. 软件质量保障之代码走查
  11. 电子设计教程19:晶体管负反馈放大电路的原理设计
  12. html span 文字垂直居中,p标签中的span标签文字垂直居中对齐
  13. 【Python】pandas的read_csv参数简略概括(header,path),DataFrame的返回值describe,plot,head
  14. 题解 P3513 【[POI2011]KON-Conspiracy】
  15. 1442. 单词处理器 Java题解
  16. Python 基础二
  17. JavaWeb(华清远见)
  18. html鼠标移除的效果,css实现鼠标移入移出动态效果
  19. JFrame的使用方法
  20. 学习Excel的使用

热门文章

  1. 苹果ipad邮箱找不到服务器,ipad怎么设置qq邮箱?苹果ipad qq邮箱设置教程
  2. 【爬虫实战】起点中文网排行榜(XPath)
  3. Theano安装与测试过程
  4. thinkpad锁屏壁纸存放目录
  5. 【论文笔记】Exploring Self-attention for Image Recognition
  6. 2.Smali的基础语法
  7. python-opencv最大内切圆查找
  8. 远程办公软件:TeamViewer使用评测与安装
  9. 用matlab求解分支定界法,matlab分支定界法程序
  10. 优点电子签章系统无法解除_电子签章常见问题解答