作用

ldd用来查看程序运行所需的共享库,常用来解决程序因缺少某个库文件而不能运行的一些问题。

原理

ldd不是个可执行程序,而只是个shell脚本; ldd显示可执行模块的dependency的工作原理,其实质是通过ld-linux.soelf动态库的装载器)来实现的。ld-linux.so模块会先于executable模块程式工作,并获得控制权,因此当上述的那些环境变量被设置时,ld-linux.so选择了显示可执行模块的dependency

示例

查看test程序运行所依赖的库:

/opt/app/todeav1/test$ldd test
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000039a7e00000)
libm.so.6 => /lib64/libm.so.6 (0x0000003996400000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000039a5600000)
libc.so.6 => /lib64/libc.so.6 (0x0000003995800000)
/lib64/ld-linux-x86-64.so.2 (0x0000003995400000
  • 第一列:程序需要依赖什么库。
  • 第二列: 系统提供的与程序需要的库所对应的库。
  • 第三列:库加载的开始地址。

通过上面的信息,我们可以得到以下几个信息:

  • 通过对比第一列和第二列,我们可以分析程序需要依赖的库和系统实际提供的,是否相匹配。

  • 通过观察第三列,我们可以知道在当前的库中的符号在对应的进程的地址空间中的开始位置
    如果依赖的某个库找不到,通过这个命令可以迅速定位问题所在;

ldd查看程序依赖库(转载)相关推荐

  1. linux动态库ldd加载顺序,ldd查看动态依赖库

    ldd命令用于输出程序或者库文件所依赖的共享库列表. 语法 ldd (选项) (参数) 选项 --help:显示帮助信息 --version:打印指令版本号: -v:详细信息模式,打印所有相关信息: ...

  2. linux命令之查看程序动态库依赖-ldd

    一个程序依赖很多的动态库,类似windows下的depends工具可以查看exe程序的依赖库是否找到.在linux下,可以通过ldd命令查看程序是否能找到依赖的动态库,从而排查是缺少库还是由于环境变量 ...

  3. linux 下查看程序依赖的库

    查看arm程序的依赖库 # arm-linux-readelf hello -d Dynamic section at offset 0xf10 contains 25 entries:   Tag ...

  4. 编译Ngnix遇到的问题,查看程序依赖的库文件

    要点:ldd 可以读取每个可以运行的程序依赖的 so 文件. 编译的时候提示需要Openssl库. 查看本机,已经安装了openssl 查看编译报错文件,查找Openssl所依赖的库 more obj ...

  5. linux 查询程序的依赖库,linux下查看程序依赖的库

    在x86下,为了查看程序所依赖的库,可使用linux 但若是是使用arm-linux-gcc 等交叉编译环境编译出来的程序,则要使用web 库用于将类似函数打包在一个单元中.而后这些单元就可为其余开发 ...

  6. 各种依赖库(转载地址:https://blog.csdn.net/as89751)

    抽屉菜单 MaterialDrawer ★7337 - 安卓抽屉效果实现方案 Side-Menu.Android ★3865 - 创意边侧菜单 FlowingDrawer ★1744 - 向右滑动流动 ...

  7. Process Explorer window查看可执行程序依赖库

    链接:https://www.cnblogs.com/iTBear/articles/2789151.html

  8. 【linux】程序找不到动态库.so的解决办法|查看.so动态库信息|.so动态库加载顺序

    目录 找不到.so解决方法 方法一:添加环境变量 方法二:复制so文件到lib路径 方法三:(推荐)添加ldconfig寻找路径 方法四:在编译目标代码时指定该程序的动态库搜索路径 让程序在本目录找到 ...

  9. gl linux qt 库_Linux下Qt应用程序的发布(使用LDD命令查看所有依赖的库文件)

    最近一直在学习Qt,用Qt写了一个程序,但是不知道怎么发布,网上说的都是在windows下怎么发布Qt应用程序,但是,在windows下Qt应用程序依赖的库文件与linux下的名字不同.于是,我就想到 ...

  10. Linux篇之显示程序所需依赖库ldd命令的介绍与使用

    一.ldd命令简介 众所周知,当我们在服务器上搭建某些服务时,通常该服务会依赖各种各样的共享库,经常头疼的是,某些服务启动不起来,就是因为缺少各种各样的依赖库.那么如何解决缺少依赖库而导致问题无法解决 ...

最新文章

  1. 【C# 复习总结】类、继承和接口
  2. 用微信小程序开发的Canvas绘制可配置的转盘抽奖
  3. 赛后总结:第四届工业大数据竞赛注塑成型
  4. tomcat 反代配置
  5. linux之lsof查看端口占用情况
  6. djnago 模型 新建对象id为空
  7. 一个简单的Python自动投票
  8. 使用读写管道作为事件通知的C++实现
  9. Excel如何将数据上下调换位置
  10. EPICS Archiver Appliance在Debian11下安装文档
  11. Android应用盈利广告平台的嵌入方法详解
  12. 20201110提莫攻击
  13. Word双栏和单栏的转换
  14. 机床测头应用二:自动补偿功能,提升生产良率
  15. Maven安装与配置详解、多镜像节点的配置
  16. 2017 主流手机分辨率与尺寸
  17. 2023届【校招】安全面试题和岗位总结(字节、百度、腾讯、美团等大厂)
  18. 打造更完美的小程序商城
  19. 数据库中间件-mycat-1-搭建
  20. Error querying database. Cause: java.sql.SQLSyntaxErrorException

热门文章

  1. dojo/dom-class源码学习
  2. Android之Handler,举例说明如何更新UI
  3. HTTP权威指南阅读记录 - 第一章
  4. 2.Docker技术入门与实战 --- 核心概念与安装配置
  5. 2.PHP7内核剖析 --- SAPI
  6. 7.Jenkins 权威指南 --- 分布式构建
  7. 25.Linux/Unix 系统编程手册(上) -- 进程的终止
  8. 42. netcat
  9. 行内元素与块状元素 行内替换元素与行内非替换元素的区别
  10. [2019杭电多校第五场][hdu6629]string matching(扩展kmp)