动态库运行时搜索顺序
1.LD_PRELOAD
LD_PRELOAD是一个环境变量,用于动态库加载,动态库加载的优先级最高;
2.-wl,-rpath
编译目标代码时指定的动态库搜索路径(指的是用-wl,-rpath),readelf -d 命令可以查看编译的目标文件中rpath的路径;
-L指定编译时的链接路径,-Wl,-rpath指定运行时链接路径;
3.LD_LIBRARY_PATH
LD_LIBRARY_PATH是一个环境变量,该环境变量主要用于指定查找动态库时除了默认路径之外的其它路径;
export LD_LIBRARY_PATH=$(pwd)
./EXE #EXE为执行文件
或
LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ./EXE
4.配置文件/etc/ld.so.conf中指定的动态库搜索路径
配置文件修改完成后,使用ldconfig命令会将/etc/ld.so.conf文件中所有路径下的库更新到内存中
5.默认动态库路径搜索路径:/lib
6.默认动态库路径搜索路径:/usr/lib
编译时查找库的搜索路径
1.编译时使用-L指定库的路径,通过环境变量LIBRARY_PATH指定搜索路径;
2.系统标准路径/lib /usr/lib /usr/local/lib;