CentOS 7 中安装 Swoole
PECL
PECL是什么
PECL是一个PHP扩展库,提供了一个PHP所有已知扩展的下载和托管目录。 PECL通过pear进行打包和安装。
安装PECL
在CentOS 中使用PECL,要先安装pear
yum install -y php-pear php-devel
使用PECL安装Swoole
官网的安装环境要求:
php-7.0
或更高版本gcc-4.8
或更高版本make
autoconf
pcre
(CentOS
系统可以执行命令:yum install pcre-devel
)
使用PECL,可以一键下载、编译、安装Swoole
pecl install swoole
安装过程中遇到的问题
编译过程中报的错:
/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.lo] Error 1
ERROR: `make' failed
网上查阅资料得知,是因为gcc
的版本低导致,查询系统gcc
版本
gcc -v
得到结果
...
gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
虽然满足了官网的gcc版本要求,但是仍然编译不通过。yum
中gcc
版本也是4.8,自己编译安装新版本gcc
太过麻烦,这里选用 Software Collections 来安装新版本的gcc。
Software Collections(SCL)
SCL是什么
SCL(Software Collections) 是一个Linux系统的软件仓库,包含了多种常用软件的编译版本,它可以让你在系统中同时安装和使用某个软件的不同版本,而不用担心和系统原来安装的软件产生冲突。
SCL项目主页:https://www.softwarecollections.org/
安装SCL
- 安装SCL的发布包
centos-release-scl
yum install centos-release-scl
- 启用
RHSCL
yum 源yum-config-manager --enable rhel-server-rhscl-7-rpms
利用SCL安装gcc
打开软件查找页面,输入关键词查找。由于gcc
是包含在devtoolset
中的,所以需要搜索devtoolset
。打开最新版软件的页面,按照页面提示执行命令即可:
# 安装软件包
$ sudo yum install devtoolset-7
# 启用软件包
$ scl enable devtoolset-7 bash
启用软件包命令只在当前会话生效,启用成功后,在当前会话窗口执行pecl install swoole
,安装就不会再出现上述的问题了。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: