2010-07-21 9 views
5

Sto cercando di creare una toolchain di compilazione incrociata basata su GCC4.5 e newlib con oro e ottimizzazione del tempo di collegamento attivata. GCC si compila bene ma non ha generato i file crt1.o o crti.o. Perciò quando tenta di utilizzare il compilatore per la costruzione di Newlib si lamenta con il messaggio:Mancanza di crt1 e crti durante la compilazione incrociata

ld: error: cannot open crti.o: No such file or directory 
ld: error: cannot open crtn.o: No such file or directory 
ld: error: cannot find -lc 

Durante la ricerca di file denominati crt * nella directory in cui è installato GCC4.5 ho ottenuto il seguente risultato:

find ../../../tooltarget/ -name "crt*" -print #(result modified to consume less space) 
crtprec80.o, crtend.o, crtfastmath.o, crtbegin.o, crtendS.o, crtprec32.o, crtbeginS.o, crtbeginT.o, crtprec64.o 

Dalle specifiche GCC sembra che gcc abbia bisogno sia dei file crtbegin.o che crti.o, ma solo uno di essi è disponibile.

*startfile:          
%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o 
%s;:crtbegin.o%s} 

seguito è riportato il flag ho usato durante la compilazione di GCC:

--prefix=${TTP}/usr   --build=x86_64-pc-linux-gnu 
--host=x86_64-pc-linux-gnu --target=x86_64-awn-linux-gnu 
--with-gmp=${TTP}/usr  --with-mpc=${TTP}/usr 
--with-mpfr=${TTP}/usr  --with-libelf=${TTP}/usr    
--enable-languages=c  --enable-lto       
--disable-nls    --disable-shared      
--disable-multilib   --disable-decimal-float     
--disable-libmudflap  --disable-libssp      
--disable-libgomp   --disable-threads      
--without-headers   --with-newlib       
--with-build-sysroot=${TTP} --with-build-time-tools=${TTP}/usr/bin 

Sono sicuro che su se questo è dovuto al Ho configurato GCC a torto, o "roba" semplicemente non funziona in questo modo, o se i file crti.o dovrebbero provenire da qualche altra parte.

Grazie in anticipo

Allan W. Nielsen

+1

possibile duplicato di [file crti.o mancante] (http://stackoverflow.com/questions/91576/crti-o-file-missing) – user2284570

+0

Ho appena risolto un problema come questo con gcc build aggiungendo '--host = x86_64' per './configure' script, ma non sono sicuro se aiuta. – ton

risposta

1

Alcuni crt* file provengono non dal compilatore, ma dalla libreria C. Sospetto che questo sia il caso qui per il tuo crt1.o e crti.o.

+0

No, ci sono ctr1.S e crti.S che sono generati da uno script durante il tempo di costruzione di gcc. – user2284570

Problemi correlati