位置: 编程技术 - 正文

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

  • 普通发票作废要收回吗
  • 消费税的计算方法有哪三种
  • 不是公司员工可以举报公司不交社保吗
  • 关联交易金额是付款还是入账
  • 应征增值税不含税销售额(3%征收率)怎么填2020年
  • 合伙人没有账目就说赔了合法吗
  • 员工福利费可以公账出吗
  • 事业单位缴纳增值税标准
  • 加计扣除退回的所得税怎么做账
  • 资产处置收益结转损益
  • 信用卡产生滞纳金
  • 税务管理相关知识
  • 企业所得税如何申报操作
  • 出口业务增值税免抵税额
  • 建筑企业甲供材税收筹划
  • 增值税普通发票有什么用
  • 公司的企业所得税和个人所得税
  • 文化事业建设费税收优惠政策2023
  • 怎么计算房地产公司可以贷款多少
  • 房地产预收房款怎么开票
  • 注册资金印花税什么时候开始交
  • 给员工发放购物卡交个税吗
  • 母公司向全资子公司划转土地
  • 小企业流动资产一般是多少
  • 留存收益会计科目编号
  • 处理废料会计分录大全
  • 股权处置的形式
  • dghm.exe是什么程序
  • msmpeng.exe 是什么
  • 开发商自用房产出售成为二手房土地成本
  • 领用包装物会计科目
  • 电汇款项会计分录
  • 竣工工程成本核算
  • php生成xml文件
  • 如何解决php使用延迟问题
  • 计提消费税的会计科目
  • 编译redis报错
  • 销售金额较大多少算较大
  • 未完待续百度百科
  • python 如何学
  • vue新手教程
  • 商业折扣,现金折扣,销售折让的核算特点
  • 金税盘开票如何增加商品编码
  • sql server基本
  • 公司账务不正规,账务外包的,财务助理有风险吗
  • 毛利润和纯利润
  • 上个月开的票这个月能用吗
  • 小规模发票跨月冲红怎么纳税申报
  • 应收帐款周转率计算公式为
  • 建设期利息有哪些
  • 以前年度损益科目类别怎么填
  • 福利费可以直接发钱吗
  • 工会经费的减除项是什么
  • 小规模纳税人中标一般计税
  • 公对公转账多久能到账
  • sql server在表里查找具体数据
  • mysql常用功能
  • sql ntext数据类型字符替换实现代码
  • 找回未保存的cad文件
  • centos如何更新内核
  • 电脑网页字体设置
  • windows10的便签纸在哪
  • win10开机自动启动软件怎么设置
  • linux查看开机运行时间
  • 查看电脑是否可以装两个固态
  • android开发工程师案例教程源码
  • cocos2dx开发的游戏有哪些
  • android真机调试闪退
  • vue-cal
  • JavaScript获取网址之后跳转
  • 网页上面的收藏夹显示
  • js能实现的简单效果
  • python 举例
  • 12333医保缴费具体步骤
  • 副局长哪里任命
  • 社保欠费税务催缴
  • 法治税务宣传标语
  • 地税局和税务局一样吗
  • 体育局和什么局合并了
  • 纳税服务理念2023
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设