没有想到很好的题目来概括“.so”问题,因为这种问题的后面总是有各种"no version"、“undefined reference to ”等等,让人摸不着头脑。。。
总的概括就是 软连接的问题,需要重新连接!
这里经常有两种情况,一种是annaconda环境下的,一种是非annaconda环境下的,区别主要是看报错的时候“*.so”前面的地址是不是含有annaconda。
- annaconda环境
因为网上大多数都是解决非annaconda环境问题的,所以这里先说annaconda报错的,这里以“anaconda3/lib/libcurl.so.4:no version information available“为例。
先输入以下指令查看libcurl.so.4所在位置。
~$ locate libcurl.so.4
可以看到输出
重点看红色和黄色框内的内容。
用rm -rf指令去除annaconda下的文件,如下所示
~$ rm -rf /home/deep/anaconda3/lib/libcurl.so.4
~$ rm -rf /home/deep/anaconda3/lib/libcurl.so.4.4.0
~$ rm -rf /home/deep/anaconda3/lib/libcurl.so.4.5.0
然后重新进行链接
~$ ln -s /usr/lib/x86_64-linux-gnu/libcurl.so.4 /home/deep/anaconda3/lib/libcurl.so.4
这样就解决了。
这里记录一下我碰到的另一个问题也是采用这个方法解决的,以便以后碰到的时候方便查找:
anaconda/lib/libSM.so.6: undefined reference to `uuid_generate@UUID_1.0'
- 非annaconda环境
因为我没有出现这个问题,但是看到的大多数都是这种情况,所以我这里也mark,就是没有贴图说明了。。
此处参考: https://blog.csdn.net/cui841923894/article/details/81514063
(anaconda/lib/libSM.so.6也是受到这篇博文启发才解决的,此处感谢博主~)
此处以//usr/lib/x86_64-linux-gnu/libSM.so.6: undefined reference to uuid_generate@UUID_1.0' 为例
~$ locate libSM.so.6
输出的话,博客里是这样写的
个人分析应该是不止这两个文件的,应该还有/usr/local/lib/libuuid.so.1
看到红色框和黄色框,就能感受到是否是anaconda的区别了。。。
同样删掉并重新链接
~$ rm -rf /usr/local/lib/libuuid.so.1
sudo ln -sf /lib/x86_64-linux-gnu/libuuid.so.1.3.0 /usr/local/lib/libuuid.so.1
搞定~