CentOS 7 中安裝 Swoole

諾大的院子發表於2019-06-18

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版本要求,但是仍然編譯不通過。yumgcc版本也是4.8,自己編譯安裝新版本gcc太過麻煩,這裡選用 Software Collections 來安裝新版本的gcc。

SCL是什麼

SCL(Software Collections) 是一個Linux系統的軟體倉庫,包含了多種常用軟體的編譯版本,它可以讓你在系統中同時安裝和使用某個軟體的不同版本,而不用擔心和系統原來安裝的軟體產生衝突。

SCL專案主頁:https://www.softwarecollections.org/

安裝SCL

  1. 安裝SCL的釋出包centos-release-scl
    yum install centos-release-scl
  2. 啟用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,安裝就不會再出現上述的問題了。

相關文章