1. 程式人生 > >Centos7環境下gcc由4.8升級到6.4

Centos7環境下gcc由4.8升級到6.4

一、環境說明
1.使用的作業系統為centos7
2.本系統內的原GCC版本為4.8,確保機器上已安裝gcc和g++,如果沒有,通過如下面命令安裝預設版本的gcc和g++

yum install gcc
yum install gcc-c++

注:本人因為刪除了預設的gcc和g++(4.8版本),後來因為原始碼編譯gcc6.4需要系統內有c編譯環境,又重新裝了gcc而未裝g++,導致編譯過不去,檢視gcc6.4下的config.log內提示g++命令未找到,故又重灌了g++。

二、升級過程
1.先安裝gmp,mpfr,mpc三個包
安裝gmp包:

wget

https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
tar xvf gmp-6.1.2.tar.xz
cd gmp-6.1.2
./configure –prefix=/usr/local/gmp
make && make install

安裝mpfr包:

wget https://www.mpfr.org/mpfr-current/mpfr-4.0.1.tar.gz
tar xvf mpfr-4.0.1.tar.gz
cd mpfr-4.0.1
./configure –prefix=/usr/local/mpfr –with-gmp=/usr/local/gmp
make && make install

安裝mpc包:

wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
tar xvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure –prefix=/usr/local/mpc –with-gmp=/usr/local/gmp -with-mpfr=/usr/local/mpfr
make && make install

將庫檔案加入如下檔案:
vi /etc/ld.so.conf
增加以下三行
/usr/local/gmp/lib
/usr/local/mpfr/lib
/usr/local/mpc/lib
#
加完後使用如下命令更新
ldconfig -v

原始碼安裝gcc包:

wget ftp://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.gz
tar xvf gcc-6.4.0.tar.gz
./configure –enable-checking=release –enable-languages=c,c++ –disable-multilib –with-gmp=/usr/local/gmp –with-mpfr=/usr/local/mpfr –with-mpc=/usr/local/mpc
make -j2
make install

刪除4.8版本,修改6.4版本的軟連結
後續補充

三、安裝過程中出現的問題及解決方法
1.. ../mpc/src/mul.c:error: conflicting types for ‘mpfr_fmma’
解決辦法:
將mul.c內的所有mpfr_fmma函式改名為mpfr_fmma_mul,本人改動了三處地方

2.執行完1後在配置gcc時出現要求mpfr gmp mpc版本要求的錯誤時,在gcc目錄下的config.log日誌內如果有mpfr_add_one_ulp和mpfr_sub_one_ulp不存在的錯誤,需要修改mpfr下的mpfr.h,新增如下內容:

#define mpfr_add_one_ulp(x,r) \
 (mpfr_sgn (x) > 0 ? mpfr_nextabove (x) : mpfr_nextbelow (x))
#define mpfr_sub_one_ulp(x,r) \
 (mpfr_sgn (x) > 0 ? mpfr_nextbelow (x) : mpfr_nextabove (x))