什么是 .so 文件?
.so(Shared Object)是 Linux 系统中的动态链接库文件,类似于 Windows 下的 .dll 文件。它允许多个程序在运行时共享同一份代码,从而节省内存并便于更新维护。
如何创建 .so 文件?
使用 GCC 编译器可以轻松生成共享库:
gcc -fPIC -shared -o libexample.so example.c
-fPIC:生成位置无关代码(Position Independent Code)-shared:指定生成共享库
如何使用 .so 文件?
编译时链接:
gcc -o myapp main.c -L./ -lexample
运行时需确保系统能找到该库,可通过以下方式之一:
- 将
.so文件放入/usr/lib或/lib - 设置环境变量:
export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH - 使用
ldconfig注册库路径
常见问题
- 找不到 .so 文件? 检查
LD_LIBRARY_PATH或使用ldd your_program查看依赖 - 版本冲突? 使用符号链接管理多个版本,如
libexample.so.1 → libexample.so.1.2.3 - 如何动态加载? 使用
dlopen()、dlsym()等函数实现运行时加载