天天看点

源码安装libcurl后yum出错,pycurl.so: undefined symbol: CRYPTO_set_locking_callback /usr/lib64/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback CRYPTO_set_locking_callback实际上是与ssl相关的资源。

最近项目需要在centos上默认配置源码安装了libcurl模块,导致使用yum命令时出现如下错误,(实际在很多使用libcurl的地方都会出错)。

/usr/lib64/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback

经过ldd   /usr/lib64/python2.6/site-packages/pycurl.so命令可知依赖于 libcurl.so.4文件,该文件为新安装的libcurl文件,可知依赖从原来的系统libcurl被改为新安装的libcurl。(原来的libcurl.so.4应该还能在/usr/lib64/目录下找到)

CRYPTO_set_locking_callback实际上是与ssl相关的资源。

由于默认安装时没有指明安装ssl模块,导致新依赖的libcurl缺少ssl,从而出现如上错误。

解决方法:

下载ssl,编译安装,

./config --shared  (注意需要使能--share动态库模块,否则后续编译libcurl出错)

make && make install              (ssl默认安装在/usl/local/ssl/目录下)

然后设置动态库路径export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ssl/lib

重新编译安装libcurl执行

./configure --with-ssl=/usr/local/ssl/ 

make  && make install

最后将libcurl安装目录(/usr.local/lib/)和/usr/local/ssl/lib/ 写入 /etc/ld.so.conf文件

ldconfig更新链接目录缓存

重新执行yum成功!