位置: 编程技术 - 正文

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

编辑:rootadmin

推荐整理分享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怎么删除文件第一行)

  • 出口佣金要交税吗
  • 付加工费会计分录怎么做
  • 月末计提无形资产的折旧
  • 全年没有超过起征点需要汇算吗
  • 商场联营扣率
  • 2019年地方各项基金费申报表填写错误要交滞纳金吗
  • 生育津贴需要连续缴纳社保满一年吗
  • 超范围经营如何举报
  • 委托境外研发费用不超过境内符合条件的研发费用
  • 实收资本未完全到账,需要缴纳印花税吗
  • 支付保安公司的钱违法吗
  • 担保公司做担保怎么收费
  • 工会经费向地方税务局缴纳的比例是多少
  • 计提增值税会计账务处理
  • 加油发票税号错误怎么补救
  • 单位互换房产税收优惠政策
  • 季度申报财务报表如何更改
  • 为什么无形资产减值准备一经计提不得转回
  • 未抵扣完的进项税额可以跨年抵扣吗
  • 小微企业增值税优惠政策最新2022
  • 高新企业所得税税率10%
  • 1697510006
  • 解除劳动关系补偿标准
  • win7纯净版系统
  • 在建工程的二级明细的讲解
  • 银行存款日期和起息日期不一样
  • 自己怎么做电脑系统
  • 设备进项抵扣新政策
  • kscreensaverapp.exe是什么
  • 坏账损失的核算方法属于会计政策吗
  • 做电脑配件的公司
  • 跨国公司外汇资金集中
  • php新版本特性
  • 利润表里的所得税费用怎么算出来的
  • 基金公司做销售有前途吗
  • 预提费用的分录
  • linux嵌入式开发教程
  • react_router
  • win11怎么通过ip连接打印机
  • 个体工商户如何注销网上
  • vue如何实现路由跳转缓存
  • 分页 php
  • 车间购买的设备怎么记账
  • 收到预付款发票但是货未到怎么办
  • 小规模未达到起征点申报表怎么填
  • 房租没发票怎么入账
  • 投资性房地产转为存货
  • 软件开发的账务处理
  • 收到股东投资款需要交什么税
  • 如何证明自己是中国人
  • 发票的几种分类
  • 产权转移书据纳税义务时间
  • 公司购入二手车没有发票怎么入账
  • sqlserver批量执行sql脚本
  • mysql 5.6.23 winx64.zip安装详细教程
  • xp电脑开机进入bios怎么办
  • linux临时目录在哪
  • 在xp系统中设置u盘启动
  • crossfire.exe是什么
  • win7系统打开我的电脑一闪
  • win7系统不能安装到此磁盘
  • win8切换输入法无效
  • win7旗舰版完整版下载
  • ubuntu操作
  • windows8的ie浏览器在哪
  • cocos环境搭建
  • jquery实战
  • Error: String types not allowed (at 'layout_gravity' with value 'bottom/center_horizontal').
  • Node.js中的全局变量有哪些
  • shell 数组变量
  • 参数传递的方式有几种?有什么区别?
  • javascript基础书
  • 用javascript
  • cocos2d-x安装
  • jquery编写页面载入事件
  • 专票增额怎么办手续
  • 12366属于哪个部门
  • 四川医保增员网上怎么操作流程图
  • 电子税务局如何解绑办税人员
  • 转让定价调查与调整实务问答
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设