0

0

linux如何查看动态库依赖_Linux使用ldd命令查看依赖【开发】

冰火之心

冰火之心

发布时间:2026-02-16 14:38:02

|

374人浏览过

|

来源于php中文网

原创

ldd命令用于查看elf文件的动态库依赖关系:输入ldd /path/to/file可显示所需共享库及系统解析路径,缺失时标“not found”;需注意权限、ld_library_path配置、虚假依赖识别,并可用readelf或objdump辅助验证。

linux如何查看动态库依赖_linux使用ldd命令查看依赖【开发】

如果您需要检查某个可执行文件或共享库所依赖的动态链接库,Linux 系统提供了专门用于显示动态依赖关系的工具。以下是使用 ldd 命令查看动态库依赖的具体操作方法:

一、基本用法:使用 ldd 查看单个文件的依赖

ldd 命令通过读取目标文件的动态段(.dynamic)信息,列出其运行时所需的共享库及其路径。该命令不修改文件,仅进行只读分析。

1、打开终端,确保目标文件具有可执行权限或为合法的 ELF 共享对象。

2、输入命令:ldd /path/to/binary_or_so,其中 /path/to/binary_or_so 替换为实际路径。

3、观察输出中以“=>”分隔的两列:左侧为依赖库名称,右侧为系统解析到的实际路径;若显示 not found,表示该库未被定位。

二、处理无执行权限或非标准路径下的文件

当目标文件缺少执行权限,或位于非标准目录且未配置 LD_LIBRARY_PATH 时,ldd 可能无法正确解析部分依赖。此时需临时调整环境变量以辅助解析。

1、临时设置库搜索路径:LD_LIBRARY_PATH="/custom/lib:/usr/local/lib" ldd /path/to/file

2、确认自定义路径中存在对应 .so 文件,例如 ls -l /custom/lib/libxyz.so

3、避免使用 root 权限运行 ldd 分析不可信文件,因其可能触发恶意共享库的初始化代码。

三、识别缺失依赖与虚假依赖

ldd 输出中出现 not found 表示链接器在当前环境无法定位该库;而某些情况下,ldd 可能误报“found”但实际加载失败,需结合其他工具交叉验证。

1、对疑似缺失的库名,使用 find /lib* /usr/lib* -name "libxxx.so*" 2>/dev/null 搜索系统。

2、使用 readelf -d /path/to/file | grep NEEDED 提取原始依赖项列表,绕过 ldd 的运行时解析逻辑。

3、比对 readelf 与 ldd 输出差异,确认是否存在因版本号不匹配导致的解析失败,例如需要 libabc.so.2 但仅安装了 libabc.so.1

四、替代方案:使用 objdump 查看动态段信息

objdump 是 GNU Binutils 组件之一,可直接解析 ELF 文件结构,适用于 ldd 不可用或需深度分析场景。

1、运行命令:objdump -p /path/to/file | grep NEEDED,提取所有 DT_NEEDED 条目。

2、获取更详细动态节信息:objdump -x /path/to/file | grep -A 5 "Dynamic Section"

3、注意 objdump 不执行库路径解析,仅展示编译时声明的依赖名称,不包含实际路径或是否可加载状态。

五、检测依赖树完整性:递归验证所有间接依赖

单一 ldd 输出仅显示一级依赖,若需确认整个依赖链是否完整(包括各依赖库自身所依赖的库),需手动或脚本化展开。

1、保存主文件依赖:ldd /path/to/main > deps.txt

2、从 deps.txt 中提取所有 “=>” 后的有效路径,过滤掉空白行和 system-supplied 行。

3、对每个提取出的 .so 路径再次执行 ldd $so_path,检查其是否也存在 not found 条目。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

244

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

746

2024.03.01

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1520

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

714

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

300

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

791

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

584

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

560

2023.07.20

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

283

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.2万人学习

Git 教程
Git 教程

共21课时 | 3.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号