2011-08-26 22 views
9

Estoy intentando depurar un problema de autotools para un proyecto de código abierto, que está fallando en el paso de configuración. Me gustaría ver que el código/ejecutable que configure está intentando ejecutar.Autotools archivos temporales

Sin embargo, config.log solo muestra que algo falló (no el código que intentó compilar) y no sé dónde se están almacenando los archivos ejecutables temporales (y probablemente se eliminen rápidamente).

¿Hay alguna manera de obtener autotools para mantener sus archivos temporales? No importa en qué nivel se especifique esto, ya sea con args para configurar, args a autoconf cuando genera configure, o incluso alguna invocación de m4.

EDITAR Cuando algo falla, configure.log se parece a esto:

configure:3285: checking whether we are cross compiling 
configure:3293: gcc -o conftest.exe -DU_STATIC_IMPLEMENTATION -O3 conftest.c >&5 
configure:3297: $? = 0 
configure:3304: ./conftest 
configure:3308: $? = 1 
configure:3315: error: in `/home/bobthebuilder/Development/icu/build': 
configure:3317: error: cannot run C compiled programs. 
If you meant to cross compile, use `--host'. 
See `config.log' for more details 
+0

Cuando una prueba falla para la configuración, config.log imprime el programa y el comando de compilación utilizado para crear el programa. Este es el caso para mí al menos. Obtengo que 'configure: failed program was': líneas justo antes de que se imprima el programa. – Yann

+0

@Yann: Eso no me está pasando. En MacOSX veo este comportamiento, pero en Ubuntu no lo veo. – paleozogt

+0

¿Qué informa config.log cuando falla una prueba? – Yann

Respuesta

7

Este es un truco completo, pero funciona. Puede editar el script de configuración; específicamente, puede editar la subrutina ac_fn_c_try_compile(). Buscar esta línea en el script de configuración, luego editarlo añadiendo estas líneas justo después de la declaración inicial de ac_fn_c_try_compile:.

ac_fn_c_try_compile() 
{ 
    echo "=================== " >> config.log 
    echo "conftest.$ac_ext is " >> config.log 
    cat conftest.$ac_ext >> config.log 
    echo "=================== " >> config.log 

Esto obligará conftest $ ac_ext (es decir conftest.c) a imprimir a la config archivo .log, todo el tiempo. Tenga en cuenta que, cada vez que vuelve a ejecutar autoconf (si está haciendo esto) o autoreconf, este script de configuración personalizada se sobrescribe. Probablemente haya una forma de secuestrar la definición de ac_fn_c_try_compile.

+2

buen truco! Prefiero sugerir algo en las líneas de: $ as_echo "$ as_me: el programa de prueba es:"> & 5 sed 's/^/|/'conftest. $ ac_ext> & 5 – andreabedini

Cuestiones relacionadas