静态链接库和动态链接库

1.静态链接库
image

静态链接库在程序编译时被连接到目标代码中参与编译;链接时将库完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝;生成可执行程序之后,静态链接库不需要(因已将函数拷贝到可执行文件中)。

静态库特点:
静态库对函数库的链接是放在编译时期完成的(生成可执行文件的时候)
程序在运行时与函数库再无瓜葛,移植方便。
缺点:浪费空间和资源,因为所有相关的目标文件与牵涉到的函数库被链接合成一个可执行文件,如果静态库进行更新则应用该库的所有程序都需要重新编译(全量更新)。

2.动态链接库
(.so .dll)
程序运行时由系统动态加载动态库到内存,供程序调用,系统只加载一次,多个程序共用,节省内存

动态库特点:
1.动态库把对一些库函数的链接载入推迟到程序运行时期(程序开始执行的时候到库中拿要用的函数,然后执行main)。
2.可以实现进程之间的资源共享指的就是多个进程使用同一个库,这个库就是共享的资源,更新库的时候对进程无影响

区别:
1.时期:
静态库在编译时连接,在链接时拷贝
动态库在运行时连接
2.资源
静态库在每次使用时将全部连接进可执行程序,浪费资源。
动态库在使用时访问动态库中函数,节省资源。
3.更新升级
静态库更新,则每个使用该静态库的程序都需要更新,不易于更新升级
动态库仅更新自身,易于更新升级
4.包含其他库
静态链接库不能再包含其他动态链接库
动态链接库可以包含其他动态链接库

原文链接:https://blog.csdn.net/htt789/article/details/81454832

posted on 2026-08-09 16:15  tuck0603  阅读(15)  评论(0)    收藏  举报

导航