compilação PHP falha causa da libpcre

3

Estou tentando compilar o PHP como quero usar o PHPBrew para alternar entre várias versões do PHP.

Eu já resolvi uma tonelada de problemas no processo, mas com esse particular eu não posso ir mais longe. Estou recebendo esta mensagem de erro no processo make :

/usr/bin/ld: /usr/libpcre.a(pcre_exec.o): relocation R_X86_64_32S against '_pcre_ucd_stage1' can not be used when making a shared object; recompile with -fPIC
/usr/libpcre.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make: *** [libphp5.5.5.la] Fehler 1
Error

Eu precisava adicionar um link simbólico de /usr/libpcre.a -> /usr/lib/x86_64-linux-gnu/libpcre.a , senão ele reclamaria de não encontrar libpcre.a .

Eu também tentei adicionar "EXTRACFLAGS=-fPIC" a make , mas isso não mudaria nada. É a primeira vez que estou compilando algo, então nem tenho certeza se obtenho o básico certo.

Isso está no Ubuntu 13.10 (não vendo os mesmos problemas em 12.04). Este é o meu comando PHPBrew:

phpbrew install 5.5.5 +default+mysql+pdo+apxs2

Que resulta na geração das seguintes opções de configuração:

./configure '--prefix=/home/malte/.phpbrew/php/php-5.5.5' '--with-config-file-path=/home/malte/.phpbrew/php/php-5.5.5/etc' '--with-config-file-scan-dir=/home/malte/.phpbrew/php/php-5.5.5/var/db' '--with-pear=/home/malte/.phpbrew/php/php-5.5.5/lib/php' '--disable-all' '--enable-phar' '--enable-session' '--enable-short-tags' '--enable-tokenizer' '--with-pcre-regex' '--with-zlib=/usr' '--with-libdir=lib/i386-linux-gnu' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--enable-pdo' '--with-apxs2=/usr/bin/apxs2' '--enable-dom' '--enable-libxml' '--enable-simplexml' '--enable-xml' '--enable-xmlreader' '--enable-xmlwriter' '--with-xsl' '--with-libxml-dir=/usr' '--enable-bcmath' '--with-bz2=/usr' '--enable-calendar' '--enable-cli' '--enable-ctype' '--enable-dom' '--enable-fileinfo' '--enable-filter' '--enable-shmop' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-json' '--enable-mbregex' '--enable-mbstring' '--with-mhash' '--with-mcrypt=/usr' '--enable-pcntl' '--with-pcre-regex=/usr' '--with-pcre-dir=/usr' '--enable-phar' '--enable-posix' '--with-readline=/usr' '--enable-sockets' '--enable-tokenizer' '--enable-zip' 2>&1 > /home/malte/.phpbrew/build/php-5.5.5/build.log

Acho que tenho todos os pacotes relevantes instalados:

dpkg --get-selections | grep pcre
libpcre++0:amd64                install
libpcre3:amd64                  install
libpcre3:i386                   install
libpcre3-dev:amd64              install
libpcrecpp0:amd64               install

Qualquer ajuda é muito apreciada!

    
por s1lv3r 19.12.2013 / 18:33

1 resposta

3

Você precisa reconstruir libpcre com código independente de posição. A maneira direta de fazer isso é criar ou instalar os objetos libpcre compartilhados (por exemplo, libpcre.so ) que são criados com -fPIC .

Como o arquivo da biblioteca estava em / usr / lib / x86_64-linux-gnu, os objetos compartilhados podem estar lá também. Tente adicionar -L/usr/lib/x86_64-linux-gnu a LDFLAGS do php. Isso também salvará você do symlinking para / usr.

    
por 19.12.2013 / 19:31