apt-get: relocation error:GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

本文记录了一位程序员在将Ubuntu系统从12.04逐步升级到16.04过程中遇到的`apt-get: relocation error`问题。在尝试使用`apt-get`时,系统提示GLIBCXX_3.4.21未在libstdc++.so.6中定义。通过查找系统中不同版本的libstdc++.so*文件,并创建软链接指向正确的动态库版本,最终成功解决了问题。经过反复试验,发现libstdc++.so.6.0.21与GLIBCXX_3.4.21存在关联,修复了系统错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序猿因新项目要做,服务器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

结果:运

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值