安装ninja遇到 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found

https://github.com/ninja-build/ninja/releases下载ninja,设置好PATH路径,执行ninja命令显示如下:

[root@test bin]# ./ninja -v
./ninja: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./ninja)
./ninja: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by  ./ninja)

-----------------------------------------------------------------------------------------------------------------------------------------------
执行 strings 命令,发现确实没有`GLIBCXX_3.4.21'和`GLIBCXX_3.4.20'。

[root@test bin]# strings /lib64/libstdc++.so.6.0.19 | 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_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

-------------------------------------------------------------------------------------------------------------------------------------------------------------

解决方法:

1) 从https://ftp.gnu.org/gnu/gcc/选择一个新的版本的gcc,建议版本5以后的。我选择的是6.5.0。

2)编译gcc:

       tar -zxvf gcc-6.5.0.tar.gz

       cd gcc-6.5.0

      mkdir build

     cd  ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

     make

结果遇到了如下错误:C++ preprocessor "/lib/cpp" fails sanity check, 这是由于缺乏必要的c++库导致的,可以执行命令:yum install gcc-c++安装c++库,然后再执行make,就可以继续编译成功。如果想直接升级使用新版本的GCC,再执行make install。就可以了。如果不想使用新版本的gcc,可以继续一下几步,把 libstdc++.so替换为新的库即可。

3)查找  libstdc++.so.6.0.22文件,然后复制到/usr/lib64

4)  cd /usr/lib64

5) unlink libstdc++.so.6 和  ln libstdc++.so.6.0.22  libstdc++.so.6

6) 再执行ninja --version 显示版本如下:

终于搞定。

如果有现成的 libstdc++的新的版本,就不需要这么费周折编译gcc了,直接复制到/usb/lib64,做一下第5)步就可以了。


 

发布了85 篇原创文章 · 获赞 9 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/jimmyleeee/article/details/103399223