- 原因: 安装某软件需要gcc>=7.2.1, 但不想干扰集群的gcc. 因此需独立安装并编译.
- 目标: 安装最新的7.5版本.
下载源码
在官方可以找到各个发行版,
gcc发行版官方下载速度较慢(提供的镜像最近的日本镜像更慢,建议用国内镜像 (如上海交大镜像gcc)
# 下载源码, 这里是USTC的
wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz
# 解压
tar -xzf gcc-7.5.0.tar.gz
cd gcc-7.5.0
# 下载依赖库源码
./contrib/download_prerequisites
### 上面一步也可以用yum来实现, 如下, 二选一.
sudo yum install gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel
# 使用下载方法会从官方下载gmp, mpfr, mpc和isl 几个工具的源码.
# 下载后会解压相应包, 但貌似没有进行编译安装? 反正我没有进去编译也可以.
# 如果实在不行, 可以进入相应包进行编译, 例如
# cd isl-0.15 && ./configure && make && make install
编译安装
进行一般的编译. 注意, 安装gcc也是需要先有旧版本的gcc,g++的.
mkdir build
cd build
# 指定gcc7安装地址,指定所需安装语言,不支持32位 disable-multilib
../configure --prefix=/usr/local/gcc-7.5 --enable-checking=release --enable-languages=c,c++,fortran,go --disable-multilib
make -j 4 && make install
整个安装时间较长, 几十分钟到一小时. 去喝口茶吃点东西吧~
如果编译遇到这个问题:
./a.out: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’ not found (required
用 find / -name "libstdc++.so*"
找到这个这个目录下面的libstdc++.so.6.0.xx, 例如24.
find / -name "libstdc++.so*"
# /usr/local/lib64/libstdc++.so.6.0.24
cp /usr/local/lib/libstdc++.so.6.0.24 /usr/lib
ldconfig
网友评论