/usr/lib/x86_64-linux-gnu,解决/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not f...

当调用高版本GCC编译的程序遇到GLIBCXX_3.4.21未找到的问题时,通常是由于系统中旧的libstdc++.so.6不支持该版本。通过检查库支持的版本,发现缺少3.4.21。由于无root权限无法直接替换系统文件,可以采取设置LD_LIBRARY_PATH环境变量指向包含新版本libstdc++.so.6的目录,以此解决依赖问题。
摘要由CSDN通过智能技术生成

解决/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found问题

问题分析

调用的高版本的gcc,生成的动态库没有替换老版本gcc的动态库导致的,找到新版的gcc库指定。

查看libstdc++.so.6支持版本

$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC

GLIBCXX_3.4

GLIBCXX_3.4.1

GLIBCXX_3.4.2

GLIBCXX_3.4.3

GLIBCXX_3.4.4

GLIBCXX_3.4.5

GLIBCXX_3.4.6

GLIBCXX_3.4.7

GLIBCXX_3.4.8

GLIBCXX_3.4.9

GLIBCXX_3.4.10

GLIBCXX_3.4.11

GLIBCXX_3.4.12

GLIBCXX_3.4.13

GLIBCXX_3.4.14

GLIBCXX_3.4.15

GLIBCXX_3.4.16

GLIBCXX_3.4.17

GLIBCXX_3.4.18

GLIBCXX_3.4.19

GLIBC_2.3

GLIBC_2.2.5

GLIBC_2.14

GLIBC_2.4

GLIBC_2.18

GLIBC_2.3.4

GLIBC_2.17

GLIBC_2.3.2

GLIBCXX_DEBUG_MESSAGE_LENGTH

可以看到gcc的动态库没有3.4.21版本的

出现这些问题,使用高版本gcc时,系统没有找到新生成gcc`的动态库。

修复问题

网上的解决版本,将最新动态库libstdc++.so.6.0.21复制到`/usr/lib目录下。

由于没有root权限,不能修改系统下的文件。

可以指定环境变量的库来解决问题

首先找到新的ibstdc++.so。

$ locate libstdc++.so

/lib/libstdc++.so

/lib/libstdc++.so.6

/lib/libstdc++.so.6.0.21

$ strings /lib/libstdc++.so.6.0.21 | grep GLIBC

GLIBCXX_DEBUG_MESSAGE_LENGTH

GLIBCXX_3.4

GLIBCXX_3.4.1

GLIBCXX_3.4.2

GLIBCXX_3.4.3

GLIBCXX_3.4.4

GLIBCXX_3.4.5

GLIBCXX_3.4.6

GLIBCXX_3.4.7

GLIBCXX_3.4.8

GLIBCXX_3.4.9

GLIBCXX_3.4.10

GLIBCXX_3.4.11

GLIBCXX_3.4.12

GLIBCXX_3.4.13

GLIBCXX_3.4.14

GLIBCXX_3.4.15

GLIBCXX_3.4.16

GLIBCXX_3.4.17

GLIBCXX_3.4.18

GLIBCXX_3.4.19

GLIBCXX_3.4.20

GLIBCXX_3.4.21

GLIBC_2.3

GLIBC_2.2.5

GLIBC_2.3.2

这里可以看到GLIBCXX_3.4.21。

指定一下新的gcc库来解决。

export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值