Долгое время поддерживал собственный пакет PECL Расширение Intl для 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, но его Международный пакет зависит от ICU 50.1.2 из базового репо CentOS 7. Однако даже с установленной базовой версией репо (и в обычном месте) я все еще не могу создать расширение стандартным методом, показанным выше.
После долгих поисков в Google я обнаружил ответь здесь.
Мне нужна была более новая версия компилятора GCC. Репозиторий обновлений CentOS 7 имеет 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
Успех