1.3 ldd 和 ldconfig
ldd 是用来检查可执行文件所需要的共享库。例如:
$ ldd /bin/ls
libtermcap.so.2 => /lib/libtermcap.so.2 (0x4001c000)
libc.so.6 => /lib/libc.so.6 (0x40020000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
我们在 /bin/ls 程序上运行 ldd 命令,就可以检查该程序所使用的共享库。注意在 ldd 命令打印的结果中,“=>”左边的表示该程序需要连接的共享库之 so 名称,右边表示由 Linux 的共享库系统找到的对应的共享库在文件系统中的具体位置。默认情况下,/etc/ld.so.conf 文件中包含有默认的共享库搜索路径,例如:
/usr/X11R6/lib
/usr/lib
/usr/i486-linux-libc5/lib
/usr/lib/qt-2.0.1/lib
/usr/lib/qt-1.44/lib
/usr/lib/qt-2.1.0/lib
/usr/kerberos/lib
/usr/lib/qt-1.45/lib
如果 ldd 没有找到对应的共享库文件的具体位置,可能是两种情况引起的:
  1. 共享库没有安装在该系统中;
  2. 共享库保存在 /etc/ld.so.conf 文件列出的搜索路径之外的位置。
通 常情况下,许多开放源代码的程序或函数库都会默认将自己安装到 /usr/local 目录下的相应位置(/usr/local/bin 或 /usr/local/lib),以便与系统自身的程序或函数库相区别。而许多 Linux 系统的 /etc/ld.so.conf 文件中默认又不包含 /usr/local/lib。因此,往往会出现已经安装了共享库,但是却无法找到共享库的情况。这时,就应该检查 /etc/ld.so.conf 文件,如果其中缺少 /usr/local/lib 目录,就应该添加进去。
在修改了 /etc/ld.so.conf 文件或者在系统中安装了新的函数库之后,还要运行一个命令,即 ldconfig。该命令用来刷新系统的共享库缓存,即 /etc/ld.so.cache 文件。为了减少共享库系统的库搜索时间,共享库系统维护了一个共享库 so 名称的缓存文件。因此,在安装新的共享库之后,一定要运行 ldconfig 刷新该缓存。

转载于:https://www.cnblogs.com/alaigle/archive/2012/08/10/2631590.html

检查可执行文件所需要的共享库相关推荐

  1. 在Linux平台上如何使用接静态库和共享库

    1.Linux函数库介绍 函数库可以看做是事先编写的函数集合,它可以与主函数分离,从而增加程序开发的复用性.Linux中函数库可以有3种使用的形式:静态.共享和动态. 1)         静态库的代 ...

  2. C语言 共享库(动态库)制作

    文章目录 共享库简介 共享库制作 代码实现 创建共享库 链接使用共享库 小结 共享库简介 共享库的本质就是将多个目标文件打包成一个文件.链接共享库就是在可执行文件中调用共享库中函数的指令处插入一些指令 ...

  3. Linux 共享库LD_PRELOAD环境变量

    共享库转载器有许多可供配置的环境变量,比如我们前面介绍的LD_LIBRARY_PATH环境变量.本文只重点介绍LD_PRELOAD环境变量,因为这个环境变量体现了共享库一个非常重要的特性:共享库覆盖. ...

  4. Linux 环境编程 day01 Linux系统介绍、GNU编译工具、静态/共享库、环境变量表

    Linux 环境编程 day01 Linux系统介绍.GNU编译工具.静态/动态库.环境变量表 学习Linux环境编程的原因 UNIX系统介绍 Linux系统介绍 GNU工程 POSIX标准 GNU通 ...

  5. 【Linux基础】静态库和共享库(如何自定义库文件?)

    文章目录 前言 一.库文件的基本知识 1.库文件分类 2.库文件命名 二.如何自定义静态库? 1.静态库简介 2.具体流程(详细步骤) 3.静态库缺点 三.如何自定义共享库? 1.共享库简介 2.具体 ...

  6. 【Linux学习】静态库和共享库

    目录 一.什么是静态库 静态库的创建和应用(含例子) 二.什么是共享库 共享库的创建和应用(含例子) 三.静态库和共享库的区别 一.什么是静态库 静态库(.a):程序在编译链接的时候把库代码链接到可执 ...

  7. 静态库和共享库之间的区别?

    静态库和共享库有什么区别? 我使用Eclipse,并且有几种项目类型,包括"静态库"和"共享库"? 一个人比另一个人有优势吗? #1楼 对于静态库,链接器从库中 ...

  8. 共享库中的位置无关代码(PIC)

    原作者:Eli Bendersky http://eli.thegreenplace.net/2011/11/03/position-independent-code-pic-in-shared-li ...

  9. LINUX之静态库共享库

    linux下文件的类型是不依赖于其后缀名的,但一般来讲: .o,是目标文件,相当于windows中的.obj文件 .so 为共享库,是shared object,用于动态连接的,和dll差不多 .a为 ...

最新文章

  1. java acr122 读取数据_使用ACR122U 从NTAG203Chip 读取数据
  2. centos 7 mysql tar安装_linux centos7 下源码 tar 安装 mysql5.7.24 图文详解
  3. QT的QMutableSetIterator类的使用
  4. [数据结构-严蔚敏版]P95矩阵压缩-特殊矩阵的存储(对称矩阵,三角矩阵)
  5. 加密和解码(不同加密方法:随机数,hash,出现次数)
  6. 串口.Qt532测试(异步)
  7. 我的2013年总结以及未来7年预算
  8. Axure 画原型图
  9. Error: No EPCS layout data - looking for section [EPCS-C84018]
  10. 计算机数字键盘如何用,电脑小数字键盘不能使用的原因和解决方法
  11. vue路由变化时使用axios取消所有请求
  12. Linux系统磁盘分区格式MBR格式转换GPT
  13. iOS学习爬坑记录4:ios8中的搜索栏,使用UISearchController
  14. DTU的工作原理是什么?DTU是怎样工作的?
  15. java 求指数、对数
  16. python写爬虫要记的单词_Python爬虫入门案例:获取百词斩已学单词列表
  17. swfobject.js for flash 的使用(for swfobject 2.0)
  18. 开源PHP记事本,Boostnote 为程序员的开源式记事本
  19. AndroidFtp客户端(二)
  20. Java之数组的定义格式,【默认值规则】,Java内存划分5大区,面向对象类的基本定义和对象的使用,private和this关键字,类的构造方法,标准类的组成部分。

热门文章

  1. TimerTask定时任务
  2. fluidity详解
  3. 在Red Hat 4 AS U7上安装oracle10gR2
  4. .net生成文字图片
  5. 气象ts评分_给大家分享一个格点插值到站点然后TS评分的程序
  6. php重写地址,php url地址重写
  7. 操作系统:体验Windows 11,不到1M的小工具来了!
  8. SQL语言:嵌入式SQL知识笔记
  9. 蓝牙技术的工作原理及用途
  10. html5 保存 搜索历史,html5 – 如何有效处理Dart中的浏览器历史记录(即后退按钮)?...