ubuntu 查看动态库依赖

在 Ubuntu 系统中,查看动态库(共享库)依赖的常用方法如下:


1. 使用 ldd 命令

ldd 是最直接的命令,用于显示可执行文件或共享库的依赖关系:

ldd /path/to/your/executable_or_library

示例输出

linux-vdso.so.1 (0x00007ffd8a1e0000)
libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f8d3a1b0000)
libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f8d39d60000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8d39b60000)

注意

  • ldd 会实际尝试加载库,可能存在安全风险(尤其是处理不可信文件时)。
  • 如果库未找到,会显示 not found

2. 使用 objdump 查看详细信息

objdump 可以提取二进制文件的元数据,包括依赖库:

objdump -p /path/to/your/executable_or_library | grep NEEDED

示例输出

NEEDED libssl.so.1.1
NEEDED libcrypto.so.1.1
NEEDED libc.so.6

3. 使用 readelf 工具

readelf 是更底层的工具,适合查看 ELF 文件的详细信息:

readelf -d /path/to/your/executable_or_library | grep 'NEEDED'

示例输出

0x0000000000000001 (NEEDED) Shared library: [libssl.so.1.1]
0x0000000000000001 (NEEDED) Shared library: [libcrypto.so.1.1]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]

4. 树状依赖关系:lddtree(推荐)

lddtree 来自 pax-utils 包,可以以树状结构显示依赖关系:

# 安装工具
sudo apt install pax-utils


# 查看依赖树
lddtree /path/to/your/executable_or_library

示例输出

executable => /usr/bin/executable (interpreter => /lib64/ld-linux-x86-64.so.2)
    libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1
        libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1
            libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6

5. 处理库缺失问题

如果 ldd 显示 not found,可能是以下原因:

  • 库未安装:使用 apt search <libname> 查找并安装。
  • 库路径未配置:通过 LD_LIBRARY_PATH 临时添加路径:
    
    

    export LD_LIBRARY_PATH=/custom/lib/path:$LD_LIBRARY_PATH

  • 更新库缓存:运行 sudo ldconfig

6. 高级调试

  • 查看动态链接器日志

    LD_DEBUG=libs /path/to/executable 2> debug.log

    日志会记录详细的库加载过程。

  • 检查运行时加载的库

    strace -e openat /path/to/executable 2>&1 | grep '\.so'

总结

  • 快速查看依赖:ldd 或 lddtree
  • 详细元数据:objdump -p 或 readelf -d
  • 修复缺失库:安装软件包或配置路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值