升级GLIBC前,需要将默认的gcc4.85升级,而升级gcc走编译有强依赖包,如下操作即可完成升级。
0、gcc 与 g++ 区别
gcc【全称GNU Compiler Collection】 是gnu的c编译器
g++ 是c++编译器
1、 升级gcc
升级gcc有两种方法,1)yum 安装;2)编译安装。当yum安装有问题时,走编译安装
1.1 yum安装 gcc
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache
yum -y install centos-release-scl
yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils
scl enable devtoolset-7 bash
需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 7.3的话:
echo "source /opt/rh/devtoolset-7/enable" >>/etc/profile
验证gcc版本:
gcc --version
参考:https://www.vpser.net/manage/centos-6-upgrade-gcc.html
1.2 编译安装 gcc
gcc编译安装存在依赖关系,需要按以下顺序安装:
- gmp 【gmp-5.0.1.tar.gz】
- mpfr(GNU镜像) 或 官网 【mpfr-3.1.5.tar.gz】
- mpc 【mpc-1.0.3.tar.gz】
- gcc 【gcc-4.9.2】
1)安装 gmp: http://ftp.gnu.org/gnu/gmp/
wget http://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.gz
tar -xvzf gmp-5.0.1.tar.gz
cd gmp-5.0.1/ && mkdir temp && cd temp/
../configure --prefix=/usr/local/gmp-5.0.1
make && sudo make install
2)安装 mpfr:http://ftp.gnu.org/gnu/mpfr/
wget http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.5.tar.gz
tar -xvzf mpfr-3.1.5.tar.gz
cd mpfr-3.1.5/ && mkdir temp && cd temp/
../configure --prefix=/usr/local/mpfr-3.1.5 --with-gmp=/usr/local/gmp-5.0.1
make && sudo make install
3)安装 mpc:http://ftp.gnu.org/gnu/mpc/
wget http://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
tar -xvzf mpc-1.0.3.tar.gz
cd mpc-1.0.3/ && mkdir temp && cd temp/
../configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.5
make && sudo make install
安装三个依赖库后,需要把库路径添加到/etc/ld.so.conf文件中:
vim /etc/ld.so.conf
/usr/local/gmp-5.0.1
/usr/local/mpfr-3.1.5
/usr/local/mpc-1.0.3
添加完路径后,执行生效,将新添加的路径进入动态cache
ldconfig
4)安装 gcc: http://ftp.gnu.org/gnu/gcc/
http://ftp.gnu.org/gnu/gcc/gcc-4.9.2.tar.gz
tar -jxvf gcc-4.9.2.tar.gz
cd gcc-4.9.2/ && mkdir output && cd output/
../configure --prefix=/usr/local/gcc-4.9 --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.5 --with-mpc=/usr/local/mpc-1.0.3
make -j4 && sudo make install 【该过程耗时约 1 h 】
5)验证安装
/usr/local/gcc-4.9/bin/gcc --version
6)添加软链接
cd /bin/
sudo mv gcc gcc_4.85
sudo mv g++ g++_4.85
sudo mv cpp cpp_4.85
sudo mv c++ c++_4.85
.. ..
sudo ln -s /usr/local/gcc-4.9/bin/gcc /bin/gcc
sudo ln -s /usr/local/gcc-4.9/bin/G++ /bin/g++
sudo ln -s /usr/local/gcc-4.9/bin/cpp /bin/cpp
sudo ln -s /usr/local/gcc-4.9/bin/c++ /bin/c++
... ...
g++ --version
2 升级 GLIBC_2.18
1)查看 当前版本
ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
2)将 gcc 从 4.85 版本升级,如上步骤
3)升级glibc
sudo wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar -zxvf glibc-2.18.tar.gz
cd glibc-2.18
mkdir build
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make -j4 && sudo make install
# 验证版本
ldd --version
strings /lib64/libc.so.6 | grep '^GLIBC_'