静态库与动态库链接、执行时的搜索路径顺序
静态库链接时搜索路径顺序
- 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动态库相关知识整理
本文详细阐述了在Linux环境下,静态库与动态库在链接及执行时的搜索路径顺序。对于静态库,链接器ld首先查找GCC命令行参数-L指定的目录,接着是环境变量LIBRARY_PATH定义的路径,最后是预设的/lib、/usr/lib和/usr/local/lib目录。而动态库则主要依赖于编译时的-rpath和-L选项、运行时的LD_LIBRARY_PATH环境变量、配置文件/etc/ld.so.conf以及默认的/lib和/usr/lib路径。
3763

被折叠的 条评论
为什么被折叠?



