当前位置:网站首页>程序的静态库与动态库的区别
程序的静态库与动态库的区别
2022-07-29 07:16:00 【jaky_】
函数是可在整个程序中重用的代码块。使用它们可以节省时间,无需多次重写代码。与函数一样,库也可以节省时间,因为它们使函数可以在多个程序中重用。
静态库或静态链接库是一组例程,外部函数和变量,它们在编译时在调用者中解析,并由编译器,链接器或绑定器复制到目标应用程序中,从而生成目标文件和一个独立的可执行文件。动态链接只包括库的地址(而静态链接是浪费空间)动态链接在运行时链接库。
静态库虽然可以在多个程序中重用,但在编译时会被锁定到程序中。另一方面,动态或共享库作为可执行文件之外的单独文件存在。
使用静态库的缺点是它的代码被锁定到最终的可执行文件中,如果没有重新编译就无法修改。相反,可以修改动态库而无需重新编译。
由于动态库位于可执行文件之外,因此程序只需在编译时制作库文件的一个副本。而使用静态库意味着程序中的每个文件都必须在编译时拥有它自己的库文件副本。
使用动态库的缺点是程序更容易破坏。例如,如果动态库损坏,则可执行文件可能不再起作用。但是,静态库是不可触及的,因为它存在于可执行文件中。
使用动态库的好处是,多个正在运行的应用程序可以使用相同的库,而无需每个应用程序拥有自己的副本。
使用静态库的另一个好处是运行时的执行速度。因为它的目标代码(二进制)已经包含在可执行文件中,所以对多个函数的调用可以比动态库的代码更快地处理,而动态库的代码需要从可执行文件之外的文件中调用。
分别什么时候使用他们?
如果你有很多文件,静态库的多个副本意味着可执行文件的大小增加,那就建议使用动态库,可以节省时间。如果执行时间的好处超过节省空间的需要,那么静态库就是最佳选择。
边栏推荐
- 2-统一返回类DTO对象
- 【暑期每日一题】洛谷 P6408 [COCI2008-2009#3] PET
- It's enough for MySQL to have this article (disgusting and crazy typing 37k words, just for Bo Jun's praise!!!)
- SEGGER 的硬件异常 分析
- NFT 的 10 种实际用途
- stm32 操作W25Q256 W25Q16 spi flash
- 【暑期每日一题】洛谷 P6500 [COCI2010-2011#3] ZBROJ
- Scala higher order (10): exception handling in Scala
- 0 9 布隆过滤器(Bloom Filter)
- 美智光电IPO被终止:年营收9.26亿 何享健为实控人
猜你喜欢

QT连接两个qslite数据库报错QSqlQuery::exec: database not open

亚马逊云助手小程序来啦!

Round avatar of user list and follow small blocks
Scala 高阶(九):Scala中的模式匹配

jdbc入门

【OpenGL】着色器(Shader)的使用

Docker's latest super detailed tutorial - docker creates, runs, and mounts MySQL

JS day 4 process control (if statement and switch statement)

Remote invocation of microservices

论文阅读 (62):Pointer Networks
随机推荐
PAT甲级 1146 拓扑顺序
1 - background project construction
Gin service exit
@RequestMapping 用法详解
【Unity实战100例】Unity万能答题系统之单选多选判断题全部通用
Kubernetes (V) -- deploy kubernetes dashboard
Error 1045 (28000) access denied for user 'root' @ 'localhost' solution
It's enough for MySQL to have this article (disgusting and crazy typing 37k words, just for Bo Jun's praise!!!)
Thinkphp6 realizes database backup
美智光电IPO被终止:年营收9.26亿 何享健为实控人
【WPF】通过动态/静态资源实现语言切换
【暑期每日一题】洛谷 P6500 [COCI2010-2011#3] ZBROJ
分析25个主要DeFi协议的路线图 预见DeFi未来的七大趋势
20-40k | mecarmand 3D vision algorithm / software / Product Manager Recruitment
Using C language to skillfully realize the chess game -- Sanzi chess
How much data can a single MySQL table store at most?
2022-07-28: what is the output of the following go language code? A:AA; B:AB; C:BA; D:BB。 package main import ( “fmt“ ) func main() { f
能在SQL 语句中 指定 内存参数吗?
Scala 高阶(九):Scala中的模式匹配
Leetcode buckle classic problem -- 4. Find the median of two positively ordered arrays