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

本文介绍了解决Ninja编译器因版本过低无法运行的问题,通过升级GCC版本或直接替换libstdc++.so.6库文件至最新版本,使Ninja能够正常工作。

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)步就可以了。


 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值