“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
gcc -o myapp myapp.c -L/path/to/lib -lexample
- 运行时系统通过环境变量
LD_LIBRARY_PATH
指定搜索路径,或者通过 /etc/ld.so.conf
配置。
区别于其他库文件
文件类型 | 作用与特点 |
---|
.so | Linux共享库,动态链接,运行时加载 |
.a | 静态库,编译时链接,打包进可执行文件 |
.dll | Windows动态链接库 |
.dylib | macOS动态链接库 |
小结
.so
文件是 Linux/Unix 系统动态链接库的标准格式。
- 方便程序模块化开发和运行时共享代码。
- 动态加载减少内存占用和可执行文件体积。
- 是系统和第三方库广泛采用的共享库形式。
发表回复