2013-04-18 12 views
5

Sto cercando di installare il cross compilatore, this tutorial, e quando voglio fare libgcc ho solo messo make all-target-libgcc nel mio terminale. Questo make getta erroreCompilng libgcc xgcc error

checking whether ln -s works... yes 
checking for i586-elf-gcc... /usr/src/build-gcc/./gcc/xgcc -B/usr/src/build-gcc/./gcc/   -B/usr/local/cross/i586-elf/bin/ -B/usr/local/cross/i586-elf/lib/ -isystem /usr/local/cross/i586-elf/include -isystem /usr/local/cross/i586-elf/sys-include 
checking for suffix of object files... configure: error: in `/usr/src/build-gcc/i586-elf/libgcc': 
configure: error: cannot compute suffix of object files: cannot compile 
See `config.log' for more details. 
make: *** [configure-target-libgcc] Error 1 

In config.log ho trovato

Target: i586-elf 
Configured with: ../gcc-4.8.0/configure --target=i586-elf --prefix=/usr/local/cross --  disable-nls --enable-languages=c,c++ --without-headers : (reconfigured) ../gcc-4.8.0/configure --target=i586-elf --prefix=/usr/local/cross --disable-nls --enable-languages=c,c++ --without-headers : (reconfigured) ../gcc-4.8.0/configure --target=i586-elf --prefix=/usr/local/cross --disable-nls --enable-languages=c,c++ --without-headers 
Thread model: single 
gcc version 4.8.0 (GCC) 
configure:3358: $? = 0 
configure:3347: /usr/src/build-gcc/./gcc/xgcc -B/usr/src/build-gcc/./gcc/ - B/usr/local/cross/i586-elf/bin/ -B/usr/local/cross/i586-elf/lib/ -isystem /usr/local/cross/i586-elf/include -isystem /usr/local/cross/i586-elf/sys-include -V >&5 
xgcc: error: unrecognized command line option '-V' 
xgcc: fatal error: no input files 

Infatti xgcc non hanno l'opzione '-V'. Sto cercando come compilare libgcc.

Grazie in anticipo

+0

Normalmente 'libgcc' fa parte del compilatore GCC, quindi deve essere creato con GCC. Non hai bisogno di azioni speciali per farlo costruire. –

+2

Stesso errore qui. gcc versione 4.8.1 (GCC) – e19293001

risposta

10

Ecco il problema: prima si è tentato di costruire libgcc come hai descritto, si è costruito un estremo bare-bones cross compiler. Ora, parte dei test standard eseguiti dallo script configure consiste nel testare il compilatore per vedere se produrrà un file eseguibile funzionante in condizioni normali. Il tuo compilatore di bare bones non può. Fortunatamente, per libgcc, non è necessario produrre un file eseguibile, solo una libreria statica libgcc.a. Il problema è che lo stupido script GNU non lo comprende.

Ho riscontrato questo stesso problema e ho escogitato una soluzione molto brutta. È necessario commentare una sezione del file libgcc/configure nella directory di origine di gcc. Ecco la sezione che ho commentato per la mia versione; fare qualcosa di simile al vostro:

In linea 3484:

{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 
$as_echo "$ac_file" >&6; } 
# BEGIN PHILLIP EDIT 
# if test -z "$ac_file"; then : 
    # $as_echo "$as_me: failed program was:" >&5 
# sed 's/^/| /' conftest.$ac_ext >&5 

# { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 
# $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} 
# { as_fn_set_status 77 
# as_fn_error "C compiler cannot create executables 
# See \`config.log' for more details." "$LINENO" 5; }; } 
# fi 
ac_file='a.out' 
# END PHILLIP EDIT 
ac_exeext=$ac_cv_exeext 

Spero che questo aiuti.

+0

Ho provato diverse versioni di GCC, è sempre lo stesso. La tua risposta sembra essere l'unica che risolve il mio problema. –