ldd 查看执行文件的依赖
最后更新于:2022-04-02 03:49:53
[TOC]
## demo
```
[root@localhost ]# ldd /bin/php
linux-vdso.so.1 => (0x00007ffee6b32000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f55858de000)
...
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f5580860000)
```
> 1. ldd 必须指定到准确路径
> 2. 没有找到依赖时,会出现 not found
## 动态库的查询顺序
1. ELF可执行文件中动态段中DT_RPATH所指定的路径,不常用但是比较使用的方法;
2. 编译目标代码时指定的动态库搜索路径(-WI,-rpath=./);
3. 环境变量LD_LIBRARY_PATH指定的动态库搜索路径(常用);
4. 配置文件/etc/ld.so.conf(或ld.so.cache)中指定的动态库搜索路径;
5. 默认的动态库搜索路径/lib;
6. 默认的动态库搜索路径/usr/lib。
在上述1-3中指定的动态库搜索路径都可以指定多个搜索目录,其先后顺序是按指定路径的先后顺序搜索的。如果动态库之间存在依赖关系,那么先加载那些被依赖的动态库
';