查看进程依赖的库(动态链接库),不同操作系统方法不一样,下面按常见平台给你总结。
ldd(查看可执行文件或库)适合查看程序本身依赖哪些 so 库
ldd /path/to/program
示例:
ldd /bin/ls
输出类似:
libc.so.6 => /lib64/libc.so.6
libselinux.so.1 => /lib64/libselinux.so.1
⚠️ 注意:
ldd 不能安全用于不可信程序pmap(查看运行中进程)适合查看进程当前加载了哪些库
pmap -x <PID>
示例:
pmap -x 1234
可以看到:
cat /proc/<PID>/maps最底层、最准确
cat /proc/1234/maps
或只看库:
cat /proc/1234/maps | grep '\.so'
lsof(查看进程打开的文件)lsof -p <PID>
只看动态库:
lsof -p 1234 | grep '\.so'
pldd(显示进程运行时链接库)pldd <PID>
⚠️ 有些系统可能没有 pldd
otoolotool -L /path/to/program
查看运行中的进程:
vmmap <PID> | grep '\.dylib'
tasklisttasklist /m
查看指定进程:
tasklist /m /fi "PID eq 1234"
下载:
https://learn.microsoft.com/sysinternals/downloads/process-explorer
| 场景 | 推荐方法 |
|---|---|
| 程序启动前分析依赖 | ldd / otool -L |
| 查看运行中进程库 | /proc/PID/maps |
| 快速查看 | pmap / lsof |
| Windows 分析 | Process Explorer |
| 排查缺库问题 | ldd + LD_LIBRARY_PATH |
如果你愿意,可以告诉我:
cannot open shared object)我可以给你更精确的命令。