编译一些软件的时候会出现类似如下问题:
rror: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
undefined reference to `std::__cxx11::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::_M_sync(char*, unsigned long, unsigned long)@GLIBCXX_3.4.21'
原因是libstdc++.so.6里面没有这个GLIBCXX_3.4.20/GLIBCXX_3.4.21版本,可以通过如下命令查看
# find / -name libstdc++.so.6
/usr/lib64/libstdc++.so.6
# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
...
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH
看有人通过升级gcc可以获得新版本的库,从而包含需要的GLIBCXX_3.4.*,我通过yum install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils 升级了gcc/c++到7.3,库依然不变(难道需要先删除系统自带的gcc 4.x,然后再安装?)
目前测试有效的方法,手动编译安装gcc-7.2 gcc-7.5