错误:curl:/usr/local/lib/libcurl.so.4:没有可用的版本信息(需要由curl要求)

34

当我从tcl运行curl时,出现以下错误:curl: /usr/local/lib/libcurl.so.4:没有可用的版本信息(需要curl)

curl --version
curl 7.40.0(x86_64-unknown-linux-gnu)libcurl/7.40.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3
协议:dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
功能:IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
root@lasdf :/usr/local/lib$ ll
drwxr-xr-x  5 root root    4096 Feb  4 17:33 ./
drwxr-xr-x 10 root root    4096 Aug  2  2014 ../
-rw-r--r--  1 root root  878996 Feb  4 17:33 libcurl.a
-rwxr-xr-x  1 root root     979 Feb  4 17:33 libcurl.la*
lrwxrwxrwx  1 root root      16 Feb  4 17:33 libcurl.so -> libcurl.so.4.3.0*
lrwxrwxrwx  1 root root      16 Feb  4 17:33 libcurl.so.4 -> libcurl.so.4.3.0*
-rwxr-xr-x  1 root root  472203 Feb  4 17:33 libcurl.so.4.3.0*

1
这意味着您正在使用不匹配的 curllibcurl。例如,由软件包管理器安装的 curl 和自己编译的 libcurl - Wodin
7个回答

93

我在安装CMAKE时也遇到了一个问题:libcurl.so.4: no version information available。当我输入cmake时,输出结果为:

cmake: /usr/local/lib/libcurl.so.4: no version information available     (required by cmake)
Segmentation fault (core dumped)`

我通过以下方法解决了这个问题:

首先,我找到了libcurl.so.4的路径:

locate libcurl.so.4

结果是:

/home/chenjian/software/curl-7.20.0/lib/.libs/libcurl.so.4
/home/chenjian/software/curl-7.20.0/lib/.libs/libcurl.so.4.2.0
/usr/lib/x86_64-linux-gnu/libcurl.so.4
/usr/lib/x86_64-linux-gnu/libcurl.so.4.3.0
/usr/local/lib/libcurl.so.4
/usr/local/lib/libcurl.so.4.2.0

第二步,查找libcurl.so.4的链接,输入:

ls -l /usr/local/lib/libcurl.so.4

结果:

lrwxrwxrwx 1 root root 16 Aug 16 21:15 /usr/local/lib/libcurl.so.4 -> libcurl.so.4.2.0

第三步,将其移除并重新构建指向libcurl.so.4.3.0的链接:

sudo rm /usr/local/lib/libcurl.so.4
sudo ln -s /usr/lib/x86_64-linux-gnu/libcurl.so.4.3.0 /usr/local/lib/libcurl.so.4

接下来,请检查它:

 ls -l /usr/local/lib/libcurl.so.4

好的,输出结果为:

lrwxrwxrwx 1 root root 42 Aug 24 09:23 /usr/local/lib/libcurl.so.4 -> /usr/lib/x86_64-linux-gnu/libcurl.so.4.3.0

然后,我输入cmake -version命令,结果是:

cmake version 3.2.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

修复了这个 bug 后,我认为它可能是由 curl 的多版本造成的,比如像我一样,原来的 Ubuntu 环境中已经有一个版本了,但我又安装了另一个版本。


1
为什么这个答案在另一个答案下面? - Kunal Khandelwal
5
非常好的回答!更正一点:在 sudo rm -rf /usr/local/lib/libcurl.so.4 中,-rf 是不必要的。 - Zheng Qu
2
这解决了我的问题,但我很好奇为什么在我的Ubuntu 18.04系统上过一段时间后问题总是会再次出现。 - haxpor
@haxpor,我遇到了类似的问题,你解决了吗? - Krishnaraj
1
@Krishnaraj,我不确定发生了什么,但我已经转移到19.10,现在没有看到任何问题。 - haxpor
这绝对是我在stackoverflow上遇到的最有帮助的答案。解决了许多类似的问题,例如libstdc++.so.6 'GLIBCXX_3.4.30' not foundlibuuid.so.1 no version information等等。非常感谢! - Daniel von Eschwege

13

在构建更新版本的curl 7.5.61并重新构建我的应用程序时,我遇到了这个问题。对于我来说,解决方案是设置--enable-versioned-symbols,这默认情况下是禁用的。

./configure --enable-versioned-symbols

你应该真的删除那个 --prefix。如果 PWD 例如在他们的主目录中,它可能会让某人非常困扰。 - Jeffrey Van Alstine
非常感谢您关于启用版本化符号的建议。我正在从源代码构建,但没有意识到我在安装时配置不正确。这真的帮了我很多! - Daryl

5
在我的Ubuntu 16.04中,当我将Anaconda的bin导出到PATH和lib导出到LD_LIBRARY_PATH时,我遇到了同样的问题。我通过从conda-forge安装cmake来解决它:conda install cmake。如果你像我一样使用Anaconda,你可以使用这种方法来解决它,否则请使用其他人的解决方案。

4
在我的Ubuntu 12.04系统上,当已经有一个/usr/local/bin/curl时,运行/usr/bin/curl(从可安装的curl软件包中)时会出现此错误。使用which curl查看哪个正在执行 - 如果是/usr/bin/curl,则尝试执行/usr/local/bin/curl代替它。
我在crontab的上下文中遇到了这个问题,因为其运行路径与我的用户不同。快速解决方法是使用/usr/local/bin/curl显式指定我的curl

1
谢谢,我也遇到了同样的问题。我使用了 apt-get remove curl 命令来删除 /usr/bin/curl(版本为7.35),然后使用 sudo ln -s /usr/local/bin/curl /usr/bin/curl 命令将其链接到我的 /usr/local/bin/curl(版本为7.46)。 - Elijah Lynn

1

对我来说,我的系统是ubuntu16,自带了一个默认的curl。但是我通过源代码安装了一个curl。

root@xy:~/cmake_practice/cmake_build/build_demo9# locate libcurl.so.4
/home/xy/anaconda2/lib/libcurl.so.4
/home/xy/anaconda2/lib/libcurl.so.4.4.0
/home/xy/anaconda2/pkgs/curl-7.55.1-hcb0b314_2/lib/libcurl.so.4
/home/xy/anaconda2/pkgs/curl-7.55.1-hcb0b314_2/lib/libcurl.so.4.4.0
/usr/lib/x86_64-linux-gnu/libcurl.so.4
/usr/lib/x86_64-linux-gnu/libcurl.so.4.4.0
/usr/local/lib/libcurl.so.4
/usr/local/lib/libcurl.so.4.4.0

然后我看到了最近安装的新的libcurl.so(5月20日19:54):

root@xy:~/cmake_practice/cmake_build/build_demo9# ll -th /usr/local/lib/libcurl.so.4
lrwxrwxrwx 1 root root 16 May 20 19:54 /usr/local/lib/libcurl.so.4 -> libcurl.so.4.4.0*

然后我删除它们:

root@xy:~/cmake_practice/cmake_build/build_demo9# rm -f /usr/local/lib/libcurl.so.4
root@xy:~/cmake_practice/cmake_build/build_demo9# rm -f /usr/local/lib/libcurl.so.4.4.0

检查一下:
root@xy:~/cmake_practice/cmake_build/build_demo9# cmake --version
cmake version 3.5.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).
root@xy:~/cmake_practice/cmake_build/build_demo9# 

1
在最新的 Ubuntu(18.4)上,我不得不执行以下操作:sudo apt-get remove libcurl,然后重新安装需要的内容,例如:curl

2
在删除现有的libcurl之后,运行以下命令可以解决问题: sudo apt-get install libcurl4-openssl-dev - GANESH B K

0

这里我有一个简单的解决方案。

如果你安装了libcurl并遇到了问题。但是你可以通过重新构建你自己的cmake,并将你安装的libcurl使用LD_LIBRARY_PATH指向它,从而解决这个问题。

对我很有效。(Ubuntu 16.04、libcurl 4.5和cmake 3.11.3)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接