动态链接库(DLL)与静态链接库学习笔记

1.动态链接库(Dynamic Link Library,简称DLL)

动态链接库是一种可以在程序运行时加载和使用的共享代码库。与静态链接库不同,动态链接库在编译时并不被嵌入到可执行文件中,而是在程序运行时由操作系统动态加载到内存中。

动态链接库的常见扩展名

  • Windows.dll(Dynamic Link Library)
  • Linux.so(Shared Object)
  • macOS.dylib(Dynamic Library)
  • 通用.dll.so.dylib.sl(Solaris)

2.静态链接库(Static Link Library)

静态链接库是一种在编译时将库代码直接嵌入到可执行文件中的库文件。与动态链接库不同,静态链接库的代码在程序构建阶段就被完整地合并到最终的可执行文件中,程序运行时不再依赖外部的库文件。静态库不可跨平台,与编译它的操作系统和CPU架构绑定。例如,Windows的.lib文件无法在Linux下使用。

静态链接库的格式

操作系统静态库扩展名说明
Windows.libMicrosoft静态库格式
Linux/Unix.a(Archive)通过ar工具打包的目标文件集合
macOS.a 或 .framework静态库或框架包

静态链接 vs. 动态链接对比

维度静态链接库动态链接库
链接时机编译时运行时
文件体积大(包含库代码)小(仅存库引用)
内存占用高(多进程重复加载库副本)低(多进程共享同一库)
更新维护需重新编译程序替换库文件即可
依赖管理无依赖需确保库版本兼容
适用场景嵌入式、独立工具、避免依赖问题大型应用、插件系统、资源共享
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值