symbol lookup error: /usr/lib64/libstdc++.so.6: undefined symbol: _ZNSt7num_getIcSt19istreambuf_i...

编译报错:symbol lookup error: /usr/lib64/libstdc++.so.6: undefined symbol: _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE, version GLIBCXX_3.4  问题解决

1.思路总结,出现该问题是由于系统中GLBCX 3.4 对应的libstdc++.so.6的库文件版本不匹配。

解决步骤:

1:查询系统中已安装的GLIBCXX 版本

#strings /usr/lib/libstdc++.so.6 | grep GLIBCXX


2、如上图,GLIBCXX_3.4 在系统中已安装,libstdc++.so.6: undefined symbol (符号未定义,很有可能是由于libstdc++.so.6这个文件的原因)

3.切换到/usr/lib目录下,查看libstdc++.so.6  对应的什么文件

cd /usr/lib




别问我,为什么会有这么多版本的,费了好大劲才找到的.并且每个版本都试了一遍。以前被谁把默认的文件版本给改了

4、重点来了,因为系统是centos5.8 ,老系统了,与GLIBCXX_3.4 匹配的是libstdc.so.6.0.8

ln修改软链接文件介绍如下:

ln  -snf    想要修改成哪个版的文件(libstdc++.so.6.0.8)    链接到哪个文件(ibstdc++.so.6)

执行命令      #ln -snf  libstdc++.so.6.0.8 libstdc++.so.6


备注:libstdc++.so.6.0.19 版本好像也行,在一台centos7.5 的系统上是这个版本,也能正常完成编译。


经验总结:出现:undefined symbol: _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE, version GLIBCXX_3.4  类似的故障现象可以根据报错的路径下看看该版本的文件,与相同系统下的文件是否一致,版本是否一致,对照着找版本才能更快找合适匹配的文件版本,不然一个个试试就是摸瞎,浪费精力。

你可能感兴趣的:(symbol lookup error: /usr/lib64/libstdc++.so.6: undefined symbol: _ZNSt7num_getIcSt19istreambuf_i...)