由于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

即可完成安装

Logo

更多推荐