no version information available && openssl && libpython2.7.so

错误描述
/usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/lib/libpython2.7.so.1.0)
使用vim或者编译程序或者其他使用python的情况下就会出现
而且基于ssh的file transfer也无法使用

起因
自己对openssl中的内容进行了修改,希望使用其中的内容,静态库好说,可以实现,但是强迫症般的想通过动态库调用。
将openssl编译出的.so文件(加shared参数)复制到/usr/local/lib目录下,并做了链接,而在调用的时候就出现了上述的问题

起初以为是旧的库(位于/lib/x86_64-linux-gnu/libcrypto.so.1.0.0)没有删除而引起冲突所致,无奈删除后依然无果

后来发现可能自己的方式不科学,因为是直接复制过去的(居然这么想,2了)。依照网上的说法,做链接到/usr/local/ssl/lib/libcrypto.so.1.0.0,依然无果

而且即使直接将.so文件复制到/lib/x86_64-linux-gnu/目录下覆盖原有文件也不行

这时才意识到,这个东西是应该跟上述的位置问题无关的,因为在执行ldd /usr/lib/libpython2.7.so.1的时候显示的引用的共享库内容已经是我自己编译的那个了,说明在调用的时候并没有问题,也不应该受到系统自带的ssl库的影响

后来想到是不是openssl对python有特殊的支持,而我config的时候参数设置有问题呢,去查看Configure/config/Makefile内容,依然无果,并没有python相关内容

又在网上找了找,有人提到版本问题,感觉挺靠谱,继续看下去,他提到了2进制安装包编译与运行环境不同的问题
尤其指出openssl编译出的共享库的soname中的版本号并不受openssl版本最后一位字母的影响,也就是1.0.1e和1.0.1c编译出的共享库看起来是一模一样的
这时就感觉问题已经解决了

卸载了原有的python2.7(不知道有没有必要),下载源码,并重新编译安装,当然还有vim,因为在卸载python2.7的时候已经被一起删除了

之前的错误提示并没有发生,高兴的去用SSH secure shell链接,发现file transfer可以使用了
而libpython2.7.so.1所调用的共享库是/usr/local/lib/libcrypto.so.1.0.0,也就是我自己编译的没错

问题算是解决了

2013.1.16

啊,太不幸了,因为我在另一台虚拟机上尝试的时候ssh的file transfer还是不能用,scp也不能用,而且后来我想了一下,把依赖libcrypto.so的库都重装也不现实。
我后来是把旧的openssl完全卸载,所有有关的东西都删掉,然后再装新的,果然能用了哈。

但是它居然会一小段时间就断开连接,过一段时间后才可以再次连,周而复始,我在想是不是什么东西给删错了呢。

不会看日志呀不会看日志。

你可能感兴趣的:(no version information available && openssl && libpython2.7.so)