在centos7.2升级之gcc4.8.5 升级到 gcc-7.2.0

升级导读:

最近在安装swoole时,出现一下错误

/usr/include/php/Zend/zend_operators.h: In function 'void fast_long_increment_function(zval*)':
/usr/include/php/Zend/zend_operators.h:446:68: error: '__builtin_saddl_overflow' was not declared in this scope
  if (UNEXPECTED(__builtin_saddl_overflow(Z_LVAL_P(op1), 1, &lresult))) {
                                                                    ^
/usr/include/php/Zend/zend_portability.h:312:52: note: in definition of macro 'UNEXPECTED'
 # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
                                                    ^
/usr/include/php/Zend/zend_operators.h: In function 'void fast_long_decrement_function(zval*)':
/usr/include/php/Zend/zend_operators.h:500:68: error: '__builtin_ssubl_overflow' was not declared in this scope
  if (UNEXPECTED(__builtin_ssubl_overflow(Z_LVAL_P(op1), 1, &lresult))) {
                                                                    ^
/usr/include/php/Zend/zend_portability.h:312:52: note: in definition of macro 'UNEXPECTED'
 # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
                                                    ^
/usr/include/php/Zend/zend_operators.h: In function 'void fast_long_add_function(zval*, zval*, zval*)':
/usr/include/php/Zend/zend_operators.h:554:80: error: '__builtin_saddl_overflow' was not declared in this scope
  if (UNEXPECTED(__builtin_saddl_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult))) {
                                                                                ^
/usr/include/php/Zend/zend_portability.h:312:52: note: in definition of macro 'UNEXPECTED'
 # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
                                                    ^
/usr/include/php/Zend/zend_operators.h: In function 'void fast_long_sub_function(zval*, zval*, zval*)':
/usr/include/php/Zend/zend_operators.h:657:80: error: '__builtin_ssubl_overflow' was not declared in this scope
  if (UNEXPECTED(__builtin_ssubl_overflow(Z_LVAL_P(op1), Z_LVAL_P(op2), &lresult))) {
                                                                                ^
/usr/include/php/Zend/zend_portability.h:312:52: note: in definition of macro 'UNEXPECTED'
 # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
                                                    ^
make: *** [swoole_async_coro.lo] 错误 1

错误思考:

错误原因有可能是我的php安装方式导致的,初期我的php是通过yum install php安装的,所以在编译swoole扩展时出现了上述的错

解决思考:

如果是yum安装问题,那么直接卸载,然后重新在php官网下载进行”编译安装“,然后进行swoole扩展处理,就不在出现这些错误,这样也应该可以啊,后来网上找了很多答案,最终都说gcc版本不够,根据官方的要求如下:
php-7.0 或更高版本
gcc-4.8 或更高版本
make
autoconf
pcre (CentOS系统可以执行命令:yum install pcre-devel)
默认情况下,CentOS 7.2预装的gcc版本是4.8.x,我的版本是4.8.5,按照要求是够了,那为什么报错了,按照思路,要么卸载重新编译,要么升级

升级步骤:

1. 下载gcc-7.2.0或者其他版本

可以去GCC官方镜像站点下载,获取其他地方下载也可以(建议下载本地再上传,镜像都是国外的,太慢)

wget http://www.netgull.com/gcc/releases/gcc-7.2.0/gcc-7.2.0.tar.gz 
2. 解压gcc-7.2.0
tar -xvf gcc-7.2.0.tar.gz
3. 进入到gcc-7.2.0,安装依赖,通常包含三个依赖:
cd gcc-7.2.0 
./contrib/download_prerequisites 

会下载三个依赖,当然也可以直接下载:

gmp-6.1.0.tar.gz
mpfr-3.1.4.tar.gz
mpc-1.0.3.tar.gz

4. 创建一个build目录,并进入到这个build目录
mkdir build

cd build
5. 开始build 并安装

这个make后面有个-j4参数,这个是指定编译时并发的数量,当然这个值最好设定为你机器的核数的倍数,2倍核数应该可以,再高可能会影响速度

../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib && make -j 4 && make install
6. 测试版本
gcc --version

g++ --version
7. 可以查看gcc命令当前安装的位置:
which gcc

whereis gcc
备注:如果遇到其它问题,你有更好的解决方法,又或者哪里有错误,都可以留言,我们一起探讨哦!!!,看到这了,就喜欢或者留个言吧 (* ̄︶ ̄)。

你可能感兴趣的:(在centos7.2升级之gcc4.8.5 升级到 gcc-7.2.0)