当前位置: 首页 > news >正文

简单理解:DLL 库 和 SO 库

DLL 库 和 SO 库 通俗讲清楚

这俩是操作系统里的「动态链接库」—— 本质就是封装好的代码工具箱,程序运行时才加载,不用打包进 exe 里,节省空间、方便升级。

一、最简单的区别

  • DLL(Dynamic Link Library)Windows 系统专用的动态库文件后缀:.dll

  • SO(Shared Object)Linux / Unix / Android 系统专用的动态库文件后缀:.so

一句话:Windows 用 DLL,Linux / 安卓 用 SO,功能一样,系统不同。

二、它们是干嘛的?

  1. 代码复用多个程序可以共用同一个库,不用重复写代码。
  2. 节省体积程序不把库打包进去,运行时才加载。
  3. 方便升级修复 bug 时,只替换 dll/so 文件,不用重新编译整个程序。
  4. 隐藏代码核心算法编译成库,别人看不到源码,只能调用。

三、核心差异(一看就懂)

项目DLL(Windows)SO(Linux)
所属系统WindowsLinux / macOS / Android
文件后缀.dll.so
依赖路径系统目录、当前目录、环境变量LD_LIBRARY_PATH、系统库路径
依赖关系自带依赖,容易缺 DLL依赖系统环境,相对稳定
调用方式LoadLibrary / 隐式链接dlopen / 隐式链接
常见问题DLL 缺失、版本不兼容SO 找不到、版本错误

四、什么时候会用到?

1. 写代码时

  • Windows:编译出.dll,给 exe 调用
  • Linux:编译出.so,给二进制程序调用

2. 运行软件时

  • 打开软件提示:找不到 xxx.dll→ Windows 缺库
  • 运行程序提示:error while loading shared libraries→ Linux 缺 so 库

3. 安卓开发

APP 里的 JNI 底层逻辑,几乎都是.so 库

五、静态库 vs 动态库(补充)

  • 静态库:.lib(Windows) /.a(Linux)代码直接打包进程序,运行不需要库文件,但程序体积大。

  • 动态库:.dll/.so程序不打包库,运行必须带上库文件,体积小、易升级。

超级总结

  • DLL = Windows 动态库
  • SO = Linux / 安卓 动态库
  • 功能完全一样,只是系统不同
  • 都是给程序提供功能的「代码工具箱」

一、静态库 / 动态库 后缀速记

  • 静态库:.lib
  • 动态库:.dll+ 配套.lib(导入库)

Linux / Android:

  • 静态库:.a
  • 动态库:.so

二、GCC 编译:Linux 生成 & 使用 .so

1. 生成动态库 libtest.so

# 编译为位置无关代码 -fPIC gcc -c -fPIC test.c -o test.o # 链接生成so动态库 gcc -shared test.o -o libtest.so

2. 主程序调用 so

# 编译主程序,链接动态库 gcc main.c -ltest -L. -o main # 运行(临时指定库路径) export LD_LIBRARY_PATH=./ ./main

三、Windows MinGW 生成 & 使用 DLL

1. 生成 test.dll

# 编译+生成dll和导入库libtest.lib gcc -shared test.c -o test.dll -Wl,--out-implib=libtest.lib

2. 主程序调用 DLL

gcc main.c -ltest -L. -o main.exe

运行时把test.dllmain.exe放同一目录即可。

四、静态库 快速命令(补充)

Linux 生成 .a

gcc -c test.c ar rcs libtest.a test.o gcc main.c libtest.a -o main

Windows MinGW 生成 .lib 静态库

gcc -c test.c ar rcs test.lib test.o

五、两种调用方式(重点)

  1. 隐式链接(上面命令)编译时就绑定库,简单常用。
  2. 显式动态加载(代码里手动加载)
    • Windows:LoadLibrary()加载 dll
    • Linux:dlopen()加载 so适合插件化、按需加载场景。

六、嵌入式 / 安卓补充

Android 交叉编译 .so 只需要换交叉编译器,参数不变:-fPIC -shared这两个核心参数不变,适配所有嵌入式 Linux。

http://www.jsqmd.com/news/709923/

相关文章:

  • DLSS Swapper革命性工具:智能游戏画质提升的一键式解决方案
  • 智能自动化助手:3个秘诀让你的Android设备更高效
  • 3分钟搭建零配置静态服务器:http-server让本地开发效率翻倍 [特殊字符]
  • 2026有实力且性价比高的工业窑炉厂家推荐哪家?破解粉体干燥能耗居高不下困局 - 品牌种草官
  • MaxKB4j:Java原生的企业级RAG与智能体引擎设计与实战
  • 2026最新中医执医考试课程选择——为何阿虎课程好 - 医考机构品牌测评专家
  • 多模态模型评估框架AdaptMMBench解析与应用
  • 皮肤管理店收银系统哪个靠谱?行业力荐品牌
  • 全面掌握ezdxf:Python处理DXF文件的终极指南
  • 工业点云必须跨过的三道生死关(噪声鲁棒性|多视角一致性|亚毫米级重复精度):一份被17家制造企业联合采纳的校准白皮书
  • 2026年宁波GEO优化与短视频引流:5大服务商实战对比与中小企业选购攻略 - 精选优质企业推荐官
  • 2026年宁波中小企业GEO搜索优化与短视频代运营深度横评:官方对接指南 - 精选优质企业推荐官
  • 高校科技成果转化难怎么办?
  • Day06-08.CNN概述介绍
  • 软件装饰器管理中的功能增强链
  • 自然语言生成解码算法的数学本质与优化实践
  • 【AI】cursor使用小技巧
  • 2026年宁波短视频代运营与GEO优化:中小企业同城竞争突破指南 - 精选优质企业推荐官
  • 洛阳熟牛肉哪个好吃?众源牛肉实测推荐,本地人都认可的靠谱选择 - 中媒介
  • Git报错救星:手把手教你用VSCode内置终端和Git Graph插件优雅解决‘pathspec’匹配失败
  • 国内免费玩转ClaudeCode
  • ChatGPT机器翻译实战:提示工程与参数调优指南
  • 华硕笔记本终极轻量级控制指南:如何用G-Helper完全替代Armoury Crate
  • 2026年4月西安成人礼服装租赁/约会服装租赁/订婚服装租赁/答谢宴礼服租赁/出阁服装租赁哪家好 - 2026年企业推荐榜
  • 2026年4月西安婚纱照/高级感婚纱照/氛围感婚纱照/电影感婚纱照/森系婚纱照公司哪家好 - 2026年企业推荐榜
  • 智能体工厂:从零构建AI智能体的工程化框架与实践
  • GSE高级宏编译器完整指南:3.2.26版本终极解决方案
  • 政府如何实现区域科技资源的高效整合与共享?
  • 2026执医考试哪个模拟试卷押题准?最新调研来了 - 医考机构品牌测评专家
  • 2026宁波短视频代运营与GEO优化完全指南:5大服务商深度横评 - 精选优质企业推荐官