未定义的符号:SSL_CTX_set_alpn_protos

时间:2016-10-31 09:17:55

标签: curl libcurl

当我使用zypper安装软件包时,我遇到了这样一个问题'未定义的符号:SSL_CTX_set_alpn_protos'。完整的信息如下。

zypper: symbol lookup error: /usr/local/lib/libcurl.so.4: undefined symbol: SSL_CTX_set_alpn_protos

我搜索了互联网并得到了一些提示。 1.我的系统中有两个libcurl,我试图卸载我自己安装的一个。但我遇到了另一个问题,信息如下。

*Error building the cache:
[git|https://github.com/git/git] Valid metadata not found at specified URL
Warning: Disabling repository 'git' because of the above error.
Loading repository data...
Reading installed packages...
'subversion' not found in package names. Trying capabilities.
No provider of 'subversion' found.
Resolving package dependencies...
Nothing to do.*
  1. 如果问题是由两个libcurl发生的。如果我想保留我安装的libcurl,我该怎么办?
  2. 如果有人可以提供帮助,我很感激,THX!

1 个答案:

答案 0 :(得分:2)

您构建并安装在/usr/local/lib/libcurl.so.4中的libcurl是针对具有SSL_CTX_set_alpn_protos功能的OpenSSL版本构建的。这意味着OpenSSL 1.0.2或1.1.0。

当您现在链接到该库时,它会在缺少SSL_CTX_set_alpn_protos函数的运行时找到较旧的OpenSSL(可能是1.0.1或更早版本?)。它无法继续。

您需要确保ld.so将加载较新的OpenSSL。您可以通过执行以下操作之一来解决此问题:

  1. 卸载旧的OpenSSL
  2. 编辑/etc/ld.so.conf文件以创建其他搜索顺序,或者您可以
  3. 为其设置LD_LIBRARY_PATH。甚至......
  4. 构建libcurl以使用较新的OpenSSL的固定路径