由於PHP7在編譯過程需要的GCC版本比較高,而在 wdlinux 中內建的 gcc 版本滿足不了PHP7的編譯需求,因此這裡才有了 gcc 的編譯過程
實際上在編譯 gcc 的過程中又遇到了好多坑,這才有了這篇文章用於記錄整個過程 安裝 GCC 下載
先到這裡去找一個新版本的 gcc 源碼,大家可以自行到 gcc 官網尋找地址,這裡使用這個地址下載,主要是考慮的下載速度問題
http://gcc.skazkaforyou.com/releases/
我下載的是 5.3.0 版本,這個是當前日期下的最新版本了
http://gcc.skazkaforyou.com/releases/gcc-5.3.0/gcc-5.3.0.tar.gz 配置
可以先執行一下
./configure
執行結果
從上圖可以看到,這裡需要幾個 with 選項,命令寫全後如下
./configure --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc
到這裡後可以先跳到 安裝 GMP、MPFR、MPC 查看,如果都已經安裝完成,就可以執行配置過程了,僅僅執行上面的命令,會得到這樣的錯誤提示
需要關閉 multilib,新命令如下
./configure --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc --disable-multilib
再執行配置過程
返回 creating Makefile 表示配置過程成功執行 編譯並安裝
make && make install
發現編譯沒過,表示汗一個,會提示錯誤資訊讓開啟 config.log 查看日誌,如下提示
“when loading shared libraries:libmpc.so.3:cannot open shared object file: No such file or directory”.
因此,需要修改環境變數 LD_LIBRARY_PATH, 命令為
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib
然後再執行編譯過程即可,程式編譯完成後執行命令
source /etc/profile
再執行
gcc -v
查看版本號碼
安裝 GMP、MPFR、MPC
那麼等號後面的這幾個路徑是從哪裡來的呢。這裡就需要先安裝這幾個檔案 下載
GMP
MPFR
MPC 配置
因為各個模組之間都有依賴關係,因此這裡需要先安裝 GMP , 再安裝 MPFR , 最後再安裝 MPC,
各個的配置的過程如下
GMP
./configure --prefix=/usr/local/gmp
MPFR
./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
MPC
./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr
編譯並安裝
所有的編譯命令都是同樣的,執行命令如下
make && make install
注意:執行命令前,請確定自己所在的目錄是否為各自的模組源碼目錄 寫在最後的:
上面的編譯過程是延續了老版本的安裝風格,在網上查閱了多個資料並驗證後發現在 gcc4.4版本以及當前編譯版本 gcc5.3.0中均有 contrib/download_prerequisites,因此,可以省略下載安裝 GMP,MPC,MPFR的過程,直接執行命令
/usr/src/gcc-5.3.0/contrib/download_prerequisites
即可完成安裝