龙空技术网

ldd 查看程序依赖库

幽默的正能量苹果yV 111

前言:

此时我们对“linux查看so依赖”大体比较注重,你们都想要剖析一些“linux查看so依赖”的相关知识。那么小编在网摘上收集了一些关于“linux查看so依赖””的相关知识,希望小伙伴们能喜欢,各位老铁们一起来了解一下吧!

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

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

/opt/app/todeav1/test$ldd testlibstdc++.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)
第一列:程序需要依赖什么库第二列: 系统提供的与程序需要的库所对应的库第三列:库加载的开始地址

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

通过对比第一列和第二列,我们可以分析程序需要依赖的库和系统实际提供的,是否相匹配通过观察第三列,我们可以知道在当前的库中的符号在对应的进程的地址空间中的开始位置

如果依赖的某个库找不到,通过这个命令可以迅速定位问题所在;参加如下示例

/opt/app/todeav1/test$ldd testlibstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000039a7e00000)libtest.so => not foundlibc.so.6 => /lib64/libc.so.6 (0x0000003995800000)/lib64/ld-linux-x86-64.so.2 (0x0000003995400000)

注解

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

标签: #linux查看so依赖 #linux查看so依赖关系 #linux查看依赖库的命令