ldd命令用于复印程序或则库文件所依赖的共享库列表。

1.在制做自己的发行版时常常须要判定某条命令须要什么共享库文件的支持,以确保指定的命令在独立的系统内可以可靠的运行;

Linux环境下通过ldd命令即可实现,在终端下执行:

ldd/bin/ls//ldd命令一般使用”-v”或”--verbose”选项来显示所依赖的动态联接库的尽可能的详尽信息。

linux ldd命令源代码_linux命令源码_linux源代码是什么语言

即可得到/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)

注意:在ldd命令复印的结果中linux查看进程,“=>”左边的表示该程序须要联接的共享库之so名称,左边表示由Linux的共享库系统找到的对应的共享库在文件系统中的具体位置。默认情况下,/etc/ld.so.conf文件中包含有默认的共享库搜索路径。

2.龙芯笔记本中更新了库文件时,常常会导致个别软件难以使用,可以通过ldd命令来检测软件须要这些共享库的支持深度linux,如:曾经在安装apt-getinstalldevscripts软件时安装更新了好多库linux ldd命令源代码,结果造成OpenOffice难以使用,可以使用命令:

linux命令源码_linux ldd命令源代码_linux源代码是什么语言

#ldd/opt/2.0/program/soffice.bin

查看其依赖的共享库文件。

知识点:

1、如果使用ldd命令时没有找到对应的共享库文件和其具体位置,可能是两种情况导致的:

linux ldd命令源代码_linux命令源码_linux源代码是什么语言

共享库没有安装在该系统中;

共享库保存在/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文件。为了减轻共享库系统的库搜索时间linux ldd命令源代码,共享库系统维护了一个共享库so名称的缓存文件/etc/ld.so.cache。为此,在安装新的共享库以后,一定要运行ldconfig刷新该缓存。

2、使用nm命令也可以获取库函数的信息;nm命令可以列举一个函数库文件中的符号表,它对静态的库函数和共享的库函数都能起作用。

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复