位置: 编程技术 - 正文

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怎么删除文件第一行)

  • 递延所得税资产和负债怎么理解
  • 什么是纳税地点?
  • 什么是原始凭证?审核原始凭证主要审查哪些内容?
  • 公司提供住宿员工在外居住出现问题
  • 专用增值税发票和普通发票区别
  • 季度利润表格式
  • 股东购买固定资产能算实收资本么
  • 单位发放奖金如何做账
  • 期间费用包括哪三种
  • 企业应收票据贴现给银行所获得的现金计入现金流量表
  • 房租抵扣个税需要提供发票吗
  • 建筑面积包括分摊建筑面积吗
  • 退货的增值税专用发票
  • 事业单位结转结余科目
  • 按工人工资比例结转制造费用的科目
  • 报关单不存在
  • 长期股权投资的明细科目有哪些
  • 营改增后场地租赁税率
  • 私人转公账可以吗
  • 小型微利企业所得税优惠政策
  • 电子发票一定要入账吗
  • 印花税减半征收会计分录怎么做
  • 购买方已抵扣开具红字信息表销售方怎么处理
  • 种子销售公司
  • 合理损耗如何计算单价?
  • 退休职员工伤补助金放哪个科目?
  • hdmi连接电视无法全屏
  • 取得土地所有权范围内的树如何处理
  • 税务退回城建税期末怎么结转
  • php中的函数可以分为哪几种
  • 个人独资企业公账转私账
  • 暂估营业收入会增加吗
  • 华硕win10笔记本如何恢复出厂设置
  • 小规模发票一般怎么开
  • 资本溢价是
  • 在途物资退货会退款吗
  • 有形动产融资租赁税率是多少
  • php简单聊天室源码
  • php循环语句
  • 建筑公司结算会计
  • 增值税专用发票有几联?
  • 施工企业成本费用有哪些方面构成
  • 现金流量表补充资料怎么理解
  • 进项税额转出会造成增值税应纳税额
  • php怎么调用图片
  • python的series
  • 行政单位其他应付款
  • 期末存货资产结存金额
  • 以物易物对企业有什么好处
  • pycharm cant find main
  • 删除python包
  • 酒店周转材料怎么摊销
  • 公司裁员怎么补偿
  • 生产企业的生产许可证
  • 为什么固定资产减值准备一经计提不得转回
  • 酒店没有营业执照开业犯法吗
  • 财政补助结转余额在借方还是贷方
  • 职工工资如何计算天数
  • 固定资产转为投资性房地产的账务处理公允价值
  • 小规模纳税人的认定标准是什么
  • 开发成本六大类
  • 会计证异地可以考吗
  • 开广告费用要交增值税吗
  • 怎样银行存款,预付帐款,应收帐款余额做资金平衡表
  • Ubuntu15下mysql5.6.25不支持中文的解决办法
  • win7怎么启用显卡
  • reminder.exe - reminder是什么进程 有什么用
  • win10关闭metro界面
  • win8如何进入高级启动项模式
  • unityshader怎么用
  • python的模块和包
  • unityproject
  • 备份系统三要素
  • CentOS下mysql定时备份Shell脚本分享
  • js最简单的代码
  • JavaScript中的数据类型
  • 'd:skin' 开头的无效内容。此处不应含有子元素。
  • 重庆地方税务局电子税务局官网
  • 契税和房产税是一回事吗
  • 农副产品营业执照范本
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设