Eu tentei fazer a mesma coisa e falhei devido a muitos erros do mesmo tipo. Tentei corrigir um por um e consegui mais um! Eu "rebaixei" para o php 5.2.14 e não tive mais problemas.
Estou tentando compilar o php no meu mac.
Eu segui este tutorial: link
Eu também verifiquei este post: Compile o PHP 5.3.2 com extensão intl no Snow Leopard 10.6.3
aqui estão minhas opções de configuração:
./configure \ --prefix=/usr \ --with-apxs2=/usr/sbin/apxs \ --with-ldap=/usr \ --with-kerberos=/usr \ --enable-cli \ --with-zlib-dir=/usr \ --enable-exif \ --enable-ftp \ --enable-mbstring \ --enable-mbregex \ --enable-sockets \ --with-iodbc=/usr \ --with-curl=/usr \ --with-config-file-path=/etc \ --sysconfdir=/private/etc \ --with-mysql-sock=/tmp \ --with-mysql=/usr/local/mysql \ --with-openssl=/usr \ --with-xmlrpc \ --with-xsl=/usr \ --without-pear \ --with-libxml-dir=/usr \ --with-iconv=/usr/local \ --with-pdo-mysql=/usr/local/mysql/bin/mysql_config \ --with-gd \ --with-jpeg-dir=/opt/local \ --with-png-dir=/opt/local \ --with-freetype-dir=/opt/local \ --with-mcrypt=/opt/local \ --enable-intl \ --with-icu-dir=/opt/local
Eu mudo o Makefile, substitua isto:
$(CC) $(MH_BUNDLE_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ && cp $@ libs/libphp$(PHP_MAJOR_VERSION).so
para isso:
$(CC) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) $(MH_BUNDLE_FLAGS) -o $@ && cp $@ libs/libphp$(PHP_MAJOR_VERSION).so
Eu também tive este -lstdc ++ em EXTRA_LIBS no Makefile.
aqui está a mensagem de erro:
In file included from /opt/local/include/unicode/utypes.h:36, from /usr/local/src/php-5.3.3/ext/intl/grapheme/grapheme.h:21, from /usr/local/src/php-5.3.3/ext/intl/php_intl.h:26, from main/internal_functions.c:47: /opt/local/include/unicode/umachine.h:308: error: redefinition of typedef ‘UChar’ /usr/include/libxml2/libxml/encoding.h:41: error: previous declaration of ‘UChar’ was here make: *** [main/internal_functions.lo] Error 1
eu tentei outra compilação sem intl (delete 2 últimas linhas em ./configure) e funciona.
Alguém pode me explicar a mensagem de erro ou indicar o que pode estar errado nas opções ./configure? muito obrigado antecipadamente
Ou então, novamente, você poderia construir libxml2 do mais novo pacote de fontes estáveis, que é o que eu fiz, já que voltar para o 5.2 não era uma opção e eu compila virtualmente todas as dependências do php (libicu, também) manualmente na minha caixa dev G4: 1) obtenha o pacote de código-fonte mais recente da libxml2 no link 2) compile libxml2: tar xf libxml2-sources-2.7.7.tar.gz cd libxml2-2.7.7 VER = 2,7,7 ./configure --enable-shared --enable-static --prefix = / opt / libxml2 - $ {VER} fazer & & faça instalar cd / opt; rm -rf libxml2; ln -s libxml2 - $ {VER} libxml2 3) compile o php com --with-libxml-dir = / opt / libxml2 (não se esqueça de rm config.cache apenas para o caso de você não limpar tudo entre suas tentativas de configurar / construir).
espero que ajude, chris
Eu sei que isso é antigo, mas me deparei com o mesmo problema. Simplesmente comentando a linha
typedef uint16_t UChar;
em /opt/local/include/unicode/umachine.h resolveu o problema para mim.
O problema é que tanto o ICU quanto o libxml2 definem o UChar. Este é o código problemático na libxml2, especificamente /usr/include/libxml2/libxml/encoding.h:
#ifdef LIBXML_ICU_ENABLED
/* Forward-declare UConverter here rather than pulling in <unicode/ucnv.h>
* to prevent unwanted ICU symbols being exposed to users of libxml2.
* One particular case is Qt4 conflicting on UChar32: <rdar://problem/5100933>.
*/
#include <stdint.h> struct UConverter; typedef struct UConverter UConverter;
#ifdef _MSC_VER typedef wchar_t UChar;
#else typedef uint16_t UChar;
#endif
#endif
Se você instalar o libxml2 a partir do código-fonte, este código parece não estar lá, então resolvi o problema usando o libxml2 instalado a partir do código-fonte.