私はlibxml2のバグを修正しようとしています。 --prefix=/Server/software
を使用すると、--with-icu
とコンパイルできません。私はbug report hereを提出しましたが、intlサポートでPHPをコンパイルするときに、それをコンパイルするためにコンパイルする必要があります。私はそれがMakefileの問題だと思う。 Makefileの私の経験は限られています。目的の結果に、リンクされたバグレポートに提出できるパッチがあります。接頭辞を使用するときにICUサポートでコンパイルするようにlibxml2にパッチを適用するにはどうすればよいですか?
--with-icu
フラグは、LIBXML_ICU_ENABLED
を定義します。インクルードされたコードは、icuとlibxml2の両方のヘッダー(特に、両方ともUCharを使用している)を含めると競合を解決すると考えられています。 --enable-intl
で有効化されたPHPプラグインintlにはicuが必要です。 libxml2は、PHPがDOM/XML関数に必要です。
2つの問題があります。
まず、この設定:
./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
を実行すると、ほとんどのrelaventビーイング:
./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ディレクトリにあるこのファイルを探していると思われます。 --with-icu
と--prefix=/Server/software
を使用する際に明らかにこれは、パスの問題である
#ifdef LIBXML_ICU_ENABLED
#include <unicode/ucnv.h>
#endif
:
これは、エラーが参照しているものです。 --with-icu
がなければうまくコンパイルされますが、これはicuとlibxml2の両方でPHPをコンパイルするときに定義されたUCharの競合を解決するために必要です。
icu-config --cflags
の結果である:これはを/ dev/nullにパイプされ
-O2 -Wall -ansi -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long
。
icu-config --ldflags
の結果は次のとおりです。
-lpthread -lm -L/Server/software/lib -licui18n -licuuc -licudata -lpthread -lm
これらの問題を解決するために変更する必要がありますか?
私はICU_CONFIG問題のパッチを掲載しました:https://bugzilla.gnome.org/show_bug.cgi?id=663214 –