这两天在新机器CentOS Linux上启动以太坊parity节点时,总是遇到问题,头疼,我忘记保存log了。大概是下面:
GLIBCXX_3.4.21 not found
GLIBCXX_2.18 not found
但是可以确认的是,parity依赖两个库,我用的是parity稳定版 2.0.8(其它版本也一样)。我做了两件事:
1. gcc 要升级
2. 升级 glibc-2.18
默认CentOS Linux没有安装gcc,但是用yum install gcc 只能安装到4.8.5这个版本,parity需要更高的gcc版本才能运行。我在其它机器上安装的5.4的gcc是能够满足要求的。
故需要升级gcc,网上找了一些资料,我就升级到了7.3,方法如下:
#!/bin/bash
#在非root账户下,使用sudo命令
#获取源码
sudo wget http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
#解压
sudo tar -xvf gcc-7.3.0.tar.gz
cd gcc-7.3.0
sudo ./contrib/download_prerequisites
cd ..
#建立编译输出目录
sudo mkdir gcc-build-7.3.0
#进入下面目录,执行命令,生成Makefile文件
cd gcc-build-7.3.0
sudo ../gcc-7.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
#执行命令进行编译,此处利用4个job,需编译时约40分钟,此值不宜设置过高
sudo make -j4
#安装
sudo make install
安装完gcc后,还要删除原来的版本库,并复制新库加软链接。
1. 复制libstdc++.so.6.0.24 到 /usr/lib64目录下
cp gcc-build-7.3.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24 /usr/lib64
2. 更新软链接
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.24 libstdc++.so.6
以上就真正更新好gcc到7.3版本了。
现在再解决 GLIBCXX_2.18 not found的问题,比较简单。
curl -O http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxf glibc-2.18.tar.gz
cd glibc-2.18/
mkdir build
cd build/
../configure --prefix=/usr
make -j2
make install
完毕!
再执行./parity version就能正常显示版本了,也可以正常开始 parity 节点同步。