Linux-GLIBCXX版本过低导致编译错误--version `GLIBCXX_3.4.20' not found

最近在CentOS6.2上安装protobuf2.4.1,编译的时候出现如下错误:

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by */3rd-party/protobuf-2.4.1/src/.libs/libprotobuf.so.7)
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by */3rd-party/protobuf-2.4.1/src/.libs/libprotoc.so.7)

1)检查了gcc版本:gcc --version 得到结果gcc (GCC) 4.9.2 已经比较新;

2)strings /usr/lib64/libstdc++.so.6 |grep GLIBCXX 得到结果:

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_DEBUG_MESSAGE_LENGTH

3)sudo  find / -name  libstdc++.so.6* 得到结果:

/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.pyc
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.pyo
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.py
/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.pyc
/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.pyo
/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.py
/usr/lib64/libstdc++.so.6.bak
/usr/lib64/libstdc++.so.6.0.17
/usr/lib64/libstdc++.so.6.0.13
/usr/lib64/libstdc++.so.6
/usr/local/lib64/libstdc++.so.6.0.18
/usr/local/lib64/libstdc++.so.6.0.18-gdb.py
/usr/local/lib64/libstdc++.so.6.0.20
/usr/local/lib64/libstdc++.so.6.0.20-gdb.py
/usr/local/lib64/libstdc++.so.6

可以看到,已经有libstdc++.so.6.0.20

4)ls -al /usr/lib64/libstdc++.so.6 得到结果:

lrwxrwxrwx. 1 root root 30 11月 16 11:31 /usr/lib64/libstdc++.so.6 -> /usr/lib64/libstdc++.so.6.0.17

说明虽然gcc已经更新到最新版,但是连接还是旧版本,所以只需要修改连接就可以了。

 

解决方案步骤:

1)sudo cp /usr/local/lib64/libstdc++.so.6.0.20 /usr/lib64  //复制文件

2)sudo rm -rf /usr/lib64/libstdc++.so.6  //删除旧文件

3)sudo ln -s /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6 //链接到新版本

posted @ 2018-06-30 21:43  Twinhead  阅读(19659)  评论(0编辑  收藏  举报