2011-08-26 18 views
9

Sto tentando di eseguire il debug di un problema di autotools per un progetto open source, che non riesce durante la fase di configurazione. Mi piacerebbe vedere il codice/eseguibile che configura sta cercando di funzionare.file temporanei autotools

Tuttavia, config.log mostra solo che qualcosa non è riuscito (non il codice che ha tentato di compilare) e non so dove sono archiviati gli eseguibili temporanei (e probabilmente verranno prontamente eliminati comunque).

C'è un modo per ottenere gli autotools per mantenere i file temporanei in giro? Non importa a quale livello è specificato - con args da configurare, argonf a autoconf quando genera configure, o anche qualche invocazione m4.

EDIT Quando qualcosa non funziona, configure.log assomiglia a questo:

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

Quando un test non riesce per la configurazione, config.log stampa il programma e il comando di compilazione utilizzato per eseguire il programma. Questo è il caso per me almeno. Ricevo 'configure: failed program was:' righe appena prima che il programma venga stampato. – Yann

+0

@Yann: Non sta succedendo per me. Su MacOSX vedo questo comportamento, ma su Ubuntu non lo faccio. – paleozogt

+0

Cosa segnala config.log quando un test fallisce? – Yann

risposta

7

Si tratta di un hack completo, ma funziona. È possibile modificare lo script configure; in particolare, è possibile modificare la subroutine ac_fn_c_try_compile(). Cerca per questa linea nello script di configurazione, quindi modificarlo aggiungendo queste righe subito dopo la dichiarazione iniziale di 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 

Questo costringerà conftest $ ac_ext (cioè conftest.c) da stampare al config .log file, ogni volta. Tieni presente che, ogni volta che riesegui autoconf (se lo stai facendo) o autoreconf, questo script di configurazione personalizzata viene sovrascritto. C'è probabilmente un modo per dirottare la definizione di ac_fn_c_try_compile.

+2

bel trucco! Vorrei piuttosto suggerire qualcosa sulle linee di: $ as_echo "$ as_me: il programma di test è:"> & 5 sed 's/^/|/'conftest. $ ac_ext> & 5 – andreabedini