Я пытаюсь исправить ошибку в libxml2. Я не могу заставить его скомпилировать с --with-icu
при использовании --prefix=/Server/software
. Я отправил отчет об ошибке здесь , но мне нужно его скомпилировать для разрешения конфликта при компиляции PHP с поддержкой intl. Я подозреваю, что это проблема с Makefile. Мой опыт работы с Makefile ограничен. Желаемый результат - это патч, который можно отправить в связанный отчет об ошибке.
Флаг --with-icu
определяет LIBXML_ICU_ENABLED
. Включенный код должен разрешать конфликт при включении заголовков из icu и libxml2 (в частности, оба используют UChar). PHP плагин intl, активированный с помощью --enable-intl
, требует icu. libxml2 необходим PHP для функций DOM / XML.
Есть две проблемы.
Во-первых, этот конфиг:
./configure --prefix=/Server/software --enable-shared --enable-static --with-icu
Результаты:
configure: error: libicu config program icu-config not found
Это происходит из-за этого кода в configure.in:
WITH_ICU=0
if test "$with_icu" != "yes" ; then
echo Disabling ICU support
else
ICU_CONFIG=icu-config
if ${ICU_CONFIG} --cflags >/dev/null 2>&1
then
ICU_LIBS=`icu-config --ldflags`
LDFLAGS="$LDFLAGS $ICU_LIBS"
WITH_ICU=1
echo Enabling ICU support
else
AC_MSG_ERROR([libicu config program icu-config not found])
fi
fi
В частности ICUCONFIG=icu-config
не уважает --prefix=/Server/software
. Я могу обойти это, выполнив export PATH=/Server/software/bin:$PATH
.
Это "исправляет" проблему ./configure.
Во-вторых, когда я запускаю make
, я получаю ошибки, наиболее подходящие из которых:
./include/libxml/encoding.h:31:26: error: unicode/ucnv.h: No such file or
directory
Файл unicode/uncv.h
находится в /Server/software/include/unicode/uncv.h
. Я подозреваю, что компилятор ищет этот файл в локальном каталоге и в моем каталоге / usr.
На это ссылается ошибка:
#ifdef LIBXML_ICU_ENABLED
#include <unicode/ucnv.h>
#endif
Очевидно, что это проблема пути при использовании --with-icu
и --prefix=/Server/software
. Без --with-icu
он прекрасно компилируется, но это необходимо для разрешения определенного конфликта UChar при компиляции PHP как с icu, так и с libxml2.
Результат icu-config --cflags
:
-O2 -Wall -ansi -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long
Это передается в /dev/null.
.
Результат icu-config --ldflags
:
-lpthread -lm -L/Server/software/lib -licui18n -licuuc -licudata -lpthread -lm
Что нужно изменить, чтобы решить эти проблемы?