PECL是什麼
PECL是一個PHP擴充套件庫,提供了一個PHP所有已知擴充套件的下載和託管目錄。 PECL通過pear進行打包和安裝。
安裝PECL
在CentOS 中使用PECL,要先安裝pear
yum install -y php-pear php-devel
官網的安裝環境要求:
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。
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
開啟軟體查詢頁面,輸入關鍵詞查詢。由於gcc
是包含在devtoolset
中的,所以需要搜尋devtoolset
。開啟最新版軟體的頁面,按照頁面提示執行命令即可:
# 安裝軟體包
$ sudo yum install devtoolset-7
# 啟用軟體包
$ scl enable devtoolset-7 bash
啟用軟體包命令只在當前會話生效,啟用成功後,在當前會話視窗執行pecl install swoole
,安裝就不會再出現上述的問題了。