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 的库是兼容的。我猜你是手动添加的,以尝试让其他软件正常工作?