软件安装遇到 "/lib64/libstdc++.so.6: version `********' not found" 类似问题的解决方案

/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found 为例

问题分析

  1. 该软件的默认gcc动态库是/lib64/libstdc++.so.6;gcc动态库没有更新,不满足当前软件的需求
  2. 需要修改编译时指定的库(或路径);编译时搜索动态库原理详见https://blog.csdn.net/mybelief321/article/details/9099659
  3. 因此在编译之前,在环境变量中添加满足条件的动态库路径即可$LD_LIBRARY_PATH

解决过程

1. 首先查看当前动态库的版本
$ strings /lib64/libstdc++.so.6 | grep GLIB #报错的动态库是 /lib64/libstdc++.so.6
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.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

果然/lib64/libstdc++.so.6中没有GLIBCXX_3.4.20

2. 修改环境变量

因为公共目录下的lib能满足要求,故在环境变量./~bash_profile中添加即可

$ vi ./~bash_profile
export LD_LIBRARY_PATH=/share/app/gcc/9.3.0/lib64:$LD_LIBRARY_PATH
#/share/app/gcc/9.3.0/lib64 这是我的公共目录!!!别照抄惹!!!

或者很多时候,如果安装了conda,conda的lib目录也会有比较新的gcc动态库的,可以自行检查。如:

$ strings /YourCondaPath/lib/libstdc++.so | grep GLIB
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
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
...

你可能感兴趣的:(软件安装遇到 "/lib64/libstdc++.so.6: version `********' not found" 类似问题的解决方案)