位置: 编程技术 - 正文

Linux Ldd命令介绍及使用方法(linux ldt)

发布时间:2024-02-26

推荐整理分享Linux Ldd命令介绍及使用方法(linux ldt),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux ldt,linux ldd命令详解,linux中ld,linux的ldd命令,linux的ldd命令,linux中ldd的用法,linux ld 命令,linux ldd命令详解,内容如对您有帮助,希望把文章链接给更多的朋友!

Linux Ldd参数说明:--version  打印ldd的版本号-v --verbose  打印所有信息,例如包括符号的版本信息-d --data-relocs  执行符号重部署,并报告缺少的目标对象(只对ELF格式适用)-r --function-relocs  对目标对象和函数执行重新部署,并报告缺少的目标对象和函数(只对ELF格式适用)--help 用法信息如果命令行中给定的库名字包含'/',这个程序的libc5版本将使用它作为库名字;否则它将在标准位置搜索库。运行一个当前目录下的共享库,加前缀"./"。错误:ldd不能工作在a.out格式的共享库上。ldd不能工作在一些非常老的a.out程序上,这些程序在支持ldd的编译器发行前已经创建。如果你在这种类型的程序上使用ldd,程序将尝试argc = 0的运行方式,其结果不可预知。例如:ldd /bin/bash但是ldd本身不是一个程序,而仅是一个shell脚本:$ which ldd/usr/bin/ldd$ file /usr/bin/ldd /usr/bin/ldd: Bourne-Again shell script text executableldd命令其实是依靠设置一些环境变量而实现的(也就是说ldd的作用只是设置一些环境变量的值)如:LD_TRACE_LOADED_OBJECTS只要设置其值非空即可。$ export LD_TRACE_LOADED_OBJECTS=1$ ls /usrlinux-gate.so.1 => (0xb7fac)librt.so.1 => /lib/tls/i/cmov/librt.so.1 (0xb7f)libselinux.so.1 => /lib/libselinux.so.1 (0xb7f)libacl.so.1 => /lib/libacl.so.1 (0xb7f)libc.so.6 => /lib/tls/i/cmov/libc.so.6 (0xb7e0d)libpthread.so.0 => /lib/tls/i/cmov/libpthread.so.0 (0xb7df)/lib/ld-linux.so.2 (0xb7fad)libdl.so.2 => /lib/tls/i/cmov/libdl.so.2 (0xb7df)libattr.so.1 => /lib/libattr.so.1 (0xb7dea)撤销该环境变量,ls即又可以恢复正常使用:$ unset LD_TRACE_LOADED_OBJECTS$ ls /usr/bin games include lib lib lib local sbin share src XR6更多的环境变量:1、LD_TRACE_LOADED_OBJECTS2、LD_WARN3、LD_BIND_NOW4、LD_LIBRARY_VERSION5、LD_VERBOSE6、LD_DEBUGldd默认开启的环境变量是:LD_TRACE_LOADED_OBJECTS=1其他的变量(和值)分别对应一些选项:-d, --data-relocs -> LD_WARN=yes-r, --function-relocs ->LD_WARN和LD_BIND_NOW=yes-u, --unused -> LD_DEBUG="unused"-v, --verbose -> LD_VERBOSE=yesLD_TRACE_LOADED_OBJECTS为必要环境变量,其他视具体情况。ldd命令的本质是执行了:/lib/ld-linux.so.* 我们可以从以上的内容中(ls /usr中)发现:/lib/ld-linux.so.2 (0xb7fad)。$ ls -l /lib/ld-linux.so.* lrwxrwxrwx 1 root root 9 -- : /lib/ld-linux.so.2 -> ld-2.9.so刚编译后的文件可能是:/lib/ld.so。如果是libc5则是/lib/ld-linux.so.1, 而glibc2应该是/lib/ld-linux.so.2。$ /lib/ld-linux.so.2 --list /bin/lslinux-gate.so.1 => (0xb)librt.so.1 => /lib/tls/i/cmov/librt.so.1 (0xb)libselinux.so.1 => /lib/libselinux.so.1 (0xbd)libacl.so.1 => /lib/libacl.so.1 (0xb)libc.so.6 => /lib/tls/i/cmov/libc.so.6 (0xb7eb)libpthread.so.0 => /lib/tls/i/cmov/libpthread.so.0 (0xb7e)/lib/ld-linux.so.2 (0xb)libdl.so.2 => /lib/tls/i/cmov/libdl.so.2 (0xb7e)libattr.so.1 => /lib/libattr.so.1 (0xb7e8e)我们可以看到以上等同于ldd ls。ldd可以获得的共享库文件,其实是通过读取ldconfig命令组建起来的文件(/etc/ld.so.cache)。默认的共享库文件搜索/lib优先于/usr/lib,而且也只有这个2个目录。如果想要加入其他路径,则需要通过ldconfig命令配置相关文件。一般ld-linux.so会按照以下顺序搜索共享库:1、DT_RPATH或DT_RUNPATH段2、环境变量LD_LIBRARY_PATH3、/etc/ld.so.cache文件中的路径,但如果可执行程序在连接时候添加了-z nodeflib选项,则跳过。4、默认路径/lib和/usr/lib,但如果添加了-z nodeflib,则跳过。以下是其它网友的补充:

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 --help)

  名称 ldd - 打印共享库的依赖关系

  大纲 ldd [选项]... 文件...

  描述 ldd 输出在命令行上指定的每个程序或共享库需要的共享库。

  选项

Linux Ldd命令介绍及使用方法(linux ldt)

  --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的运行方式,其结果不可预知。

linux怎么删除文件夹?Linux删除文件夹命令 linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm-rf命令即可。直接rm就可以了,不过要加两个参数

个检查Linux是否被入侵的方法 本文给大家收集整理了一些审查Linux系统是否被入侵的方法,这些方法可以添加到你运维例行巡检中。1.检查帐户复制代码代码如下:#less/etc/passwd/pp#grep:0:

Linux宕机最安全的重启方法(你肯定不知道) Linux内核虽然号称不死族,几乎不会崩溃或者死机,但是特殊情况下,还是有一定几率会宕机的。因为Linux广泛用于生产环境,所以每一次宕机都会引起

标签: linux ldt

本文链接地址:https://www.jiuchutong.com/biancheng/357051.html 转载请保留说明!

上一篇:Linux系统安全:系统优化及安全配置详细介绍(Linux系统安全管理的内容包括)

下一篇:linux怎么删除文件夹?Linux删除文件夹命令(Linux怎么删除文件第一行)

  • 什么情况下可以领取失业保险金
  • 劳务公司一般纳税人可以抵扣进项税吗
  • 印花税计算是含增值税吗
  • 契税印花税会计怎么做账务处理
  • 交易性金融资产有哪些
  • 普通发票被作废的话财务会发现吗
  • 汇算清缴的费用会计怎么做账
  • 个人如何对公账户汇款
  • 企业处置固定资产
  • 销售发票的会计处理
  • 工会经费拨缴是什么意思
  • 土地增值税清算利息扣除规定
  • 通用定额发票属于哪一类
  • 旅行社差额征收怎么做账
  • 政府给予的工业支出
  • 单位食堂油烟管道清洗记录表
  • 小企业会计准则和企业会计准则的区别
  • 消费税价外费用的计算
  • 退休人员是否还继续享受社保
  • 建筑企业预交增值税税务筹划案例
  • 会计七月份忙吗
  • 纳税人提供植物油的税率
  • 本月无收入怎样申报?
  • mac更新系统版本
  • 腾讯电脑管家中的软件市场打不开
  • 对某公司的了解
  • 苹果电脑快速启动键是哪个
  • 深度优先python
  • 利息收入增值税确认时点
  • 固定资产当月出售还要计提折旧吗
  • 房产税的纳税申报与处理会计分录
  • 个人所得税申报流程图
  • php PATH_SEPARATOR判断当前服务器系统类型实例
  • 售后租回怎么理解
  • python猜数字1到1000代码
  • 校验码如何查询
  • 出纳各种费用如何归类
  • 预缴税款为什么不能跨月申报
  • 产品售后维修费放在什么会计科目核算
  • 出纳对现金的收付应该怎么做
  • 织梦官方网站
  • mongodb用户权限
  • vue前端页面设计
  • 支付宝付款,对方能看见是花呗还是银行卡么
  • sqlserver复制需要有实际的服务器名称
  • 利润表中本期金额是什么意思
  • 扣缴个人所得税报告表
  • 申请到了专利费多少钱
  • 视同销售要以什么顺序确定销售额?
  • 固定资产折旧方法不考虑净残值
  • 结转公允价值变动
  • 市场营销策划开票品目
  • 企业应如何降低消费者
  • 什么企业属于小型微利企业
  • mysql怎么复制粘贴语句
  • 隔离模块与隔离模块如何连接?
  • win10右键菜单自定义
  • 如何自己解封微信号呢
  • dos命令 新建文件
  • win8打开桌面
  • linux的sh
  • linux系统中的链接文件主要分为两种
  • windows 命令行 ftp
  • windows如何禁用程序
  • Centos 6.5 64位双网卡绑定教程
  • win7与xp双系统设置
  • 宏基win8改win7
  • 调用perl脚本
  • opengl入门教程
  • Node.js中的全局变量有哪些
  • vue music
  • js中计时器怎么写
  • 整理的什么
  • android获取meid
  • 第五章推动经济高质量发展心得
  • 契税减免优惠政策2023年最新
  • 电子普通发票怎么查验真伪
  • 国家税务总局一个月多少钱
  • 财税库银是什么费用
  • 2021年河南医保
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号