缘由

Arm服务器运行Spark程序的时候报错

  1. spark /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found

解决办法

译了更高版本的gcc,我用的gcc4.7.3,将新gcc的libstd++.so.6.x链接过去/usr/lib64/libstd++.so.6, 问题解决。

编译gcc

CentOS7默认gcc版本4.8.5

gcc -v
gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)

源码编译

GCC源码地址为http://ftp.gnu.org/gnu/gcc

  1. 下载

    wget http://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz
    tar -zxvf gcc-8.3.0.tar.gz
    cd gcc-8.3.0
    
  2. 利用源码包里自带的工具下载所需要的依赖项 ```bash ./contrib/download_prerequisites

注意:由于网络问题ftp://gcc.gnu.org/pub/gcc/infrastructure/ 下载容易卡住 具体路径见contrib/download_prerequisites 可手动下载,地址http://mirror.linux-ia64.org/gnu/gcc/infrastructure/ 然后放到gcc-8.3.0文件夹下面


3. 安装
```bash
mkdir build #创建编译输出目录
cd build
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib #生成Makefile
make #编译
make install 安装

遇到错误

  1. lbzip2: Cannot exec: No such file or directory

    yum -y install bzip2
    
  2. configure: error: C++ preprocessor “/lib/cpp” fails sanity check

    yum install glibc-headers
    yum install gcc-c++