静态库与动态库链接、执行时的搜索路径顺序
静态库链接时搜索路径顺序
- ld会去找GCC命令行中的参数-L的目录中是否有该静态库;
- 再去找GCC的环境变量LIBRARY_PATH
- 再找内定目录/lib、/usr/lib、/usr/local/lib夏是否有该链接库,这是当初compile gcc的时候确定的
动态库链接时、执行时搜索路径顺序
- 编译目标代码时指定的动态库搜索路径;-Wl,-rpath=./(运行时) -L(编译连接时)
- 环境变量LD_LIBRARY_PATH(运行时), LIBRARY_PATH(连接时)指定的动态库搜索路径;
- 配置文件/etc/ld.so.conf中指定的动态库搜索路径;
- 默认的动态搜索路径/lib;
- 默认的动态库搜索路径/usr/lib
参考资料:
- GCC工作过程以及动态库静态库链接
- Linux动态库相关知识整理