我在生产服务器上运行 Centos 5.8。我有一个需要使用 keyctl 命令的应用程序,但是每次应用程序调用(或我调用)该命令时,我都会遇到一些错误。
第一个错误是这样的:
root@server [~] keyctl show
segmentation fault
然后,我使用 yum 重新安装了 keyutils 二进制文件。这些是我在服务器上的 keyutils 包:
root@server [~]# rpm -qa | grep keyutils
keyutils-libs-1.2-1.el5
keyutils-libs-1.2-1.el5
keyutils-1.2-1.el5
keyutils-libs-devel-1.2-1.el5
现在,我有另一个不同的错误:
root@server [~]# keyctl show
keyctl: symbol lookup error: /lib64/libkeyutils.so.1: undefined symbol: dlopen
我检查了keyctl的库,没有libdl。
root@server [~]# ldd /bin/keyctl
linux-vdso.so.1 => (0x00007fffcc5fd000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00000033df000000)
libc.so.6 => /lib64/libc.so.6 (0x0000003d7ae00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003d7aa00000)
所有使用的库都很好。
root@server [~]# ls -al /lib64/libkeyutils*
-rwxr-xr-x 1 root root 9472 Jan 6 2007 /lib64/libkeyutils-1.2.so*
lrwxrwxrwx 1 root root 18 Nov 21 07:56 /lib64/libkeyutils.so.1 -> libkeyutils.so.1.9*
-rwxr-xr-x 1 root root 34584 Jan 6 2007 /lib64/libkeyutils.so.1.9*
root@server [~]# ls -al /lib64/libdl*
-rwxr-xr-x 1 root root 23360 Aug 27 08:59 /lib64/libdl-2.5.so*
lrwxrwxrwx 1 root root 12 Nov 16 02:01 /lib64/libdl.so.2 -> libdl-2.5.so*
root@server [~]#
你以前见过这个问题吗?我尝试在其他发行版上运行相同的版本,它可以工作。
我想重新安装此服务器,但我不能,因为它是生产服务器。
有没有办法可以将共享库添加或链接到已经链接到其他 .so 库的二进制文件?