本文主要是介绍linux 命令之ldd,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ldd命令是用来查看程序运行时所需的共享库,常用来解决程序因缺少某个库文件而不能运行的一些问题
ldd使用方式:
ldd [option] file
option:
–version : 打印ldd的版本号
-v –verbose: 打印所有信息
-d –data-relocs:执行符号重部署,并报告缺少的目标对象(只对ELF格式适用)
-r –function-relocs:对目标对象和函数执行重新部署,并报告缺少的目标对象和函数(只对ELF格式适用)
-u –unused:打印未使用的直接依赖关系
–help:用法信息
ldd命令原理
- ldd不是可执行程序,而是一个shell脚本(可以使用vi查看内容)
- ldd能够显示可执行模块的依赖,其原理是通过设置环境变量,如: LD_TRACE_LOADED_OBJECTS。当 LD_TRACE_LOADED_OBJECTS环境变量不为空时,所有可执行的程序在运行时,都会只显示模块的依赖,而程序不真正执行。比如:
$ echo $LD_TRACE_LOADED_OBJECTS$ export LD_TRACE_LOADED_OBJECTS=1
$ lslinux-gate.so.1 => (0xb77d7000)libselinux.so.1 => /lib/i386-linux-gnu/libselinux.so.1 (0xb77a5000)librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb779c000)libacl.so.1 => /lib/i386-linux-gnu/libacl.so.1 (0xb7792000)libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75ed000)libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb75e8000)/lib/ld-linux.so.2 (0xb77d8000)libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb75cd000)libattr.so.1 => /lib/i386-linux-gnu/libattr.so.1 (0xb75c7000)
这篇关于linux 命令之ldd的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!