位置: 编程技术 - 正文

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

  • 长期待摊费用一般指什么
  • 初级会计职称能加多少工资
  • 城建税减半征收政策文件
  • 初级职称经济法目录
  • 税金及附加都包含什么
  • 一般纳税人开普票多少个点
  • 出口托收业务
  • 弱电系统多少钱
  • 员工本地住宿费会计分录
  • 购买土地契税和印花税什么时候交
  • 境外签署合同的效力
  • 无形资产减值损失可以转回吗
  • 过期增值税发票怎么处理
  • 个体工商户所得税税率表
  • 违约金没有发票
  • 一般纳税人预交税款算法
  • 银行缴纳印花税贷款方面哪些可以减免
  • 广告制作需要缴纳文化事业建设税吗?
  • 公司车辆过户给公司需要交哪些税
  • 营业外支出用什么账户
  • 年终奖个人所得税怎么扣
  • 钱已确定收不回怎么办
  • 汇算清缴所得税退回做账
  • 冲红发票会计分录大全
  • 什么是会计科目?为什么要设置会计科目?
  • win10预安装环境
  • 手机word文档怎么加照片
  • 品牌使用费分录
  • word要打印保存在哪个类型
  • 已计提折旧怎么计算
  • 其他应付款年末借方余额
  • 前端数据统计图
  • 审核原始凭证应注意
  • 视同销售的会计处理怎么做?
  • 账龄分析法计提比例
  • 增值税发票校验码在哪个位置
  • 个人简历html网页代码含效果图
  • Anaconda(python,pycharm)半详细安装教程
  • 人工智能lisp
  • php curl_init
  • 低值易耗品费用计入什么科目
  • 过路费发票抵扣2023新规定
  • python字符串方法总结
  • linux中ubuntu安装教程
  • centos 安装dpkg
  • sql将一列数据变成一行显示
  • 中间业务收入怎么入账
  • 递延所得税怎么计算
  • 营改增后的计税方式
  • 半成品结转成品会计分录
  • 高铁票丢失了可以补打吗
  • 资产负债表编制
  • 长期股权投资的初始投资成本
  • 合同未约定开票但对方不给开
  • 卖旧固定资产计入哪个科目
  • 人力资源外包服务费计入什么科目
  • 汇算清缴主要检查什么
  • 工资可以当月发放当月计提吗
  • 应收账款转回坏账怎么办
  • 营业收入和销售收入的比值
  • 微软安全公告
  • win8.1 开机进桌面
  • mac文件权限
  • win7 64位系统安装绘声绘影8提示已安装另一个版本的解决方法
  • mac安装win10系统后怎么关掉f1快捷键
  • msedge.exe是什么
  • wind10升级
  • win7菜单栏是什么
  • win8 设置
  • javascript重点
  • centos7开不了机
  • 用bat实现定时执行任务的批处理文件
  • 细说javascript
  • 基于Android的游戏陪玩APP设计
  • html5 树形控件
  • js函数总结
  • 个人彩票收入属什么类别
  • 湖北职称网上申请流程
  • 低收入个人所得税
  • 企业税务自查报告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设