由于项目需要,在比较老的RedHat系统上进行项目展开,需要对自带的gcc4.7进行更新,由于校内网极差,踩过无数的坑,特意写下此篇博客用于记录;特意提醒,千万不能随意在根目录下安装自认为对的系统,极易引起不同版本间的冲突,我因此付出了大量的时间和精力!非常感谢张晨侃技术员和lemon姐的认真帮助,没有两位的帮助我也不可能脱坑!!!
安装GCC 4.8.4
- 安装GCC源码;
- 解压,并进行下载相关依赖项,网好的同学可以运行文件内的./contrib/download_prerequisites 脚本文件自动安装网络不好的同学则需要将gmp、mpfr、mpc三个依赖包自行下载并放到系统某个路径下,通过更改download_prerequisites内下载这三个文件的代码句注释,并更改解压文件路径即可,更改后的文件如下:
- .建立编译输出目录:
mkdir gcc-build-4.8.4 - .进入输出目录,执行以下命令,并生成makefile文件:
. cd gcc-build-4.8.4
…/gcc-4.8.4/configure --prefix=/opt/gcc-4.8.4 --enable-checking=release --enablelanguages=c,c++,fortran,java --disable-multilib
-
编译且安装
make -j && make install -
添加环境变量
若想在系统内保持多个gcc版本,则:需将/usr/bin/目录下的gcc文件更改为gcc.bak,然后再ln -s /opt/gcc-4.8.4/bin/gcc /usr/bin/gcc
建立软连接,其中/opt/gcc-4.8.4/
是gcc的安装路径;若要更换为原来的版本则将gcc.bak改回去就好了 -
测试gcc -v即可看到已经升级成功了!!!
glibc安装
- 解压,并且
mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
- `make -j && make install
libstdc++升级
rm -rf /usr/lib64/libstdc++.so.6
cp libstdc++.so.6.0.20 /usr/lib64/
ln -s /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6