ldd命令

Posted zakzhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ldd命令相关的知识,希望对你有一定的参考价值。

ldd命令

?? Written by Zak Zhu

参考

命令简介

ldd命令:

  • 查看二进制文件或库文件所依赖的动态库列表.
  • 常用于解决程序因缺少某个库文件而不能运行的一些问题.

命令语法

Usage:

ldd [OPTION]... FILE...

Options:

OPTION COMMENT
-v 详细信息模式, 打印所有相关信息
-u 打印未使用的直接依赖
-d 执行重定位和报告任何丢失的对象
-r 执行数据对象和函数的重定位, 并且报告任何丢失的对象和函数

命令原理

  1. ldd命令不是一个可执行程序(二进制文件), 而是一个Shell脚本.

    技术图片

  2. ldd命令其实时依靠设置一些环境变量而实现的. 如: LD_TRACE_LOADED_OBJECTS, LD_WARN, LD_BIND_NOW, LD_LIBRARY_VERSION, LD_VERBOSE, LD_DEBUG. LD_TRACE_LOADED_OBJECTS环境变量不为空时, 任何命令在运行时, 它都只显示该命令所依赖的动态库列表, 而命令本身不真正执行.我们可以测试一下, 如下图所示:

    技术图片

  3. ldd命令显示可执行模块的dependency的工作原理, 其实质是通过ld-linux.so来实现的. 我们知道, ld-linux.so模块会先于executable模块程序工作, 并获得控制权, 因此当上述的那些环境变量被设置时, ld-linux.so选择了显示可执行模块的dependency.

  4. 实际上可以直接执行ld-linux.so模块, 如: /lib/ld-linux.so.2 --list program等同于ldd program.

    技术图片

以上是关于ldd命令的主要内容,如果未能解决你的问题,请参考以下文章

ldd命令

诡异的程序消失之谜

linux命令:chroot ldd init系统启动流程,修改启动背景图

跟kernel相关的命令和几个内核参数

异常强大的linux下查看符号信息的命令:ldd,nm,readelf,ar,objdump

UBUNTU 16.04 下安装动态链接库方法(使用ln命令可以随意映射动态库,ldd查看缺少的动态库)