关于Linux gcc中的 LIBRARY_PATH 和 LD_LIBRARY_PATH 参数说明
下面摘取了两篇较权威的说明资料:
- GNU 上关于LIBRARY_PATH的说明
LIBRARY_PATH |
- man7 上关于LD_LIBRARY_PATH的说明
LD_LIBRARY_PATH |
- StackOverflow 上关于 LIBRARY_PATH 和 LD_LIBRARY_PATH 的解释更直白
LIBRARY_PATH is used by gcc before compilation to search for directories containing libraries that need to be linked to your program. |
总结
关于 LIBRARY_PATH 和 LD_LIBRARY_PATH 的关系,总结如下。
- Linux gcc编译链接时的动态库搜索路径
GCC编译、链接生成可执行文件时,动态库的搜索路径顺序如下 |
注意不会递归性地在其子目录下搜索!
- 链接生成二进制可执行文件后,在运行程序加载动态库文件时,搜索的路径顺序如下
- 编译目标代码时指定的动态库搜索路径:用选项-Wl,rpath和include指定的动态库的搜索路径,比如gcc -Wl,-rpath,include -L. -ldltest hello.c,在执行文件时会搜索路径`./include`; |
- Linux GCC默认的动态库搜索路径可以通过 ld –verbose 命令查看:
[genewiznj@njgate01 picrust]$ ld --verbose |grep -i search_dir |