gRPC 插件编译问题集

包版本列表:https://pecl.php.net/package/grpc

为什么要编译安装,是因为目标服务器的版本太旧了,CentOS 6.5 版本,上古时期的服务器,项目和依赖错综复杂,不便于直接升级服务器的版本,新版本则不需要编译直接有现成的预编译好的扩展能用

使用 Docker php7.4-fpm 镜像编译

问题:make error:fatal error: zlib.h: No such file or directory
原因:缺少 zlib.h 文件,未安装 zlib
解决方法:apt install zlib1g-dev

使用 CentOS 6.5 虚拟机编译

安装 pecl
wget http://pear.php.net/go-pear.phar
php go-pear.phar


问题:unrecognized command line option “-std=c++11”
原因:gcc 版本太低
解决方法:升级 gcc 版本(编译安装可能要三个多小时)
1. 安装 gcc 4.7.2:https://www.xmodulo.com/upgrade-gcc-centos.html
wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo -P /etc/yum.repos.d
sh -c ‘echo “enabled=1” >> /etc/yum.repos.d/devtools-1.1.repo’
yum install devtoolset-1.1
scl enable devtoolset-1.1 bash
gcc –version
2. 安装 gcc 4.8:
rpm –import http://linuxsoft.cern.ch/cern/slc6X/x86_64/RPM-GPG-KEY-cern
wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
yum install devtoolset-2
scl enable devtoolset-2 bash
gcc –version

我试过这三个版本的 gcc,只要不是 4.4.7 版本的,另外两个都可以正常编译


问题:Autoconf version 2.68 or higher is required
原因:autoconf 版本太低
解决方法:升级 autoconf
rpm -e –nodeps autoconf-2.63
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
tar -zxvf autoconf-2.69.tar.gz
cd autoconf-2.69
mkdir -p /usr/local/autoconf
./configure –prefix=/usr/local/autoconf/
make && make install


问题:error: ‘INT64_MAX’ was not declared in this scope
原因:c++ 核心版本太低
解决方法:暂时无法解决,降低 grpc 版本到 1.7.0 该问题会消失(最新版本是 1.38.0,版本的差异较大,可能会导致不可预料的问题)

编译成功!enjoy