【发布时间】:2019-08-20 21:58:02
【问题描述】:
我正在尝试在虚拟 Centos 7 发行版上构建一些 c++ 库。 由于我还没有发现这个操作系统无法像其他 linux 发行版那样看到这些库安装的 /usr/local/lib 或 /usr/local/lib64 的原因。所以我不得不在/etc/ld.so.conf 中添加这些文件夹。然后 c++ 链接器能够看到这些库。 然而,当我后来给了
sudo yum update
我收到以下消息:
/usr/lib64/python2.7/site-packages/pycurl.so:未定义符号:CRYPTO_num_locks
查了一下发现是因为libcurl有两个版本导致的。我给了
ldconfig -v | grep libcurl
我得到了以下信息:
ldconfig: Path `/usr/lib' given more than once
ldconfig: Path `/usr/lib64' given more than once
libcurl.so.4 -> libcurl.so.4.4.0
libcurl.so.4 -> libcurl.so.4.3.0
意思是我安装了一个新版本的libcurl,现在两个版本并存。
当我从 /etc/ld.so.conf 中删除文件夹路径时,yum 工作正常,但 c++ 链接器找不到我的应用程序需要的 c++ 库。我也尝试更新 LD_LIBRARY_PATH 但我遇到了同样的问题。
有没有办法解决这个问题而无需在新位置重新安装库?删除旧版本是否安全?
ls -lsa /usr/lib64/*curl*给了
0 lrwxrwxrwx. 1 root root 16 Aug 10 10:19 /usr/lib64/libcurl.so.4 -> libcurl.so.4.3.0
428 -rwxr-xr-x. 1 root root 435120 Nov 14 2016 /usr/lib64/libcurl.so.4.3.0
我尝试给予
sudo unlink /usr/lib64/libcurl.so.4
sudo ln -s /usr/local/lib/libcurl.so.4.4.0 /usr/lib64/libcurl.so.4
我什至将它们作为 root 用户,但每次我给予 ldconfig 我都会得到
libcurl.so.4 -> libcurl.so.4.3.0
在 ldconfig 给出之前
libcurl.so.4 -> /usr/local/lib/libcurl.so.4.4.0
【问题讨论】: