【问题标题】:version `libssl.so.10' not found未找到版本“libssl.so.10”
【发布时间】:2020-06-30 20:39:27
【问题描述】:

在带有apt install 的Ubuntu 18.04 上,我安装了libssl1.0.0libssl1.0-dev

以下共享对象可用:

/usr/lib/x86_64-linux-gnu/libssl.so
/usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
/usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
/usr/lib/x86_64-linux-gnu/libcrypto.so

用之前的路径设置变量LD_LIBRARY_PATH

$ echo $LD_LIBRARY_PATH
/usr/lib/x86_64-linux-gnu

创建了以下符号链接:

ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 /usr/lib/x86_64-linux-gnu/libssl.so.10
ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /usr/lib/x86_64-linux-gnu/libcrypto.so.10

现在这就是我所拥有的:

$ file /usr/lib/x86_64-linux-gnu/libssl.so.10
/usr/lib/x86_64-linux-gnu/libssl.so.10: symbolic link to /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0

$ ldd /usr/lib/x86_64-linux-gnu/libssl.so.10
    linux-vdso.so.1 (0x00007ffeeaddb000)
    libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f28054fc000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f280510b000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2804f07000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f2805ba7000)

$ file /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
/usr/lib/x86_64-linux-gnu/libssl.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0d054641049b9747c05d030262295dfdfdd3055d, stripped

$ ldd /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
    linux-vdso.so.1 (0x00007ffff3971000)
    libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f446f2b1000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f446eec0000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f446ecbc000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f446f95c000)

所以,此时我将使用的库的依赖关系已经满足。 当我尝试验证这一点时,我遇到了诸如version `libssl.so.10' not found 之类的问题。

$ file libpjsua2.so
libpjsua2.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=9481ccc9a0bbfe937ebb1dbc40002af55c2b424c, not stripped

$ ldd libpjsua2.so
./libpjsua2.so: /usr/lib/x86_64-linux-gnu/libssl.so.10: version `libssl.so.10' not found (required by ./libpjsua2.so)
./libpjsua2.so: /usr/lib/x86_64-linux-gnu/libcrypto.so.10: version `OPENSSL_1.0.1_EC' not found (required by ./libpjsua2.so)
./libpjsua2.so: /usr/lib/x86_64-linux-gnu/libcrypto.so.10: version `libcrypto.so.10' not found (required by ./libpjsua2.so)
    linux-vdso.so.1 (0x00007ffc83691000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f0d98395000)
    libssl.so.10 => /usr/lib/x86_64-linux-gnu/libssl.so.10 (0x00007f0d9812d000)
    libcrypto.so.10 => /usr/lib/x86_64-linux-gnu/libcrypto.so.10 (0x00007f0d97cea000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f0d97ae2000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f0d978c3000)
    libasound.so.2 => /usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007f0d975bc000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f0d9721e000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f0d97006000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0d96c15000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f0d98d91000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0d96a11000)

我想强调它似乎可以解决一些.so

    libssl.so.10 => /usr/lib/x86_64-linux-gnu/libssl.so.10 (0x00007f0d9812d000)
    libcrypto.so.10 => /usr/lib/x86_64-linux-gnu/libcrypto.so.10 (0x00007f0d97cea000)

我有办法解决这个问题吗?所以libpjsua2.so 是可用的。

【问题讨论】:

  • “我有办法解决这个问题吗?所以 libpjsua2.so 是可用的。” - 是的,只需(以某种方式)获取 实际 libssl.so.10 库,而不是通过重命名(通过符号链接)libssl.so.1 库创建的库。请注意,major 库版本通常表示二进制兼容性:具有不同主要版本(1 和 10)的库不是二进制兼容的。也可能是 libssl.so.1libssl.so.10 实际上是兼容的,但只是使用不同的版本方案。但是你仍然不能重复使用一个而不是另一个。

标签: c linux ubuntu linker shared-libraries


【解决方案1】:

共享库libpjsua2.so 是为 Red Hat、CentOS 或 Fedora 提供的 OpenSSL 版本而设计的,而您正在尝试使用为 Ubuntu 构建的版本。这不起作用,因为 SONAME 和符号版本不同。

没有任何方法可以完成这项工作,因此您要么需要使用为 Ubuntu(或 Debian)系统编译的共享库,要么在编译共享库的系统上运行您的程序。请注意,Debian 和 Ubuntu 都提供了一个名为 libpjsua2 的软件包,因此安装它可能会满足您的需求。

可以理论上从预期的操作系统复制相关的 OpenSSL 版本,但这样做可能会涉及到一堆其他损坏的共享库,并且您可能对结果不满意。

【讨论】:

  • Impressive 刚刚将 Linux 从 Debian/Ubuntu 更改为 CentOS。安装了opensslcompat-openssl,这个错误就消失了。非常感谢@bk2204
猜你喜欢
  • 2017-10-14
  • 2020-07-22
  • 2018-03-10
  • 2017-08-05
  • 1970-01-01
  • 2020-10-01
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多