linux执行命令缺少共享库解决方法和ldd命令说明
linux执行命令缺少共享库解决方法和ldd命令说明
[root@xiaogaokui ~]# which ldd
/usr/bin/ldd
[root@xiaogaokui ~]# file /usr/bin/ldd
/usr/bin/ldd: Bourne-Again shell script, ASCII text executable
ldd是一个shell脚本,ldd可以列出一个程序所需要得动态链接库(so)
[root@xiaogaokui ~]# ldd /usr/bin/ls
linux-vdso.so.1 => (0x00007ffd84fe7000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f46407cf000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f46405ca000)
libacl.so.1 => /lib64/libacl.so.1 (0x00007f46403c0000)
libc.so.6 => /lib64/libc.so.6 (0x00007f463fffd000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f463fd9b000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f463fb96000)
/lib64/ld-linux-x86-64.so.2 (0x0000561fa1b64000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007f463f991000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f463f775000)
注意:在 ldd 命令打印的结果中,“=>”左边的表示该程序需要连接的共享库之 so 名称,
右边表示由 Linux 的共享库系统找到的对应的共享库在文件系统中的具体位置。
默认情况下,/etc/ld.so.conf 文件中包含有默认的共享库搜索路径。
[root@xiaogaokui ~]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
# 如果需要,将所需共享库绝对路径卸载此处
# 或者在/etc/ld.so.conf.d/下新增conf文件引用共享库绝对路径
新增系统共享库需要运行ldconfig,用来属性系统的共享库缓存
为了减少共享库系统的库搜索时间,共享库系统维护了一个共享库 so 名称的缓存文件/etc/ld.so.cache。
因此,在安装新的共享库之后,一定要运行 ldconfig 刷新该缓存。
LD_LIBRARY_PATH是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。
移植程序时的经常碰到需要使用一些特定的动态库,而这些编译好的动态库放在我们自己建立的目录里,
这时可以将这些目录设置到LD_LIBRARY_PATH中。
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:$LD_BIBRARY_PATH
运行命令常见报错:
error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
1.通过ldd脚本检测命令所需动态链接库
# ldd 命令
libappindicator3.so.1 => not found
2.在系统上安装共享库或者find
3.建立映射关系
# ln -s /xx/libc.so.6 /usr/bin/libc.so.6
4.source变量LD_LIBRARY_PATH
[oracle@xiaogaokui ~]$ ldd --help
Usage: ldd [OPTION]... FILE...
--help print this help and exit
--version print version information and exit
-d, --data-relocs process data relocations
-r, --function-relocs process data and function relocations
-u, --unused print unused direct dependencies
-v, --verbose print all information
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.