CentOS 7如何編譯安裝升級gcc版本?
由于配置CentOS-SCLo-scl.repo
與CentOS-SCLo-scl-rh.repo
后執行yum install -y devtoolset-7
安裝總是異常,遂決定編譯安裝gcc7.5
# 備份之前的yum .repo文件至 /tmp/repo_bak 目錄
mkdir -p /tmp/repo_bak && cd /etc/yum.repo.d && /bin/mv ./*.repo /tmp/repo_bak# 更換yum軟件源為阿里云鏡像源,執行腳本后一直全部回車即可
bash <(curl -sSL https://linuxmirrors.cn/main.sh)# yum安裝編譯依賴
yum install -y lbzip2 gcc gcc-c++ gmp-devel mpfr-devel libmpc-devel isl-devel# 阿里云鏡像源下載gcc 7.5版本源碼包,升級至其它版本,更改URL中的7.5.0版本號即可
wget https://mirrors.aliyun.com/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz# 解壓下載源碼包
tar -zxvf ./gcc-7.5.0.tar.gz
# cd進去解壓源碼目錄
cd gcc-7.5.0# 官方鏡像源,下載速度較慢,推薦阿里云鏡像源
wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
wget https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2# 基于阿里云鏡像源下載
wget https://mirrors.aliyun.com/gnu/gmp/gmp-6.1.0.tar.bz2
wget https://mirrors.aliyun.com/gnu/mpfr/mpfr-3.1.4.tar.bz2
wget https://mirrors.aliyun.com/gnu/mpc/mpc-1.0.3.tar.gz
wget http://ftp.ntua.gr/mirror/gnu/gcc/infrastructure/isl-0.16.1.tar.bz2# 編譯前務必執行檢查是否ok,后輸出 All prerequisites downloaded successfully. 為正常
./contrib/download_prerequisites # 創建構建目錄
cd .. && mkdir -p gcc-build-7.5.0#進入構建目錄
cd gcc-build-7.5.0# 生成Makefile文件,--disable-multilib參數為只編譯64位庫,-enable-multilib參數為同時編譯32位和64位庫,是否為64位操作系統可以執行uname -a查看 x86_64為64位操作系統,i386 為32位操作系統
../gcc-7.5.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib# -j$(nproc)啟動并行編譯,同時運行CPU總核數個編譯任務,加速編譯過程,筆者測試8核CPU編譯預計20分鐘
make -j$(nproc)make install# 以絕對路徑驗證的GCC版本,是否安裝成功
/usr/local/bin/gcc --versionwhich gcc # 查看當前 GCC 路徑(通常是 /usr/bin/gcc)
gcc --version # 查看當前GCC版本# 重命名系統自帶GCC相關文件
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
mv /usr/bin/g++ /usr/bin/g++-4.8.5
mv /usr/bin/gcov /usr/bin/gcov-4.8.5# 注冊新 GCC 到 alternatives
update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc 100
update-ualternatives --install /usr/bin/g++ g++ /usr/local/bin/g++ 100
update-alternatives --install /usr/bin/gcov gcov /usr/local/bin/gcov 100# 注冊舊 GCC 到 alternatives
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8.5 50
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8.5 50
update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-4.8.5 50# 輸入1回車
update-alternatives --config gcc# 聲明新安裝GCC的環境變量,注意此步必須執行,否則后續GCC編譯無法調用7.5版本新的運行庫
cat << 'EOF' >> ~/.bashrc
export PATH=/usr/local/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
export LIBRARY_PATH=/usr/local/lib64:$LIBRARY_PATH
export C_INCLUDE_PATH=/usr/local/include
export CPLUS_INCLUDE_PATH=/usr/local/include/c++/7.5.0
EOF
source ~/.bashrc# 以非絕對路徑,查看當前GCC版本是否為7.5
cd && gcc --version