C++ 静态库和动态库的区别

本文介绍了C++中的库概念,包括静态库(.a.lib)和动态库(.so.dll),详细阐述了它们的特点和区别。静态库在编译时链接,程序独立但占用资源;动态库在运行时链接,节省资源,便于更新。总结了静态库与动态库在链接时期、资源使用、更新升级和包含其他库方面的不同。
摘要由CSDN通过智能技术生成

库是C++中的函数集合, 用于存放共享代码的

C++的库分为静态库和动态库, 动态库将函数的声明和实现分开成两部分, 分别存放在了两个文件中

而C++的函数声明就存放在了 lib 文件中, 如果是静态库的话 lib 文件还会存放函数的代码本身和函数的实现, 如果是动态库的话, 函数的实现会被存放在dll 文件中

lib 文件在编译的时候需要和程序的源文件一起编译, 而 dll 在编译的时候不需要, 不过在程序运行的时候需要 dll 的帮助

Linux下的.so和.a文件是什么

相当于是win下的lib和dll文件

各自的特点

  • 静态库 (.a .lib)
    • 特点
      • 1. 静态库对函数库的链接是放在编译时期完成的
      • 2. 程序在运行时与函数库再无瓜葛,移植方便。
      • 3. 浪费空间和资源,因为所有相关的目标文件与牵涉到的函数库被链接合成一个可执行文件
      • 4. 如果静态库进行更新则应用该库的所有程序都需要重新编译(全量更新)
  • 动态库 (.so .dll )
    • 特点
      • 1. 动态库把对一些库函数的链接载入推迟到程序运行时期。
      • 2. 可以实现进程之间的资源共享。(因此动态库也称为共享库)
      • 3. 将一些程序升级变得简单。
      • 4. 甚至可以真正做到链接载入完全由程序员在程序代码中控制(显式调用)

区别

  • 1. 链接时期区别
    • 动态库在运行的时候连接, 静态库在编译时连接, 在连接时拷贝
  • 2. 使用资源上
    • 静态库在每次使用的时候都会将全部的库链接进可执行文件, 比较浪费资源
    • 动态库在使用的时候访问动态库中函数, 比较节省资源
  • 3. 更新升级上
    • 静态库更新,则每个使用该静态库的程序都需要更新,不易于更新升级
    • 动态库仅更新自身,易于更新升级
  • 4. 包含其他库
    • 静态链接库不能再包含其他动态链接库
    • 动态链接库可以包含其他动态链接库
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值