“so 文件”是 Linux/Unix 系统下常见的一种共享库文件,全称是 Shared Object 文件。它相当于 Windows 下的 DLL(动态链接库)文件,用于存放程序运行时动态调用的代码和数据。


什么是 .so 文件?

  • 文件扩展名.so(Shared Object)
  • 作用:提供可被多个程序共享使用的函数或资源库,支持动态链接。
  • 用途:避免程序重复包含相同代码,节省内存,提高代码复用和模块化。
  • 动态链接:程序运行时根据需要加载 .so 文件,而不是静态链接进可执行文件,方便更新和维护。

.so 文件的特点

特点说明
动态链接库程序运行时动态加载,减小可执行文件体积
可共享多个程序同时使用同一个 .so 文件,节省系统资源
可版本管理可以同时存在不同版本的 .so,便于程序兼容不同版本库
通常位于系统目录例如 /lib/usr/lib,也可以自定义路径
支持延迟加载程序可以在运行时按需加载,提高启动速度

生成和使用

  • .so 文件一般通过编译器(如 gcc)用 -shared 参数编译生成,例如:
gcc -shared -fPIC -o libexample.so example.c
  • 程序编译时链接 .so 文件:
gcc -o myapp myapp.c -L/path/to/lib -lexample
  • 运行时系统通过环境变量 LD_LIBRARY_PATH 指定搜索路径,或者通过 /etc/ld.so.conf 配置。

区别于其他库文件

文件类型作用与特点
.soLinux共享库,动态链接,运行时加载
.a静态库,编译时链接,打包进可执行文件
.dllWindows动态链接库
.dylibmacOS动态链接库

小结

  • .so 文件是 Linux/Unix 系统动态链接库的标准格式。
  • 方便程序模块化开发和运行时共享代码。
  • 动态加载减少内存占用和可执行文件体积。
  • 是系统和第三方库广泛采用的共享库形式。