.so 文件(Shared Object)是 Linux 系统中的动态链接库文件,类似于 Windows 下的 .dll 文件。它们允许多个程序共享同一份代码,节省内存并便于更新维护。
1. 什么是 .so 文件?
.so 是“Shared Object”的缩写,用于在运行时被程序动态加载。它通常由 C/C++ 源代码编译生成,广泛应用于系统库(如 libc.so)和第三方软件开发中。
2. 如何生成 .so 文件?
使用 GCC 编译器可以轻松创建共享库:
# 编译为位置无关代码(Position Independent Code)
gcc -fPIC -c libdemo.c
# 生成 .so 文件
gcc -shared -o libdemo.so libdemo.o
3. 如何使用 .so 文件?
- 编译时链接:
gcc -o myapp main.c -L./ -ldemo - 运行时查找路径: 可通过设置
LD_LIBRARY_PATH环境变量指定 .so 所在目录。 - 动态加载: 使用
dlopen()、dlsym()等函数在程序中手动加载。
4. 常见问题
- 运行时报错 “cannot open shared object file”:通常是路径未正确设置。
- 版本冲突:不同程序依赖不同版本的 .so,建议使用符号链接管理。
- 权限问题:确保 .so 文件具有可读和可执行权限。
5. 实用命令
ldd program:查看程序依赖的 .so 文件。nm -D libxxx.so:列出动态符号表。objdump -T libxxx.so:显示动态符号信息。