Linux工具 - LDD查看程序依赖库

2019-04-23 11:27 By "Powerless" 2706 0 1

【例】查看test程序运行所依赖的库:

[root@wzxaini9 ~]# ldd test
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000039a7e00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003996400000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000039a5600000)
libc.so.6 => /lib64/libc.so.6 (0x0000003995800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003995400000)

        第一列:程序需要依赖什么库

        第二列: 系统提供的与程序需要的库所对应的库

        第三列:库加载的开始地址

    通过上面的信息,我们可以得到以下几个信息:

        1、通过对比第一列和第二列,我们可以分析程序需要依赖的库和系统实际提供的,是否相匹配

        2、通过观察第三列,我们可以知道在当前的库中的符号在对应的进程的地址空间中的开始位置

    如果依赖的某个库找不到,通过这个命令可以迅速定位问题所在;

    注:ldd不是个可执行程式,而只是个shell脚本; ldd显示可执行模块的dependency的工作原理,其实质是通过ld-linux.so(elf动态库的装载器)来实现的。ld-linux.so模块会先于executable模块程式工作,并获得控制权,因此当上述的那些环境变量被设置时,ld-linux.so选择了显示可执行模块的dependency。


评 论

View in WeChat

Others Discussion

  • 2016年云计算热词
    Posted on 2019-06-12 17:53
  • 能创建多少个 TCP 连接?
    Posted on 2021-08-02 16:00
  • MySQL中的行级锁,表级锁,页级锁
    Posted on 2018-08-25 11:00
  • 投票通过,PHP 8 确认引入 Union Types 2.0
    Posted on 2019-11-18 22:22
  • PHP没你想的那么差
    Posted on 2021-12-17 15:40
  • 通过信鸽来解释HTTPS
    Posted on 2018-10-22 13:56
  • PHP练习-移动数组内的0到最后并保持其他元素顺序不变
    Posted on 2020-08-14 20:32
  • 快速了解Kafka
    Posted on 2021-03-25 14:20