1、首先ldd不是一个可执行程序,而只是一个shell脚本
2、ldd能够显示可执行模块的dependency,其原理是通过设置一系列的环境变量,如下:LD_TRACE_LOADED_OBJECTS、LD_WARN、LD_BIND_NOW、LD_LIBRARY_VERSION、 LD_VERBOSE等。当LD_TRACE_LOADED_OBJECTS环境变量不为空时,任何可执行程序在运行时,它都会只显示模块的 dependency,而程序并不真正执行。要不你可以在shell终端测试一下,如下:
(1) export LD_TRACE_LOADED_OBJECTS=1
(2) 再执行任何的程序,如ls等,看看程序的运行结果
3、ldd显示可执行模块的dependency的工作原理,其实质是通过ld-linux.so(elf动态库的装载
器)来实现的。我们知道,ld-linux.so模块会先于executable模块程序工作,并获得控制权,因此当上述的那些环境变量被设置时,ld-linux.so选择了显示可执行模块的dependency。
4、实际上可以直接执行ld-linux.so模块,如:/lib/ld-linux.so.2 --list program(这相当于ldd program)

名称 ldd - 打印共享库的依赖关系
大纲 ldd [选项]... 文件...
描述 ldd 输出在命令行上指定的每个程序或共享库需要的共享库。
选项
--version
打印ldd的版本号
-v --verbose
打印所有信息,例如包括符号的版本信息
-d --data-relocs
执行符号重部署,并报告缺少的目标对象(只对ELF格式适用)
-r --function-relocs
对目标对象和函数执行重新部署,并报告缺少的目标对象和函数(只对ELF格式适用)
--help 用法信息
注意:
ldd的标准版本与glibc2一起提供。Libc5与老版本以前提供,在一些系统中还存在。在libc5版本中长选项不支持。另一方面,glibc2版本不支持-V选项,只提供等价的--version选项。
如果命令行中给定的库名字包含'/',这个程序的libc5版本将使用它作为库名字;否则它将在标准位置搜索库。运行一个当前目录下的共享库,加前缀"./"。
错误:
ldd不能工作在a.out格式的共享库上。

ldd不能工作在一些非常老的a.out程序上,这些程序在支持ldd的编译器发行前已经创建。如果你在这种类型的程序上使用ldd,程序将尝试argc = 0的运行方式,其结果不可预知。

imple introduction to LDD相关推荐

  1. 【读书笔记0101】Beginning linux programming-3rd

    Introduction: 相比LDD这本书似乎非常不知名,甚至他连unix基础编程的知名度也不如,但是, 这本书非常适合完全没有任何linux经验的newbie, 书中按照作者的思路娓娓道来, 小到 ...

  2. Introduction to CMake by Example

    Introduction This article provides a straightforward set of "Hello World!" introductions t ...

  3. An Introduction to GCC - 2 Compiling a C program (编译 C 程序)

    An Introduction to GCC - 2 Compiling a C program (编译 C 程序) for the GNU Compilers gcc and g++ Brian G ...

  4. Blender 3.0基础入门学习教程 Introduction to Blender 3.0

    成为Blender通才,通过这个基于项目的循序渐进课程学习所有主题的基础知识. 你会学到什么 教程获取:Blender 3.0基础入门学习教程 Introduction to Blender 3.0- ...

  5. 网络增强现实开发简介 Introduction to Web AR development

    搭配webXR.mindAR.three.js和tensorflow.js 你会学到: 获得构建不同类型的网络增强现实应用程序的实践经验,包括图像效果.人脸效果和世界效果 获得关于增强现实如何在网络浏 ...

  6. ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush

    ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush ...

  7. 视频色彩校正简介 Introduction to Video Color Correction

    视频色彩校正简介 Introduction to Video Color Correction 视频色彩校正简介 Introduction to Video Color Correction MP4 ...

  8. readelf和ldd分析elf文件

    1. elf 文件格式 linux系统中,gcc编译器编译出的object文件.可执行文件都属于elf文件. elf文件由三个部分组成:elf header.program headers|secti ...

  9. [转]Introduction of iSCSI Target in Windows Server 2012

    Introduction of iSCSI Target in Windows Server 2012 源地址:http://blogs.technet.com/b/filecab/archive/2 ...

  10. MS UI Automation Introduction

    MS UI Automation Introduction 2014-09-17 MS UI Automation是什么 UIA架构 UI自动化模型 UI自动化树概述 UI自动化控件模式概述 UI 自 ...

最新文章

  1. 上传图片时,图片大小不一,设置宽高,图片拉伸,如何处理呢,我来告诉你...
  2. python to_excel新增sheet_Python使用xlrd和xlwt读写Excel的简单用法
  3. SSM:web目录下有的jsp和图片不能显示,有的可以显示的解决方法
  4. jpa 自定义sql if_跟飞哥学编程:SQL入门-:函数、存储过程和触发器
  5. 小强升职记思维导图_你学会用 “思维导图” 学英语了吗?
  6. 手把手教你封装一个自己的数据库框架~
  7. 给ListView视图添加行号
  8. redhat linux 7 ntp,技术|RHCE 系列(十):在 RHEL/CentOS 7 中设置 NTP(网络时间协议)服务器...
  9. linux系统下idea打包apk教程,intellij idea14打包apk文件和查看sha1值
  10. 用过http api 发送邮件
  11. 车规SoC芯片厂商征战功能安全,谁是最佳助力者?
  12. 模电笔记1 | 信号的放大与分贝计算
  13. 干货!底层视觉研究,我们应该往哪里走?
  14. yolov5测试单张图片
  15. 期货权益可用资金(期货的权益和可用资金)
  16. 阿里云大数据平台的实操:ODPS的SQL语句
  17. 高炉煤气净化提质技术及发展趋势浅谈
  18. BA_重投影误差e对于相机的位姿ξ和对空间点的坐标P的雅可比矩阵的推导
  19. 如何替换 JavaScript 中所有出现的字符串
  20. 手机威客php源码,最新威客众筹系统完整版PHP源码+支持支付宝和微信多种支付方式+PC+WAP+微信三端数据同步...

热门文章

  1. 下行法求最小割集案例_故障树中最小割集和最小径集的改进算法
  2. excel汇总报表软件
  3. 有哪些需要不得不知的ASO的两种优化技巧
  4. 到底该如何看待“东数西算”?
  5. 一句话说明白IRQL
  6. Apache Flink®极简教程: 架构及原理 Stateful Computations over Data Streams
  7. l2tp 服务器错误 741
  8. java开发坦克大战小游戏
  9. Word中使用表格排版公式时,表格内序号纵向居中的问题。
  10. 领你走进10位管理大师的思想境界