如何从捆绑源构建独立的 Intl 扩展

如何从捆绑源构建独立的 Intl 扩展

长期以来,我一直在维护自己的 PECL 包国际扩展适用于 PHP 5,但现在升级到 PHP 7 时,我无法构建与 PHP 捆绑的扩展。

在全新安装的情况下,我从 PHP 源目录的基础执行以下操作:

cd ext/intl
phpize
./configure --with-icu-dir=/usr
make

Configure 顺利完成,但 Make 抛出一堆我无法理解的 Zend 错误。最后一条消息为make: *** [intl_convertcpp.lo] Error 1

我已粘贴其余输出在这里

我已经尝试使用各种版本的 ICU 库,但结果似乎没有受到影响。查找库没有任何问题。我是否需要指定其他选项才能完成构建?


请注意:我特意将其构建为独立扩展,以便我可以使用自定义(较新)ICU 安装。我的 PHP 运行时来自 Remi repo,但它的国际包裹依赖于 CentOS 7 基础存储库中的 ICU 50.1.2。但是,即使安装了该基础存储库版本(并且位于正常位置),我仍然无法使用上面显示的标准方法构建扩展。

答案1

经过大量的谷歌搜索,我发现在这里回答

我需要一个更新版本的 GCC 编译器。CentOS 7 更新 repo 有 v4.8.5,但__builtin_ssubl_overflow错误消息表明我至少需要 v5。

借助这个StackOverflow 问题我通过安装获得了一个更新的编译器devtoolset-7然后像这样构建:

cd ext/intl
phpize
CXX=/opt/rh/devtoolset-7/root/usr/bin/g++ \
 ./configure --with-icu-dir=/usr
make

成功

相关内容