Configurando o PHP no Solaris 10 de 64 bits

3

No momento, estamos executando o PHP 5.2.13 em um servidor Solaris 10. Eu preciso ativar alguns recursos adicionais, então eu fui para executar o script de configuração, mas estou recebendo alguns erros.

Eu fiz um 'export CFLAGS="- m64"' para garantir que o GCC fosse compilado no modo de 64 bits, mas parece que não tenho uma versão de 64 bits do libiconv.so. Eu tentei executar o script com '- sem-iconv' mas sem dados. Aqui está o final do meu config.log:

configure:20017: checking for strftime
configure:20471: checking whether to enable LIBXML support
configure:20519: checking libxml2 install dir
configure:20548: checking for xml2-config path
configure:20706: checking whether libxml build works
configure:20733: gcc -o conftest -m64  -D_POSIX_PTHREAD_SEMANTICS  -R/usr/ucblib -L/usr/ucblib -R/usr/local/lib/../lib/gcc/sparc-sun-solaris2.10/3.4.6 -L/usr/local/lib/../lib/gcc/sparc-sun-solaris2.10/3.4.6 -R/usr/local/lib -L/usr/local/lib conftest.c 

     -lrt -lresolv -lm -lnsl -lsocket  -lgcc -lxml2 -lz -liconv -lm -lsocket -lnsl 1>&5
ld: fatal: file /usr/local/lib/libiconv.so: wrong ELF class: ELFCLASS32
ld: fatal: File processing errors. No output written to conftest
collect2: ld returned 1 exit status
configure: failed program was:
#line 20722 "configure"
#include "confdefs.h"


    char xmlInitParser();
    int main() {
      xmlInitParser();
      return 0;
    }

Existe alguma maneira de contornar isso? Eu tenho batido minha cabeça contra isso desde ontem. Se isso ajudar, aqui está minha linha de configuração:

./configure  --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-libxml-dir=/usr/local --with-zlib=/usr/local --with-xpm-dir=/usr/local --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-apxs2=/usr/local/apache2/bin/apxs --without-pgsql --with-jpeg-dir=/usr/local/lib --with-zlib-dir=/usr/local/lib --with-gd=/usr/local --enable-mbstring --enable-exif --enable-force-cgi-redirect --enable-sockets --with-png-dir=/usr/local/lib --with-curl=/usr/local --with-ldap=/usr/local --with-openssl=/usr/local/ssl --with-gettext --with-pcre-dir=/usr/local --with-freetype-dir=/usr/local --with-mssql=/usr/local/freetds --with-readline --enable-soap
    
por Derek 04.04.2012 / 21:46

2 respostas

2

Esse sempre foi o meu maior incômodo com o Solaris. Essencialmente, se você vai compilar algo, você precisa ter certeza de que TODAS as seguintes opções estão corretas:

  • CFLAGS / CXXFLAGS (para C ++)
  • LDFLAGS (para o linker)
  • Possivelmente LD_LIBRARY_PATH

Certifique-se de que quaisquer diretórios include (especificados com -I ) e diretórios de bibliotecas ( -R e / ou -L ) correspondam à arquitetura que você está construindo. Para o Solaris, gcc geralmente olha primeiro para /usr/lib , /usr/sfw/lib etc, mas se você quiser 64 bits, precisará compilar com /usr/lib/64 , /usr/sfw/lib/64 , etc - especificando gcc -m64 não é suficiente para fazer isso.

Você pode verificar o ISA da biblioteca iconv existente usando ldd e file . Se você compilou libiconv você mesmo, você precisará recompilar isto, caso contrário encontre outra fonte binária ou ... recompile: -)

    
por 05.04.2012 / 00:23
2

No meu caso, para compilar o PHP 5.4.7 eu tive que adicionar o PHP_LDFLAGS env var também: LDFLAGS="- L / opt / selfcompilado / libs / 64 -L / lib / 64 -L / usr / sfw / lib / 64 -m64" PHP_LDFLAGS = $ LDFLAGS

    
por 23.10.2012 / 17:49