程序猿因新项目要做,服务器ubuntu系统从12.04升级到14.04再升级16.04,gcc、
环境配置等升级,程序猿在服务器上瞎搞。输入apt-get 升级时出了这个情况:
apt-get: relocation error: /usr/lib/x86_64-linux-gnu/libapt-pkg.so.5.0: symbol _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference
谷歌了一下这个错误:版本GLIBCXX_3.4.21在文件libstdc ++.so.6中未定义。文件位置为: /usr/lib/x86_64-linux-gnu/
程序猿说找了网上的教程,都没有解决。然后甩锅给我。。。我也不会呀!!!硬着头皮上
查找编译gcc时生成的最新动态库:
find / -name libstdc++.so*
发现在不同的文件夹下有libstdc++.so.6.0.21,libstdc++.so.6.0.22文件。分别拷贝到 /usr/lib/x86_64-linux-gnu/目录下
***************************************************
现在重建默认库的软连接。(为啥拷贝上面两个文件,系统给程序猿弄乱了,libstdc++.so.6.0.22是能找到的最高版本,不知道哪个文件能用,只好从高版本慢慢降低版本来搞事情了)
切换工作目录:
cd /usr/lib/x86_64-linux-gnu/
删除原来软连接:
rm -rf libstdc++.so.6
将默认库的软连接指向最新动态库libstdc++.so.6.0.22试试:
ln -s libstdc++.so.6.0.22 libstdc++.so.6
结果:运