Skype 在 64 位 Fedora Linux 上找不到 libssl.so.10

Skype 在 64 位 Fedora Linux 上找不到 libssl.so.10

Skype 无法启动:

$ skype &
skype: error while loading shared libraries: libssl.so.10: wrong ELF class: ELFCLASS64
$ ldd /usr/bin/skype |grep ssl
libssl.so.10 => not found

好的,缺少 libssl。它在哪里?

$ ls -l /usr/lib/libssl.so*
lrwxrwxrwx. 1 root root  ... /usr/lib/libsssl.so -> libcrypto.so.1.0.1e
lrwxrwxrwx. 1 root root  ... /usr/lib/libssl.so.10 -> libssl.so.6
-rwxr-xr-x. 1 root root  ... /usr/lib/libssl.so.1.0.1e
lrwxrwxrwx. 1 root root  ... /usr/lib/libssl.so.6 -> /usr/lib64/libssl.so.10

好的,它指向 libssl.so.6,而后者又指向 64 位版本。

$ ls -l /usr/lib64/libssl.so*
lrwxrwxrwx. 1 root root  ... /usr/lib64/libssl.so.10 -> libssl.so.1.0.1e
-rwxr-xr-x. 1 root root  ... /usr/lib64/libssl.so.1.0.1e
lrwxrwxrwx. 1 root root  ... /usr/lib64/libssl.so.6 -> /usr/lib64/libssl.so.10

那么,为什么我的链接链没有被 Skype 接收?(顺便说一下,libcrypto 也存在同样的问题)。

答案1

/usr/lib/libssl.so.6指向是完全错误的,/usr/lib64/libssl.so.10这就是你遇到问题的原因。 中的链接/usr/lib需要指向 32 位库,因此你应该看到类似这样的内容:

$ ls -l /usr/lib/libssl.*
lrwxrwxrwx 1 root root   16 Oct 31 18:07 /usr/lib/libssl.so.10 -> libssl.so.1.0.1e*
-rwxr-xr-x 1 root root 402K Oct 29 16:16 /usr/lib/libssl.so.1.0.1e*

和:

$ ls -l /usr/lib64/libssl.*
lrwxrwxrwx 1 root root   16 Oct 31 18:07 /usr/lib64/libssl.so -> libssl.so.1.0.1e*
lrwxrwxrwx 1 root root   16 Oct 31 18:07 /usr/lib64/libssl.so.10 -> libssl.so.1.0.1e*
-rwxr-xr-x 1 root root 429K Oct 29 16:16 /usr/lib64/libssl.so.1.0.1e*

libssl.so.6指向任一目录也是错误的libssl.so.10,因为这基本上是在断言两个具有不同 SONAME 的库是兼容的。我猜你是手动添加的,以尝试让其他软件正常工作?

相关内容