Ao fazer o download de software de código aberto da Internet (neste caso: PHP 5.5.5), eles geralmente vêm com um "script" do Automake (se posso chamá-lo de script) para criar a partir do código-fonte.
Agora estou tentando fazer uma compilação cruzada para uma arquitetura diferente, mas continuo recebendo um erro diferente sempre que especifico um ./configure --switch diferente. Normalmente, esse erro é uma mensagem curta não descritiva que significa absolutamente nada para ninguém, exceto o desenvolvedor.
checking "whether flock struct is linux ordered"... configure: error: in '/usr/src/hd/lib/php-5.5.5':
configure: error: cannot run test program while cross compiling
Seguido por:
See 'config.log' for more details
Então eu digito:
cat ./config.log
Mas realmente, a única coisa fora do normal que está me mostrando é isso:
configure: exit 1
-
Então, o que dá? Como posso saber qual é o problema?
FYI, minhas opções de configuração parecem um pouco assim:
./configure --prefix="'pwd'/install/" \
--build="i386-pc-linux-gnu" \
--host="mips-linux-gnu" \
--target="mips-linux-gnu" \
--with-libxml-dir="/usr/src/hd/lib/libxml2-2.7.8/install/" \
--enable-soap \
CC="mips-linux-gnu-gcc" \
CFLAGS="-O2 -EL -march=74kf" \
CPP="mips-linux-gnu-cpp" \
CPPFLAGS="-I$CROSS_ROOTFS/include" \
CXX="mips-linux-gnu-g++" \
CXXFLAGS="-O2 -EL -march=74kf" \
CXXCPP="mips-linux-gnu-cpp" \
AR="mips-linux-gnu-ar" \
RANLIB="mips-linux-gnu-ranlib" \
AS="mips-linux-gnu-as" \
NM="mips-linux-gnu-nm" \
LD="mips-linux-gnu-ld" \
LDFLAGS="-L$CROSS_ROOTFS/lib" \
ADDR2LINE="mips-linux-gnu-addr2line"
Como você pode não saber, estou usando o toolchain CodeSourcery para fazer a compilação cruzada para mips. Estou ciente de que não preciso especificar todas as variáveis (como RANLIB), mas não vejo como isso poderia prejudicar.
UPDATE
O problema parece estar em uma (ou mais) das extensões agrupadas, conforme listado aqui: link
Configurando com trabalhos --disable-all. Mas, obviamente, eu preciso de pelo menos algumas dessas extensões para fazer algum trabalho real.
Ainda assim, como posso saber qual deles?
UPDATE
Limitei o problema a uma extensão chamada OPcache que estava ativada por padrão (consulte: link ). Ele foi compilado com sucesso depois de desabilitar isso, junto com outras extensões que não funcionariam no meu sistema de destino de qualquer maneira.
Ainda assim, isso não era óbvio para mim. O que eu fiz foi trabalhar para trás do log de saída, desabilitando as extensões listadas uma a uma até que a coisa estúpida finalmente funcionasse.
Certamente, existe uma maneira melhor de identificar problemas como esses? Caso contrário, que diabos é o ponto inteiro deste absurdo automake?