使用ldd命令可查看Linux程序依赖的动态库,定位共享库缺失或版本不匹配问题;通过ldd /path/to/program显示依赖列表,检查是否存在not found条目以识别缺失库;若输出为statically linked则无动态依赖;对未满足依赖的程序,根据提示安装对应库文件或手动放置到系统路径;避免在不可信程序上运行ldd,防止潜在安全风险,建议改用objdump或readelf命令安全分析依赖。

如果您在运行某个Linux程序时遇到共享库缺失或版本不匹配的问题,可以通过查看该程序依赖的动态链接库来定位原因。ldd命令正是用于显示可执行文件所依赖的共享库列表。
本文运行环境:联想ThinkPad X1 Carbon,Ubuntu 24.04
一、使用ldd命令查看程序依赖的动态库
通过ldd命令可以直接输出目标程序加载时所需的全部共享库及其路径,帮助判断是否存在缺失或冲突的库文件。
1、打开终端,输入命令 ldd /path/to/your/program,将路径替换为实际的可执行文件位置。
2、观察输出结果,每一行显示一个依赖库的名称和其在系统中的映射路径;若某库无法找到,则会标注 not found。
二、检查静态链接与动态链接混合情况
某些程序可能部分函数采用静态链接,而其他功能依赖动态库。使用ldd可以识别出是否真正包含动态依赖。
1、执行 ldd /path/to/binary,如果输出显示 statically linked,则说明该程序无动态依赖。
2、若存在动态库条目,则仅这些库需要被跟踪和管理。
三、分析未满足依赖的程序
当程序因缺少特定.so文件而无法启动时,利用ldd可快速识别具体缺失项。
1、运行 ldd ./myapp 检查当前目录下的程序依赖状态。
2、查找标记为 not found 的库名,例如 libcustom.so.1 not found。
3、根据库名安装对应软件包或手动将库文件放置到系统库路径如 /usr/lib 或 /lib/x86_64-linux-gnu/。
四、避免在不可信程序上运行ldd
ldd底层在某些实现中会直接加载程序以解析依赖,在恶意构造的二进制文件上运行可能导致代码执行。
1、对于来源不明的程序,应避免直接使用ldd命令。
2、改用 objdump -p your_program | grep NEEDED 或 readelf -d your_program | grep NEEDED 安全地列出所需库。










