解决/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