2010-07-21 18 views
5

Estoy intentando construir una cadena de herramientas de compilación cruzada basada en GCC4.5 y newlib con oro y optimización de tiempo de enlace habilitada. GCC compila bien, pero no generó los archivos crt1.o o crti.o. Por lo tanto, cuando intenta utilizar el compilador para la construcción de NEWLIB se queja con el mensaje:Faltan crt1 y crti en la compilación cruzada

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 búsqueda de archivos con el nombre CRT * en el directorio donde está instalado GCC4.5 me dieron el siguiente resultado:

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 

Según las especificaciones de GCC, parece que gcc necesita los archivos crtbegin.o y crti.o, pero solo uno de ellos está disponible.

*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} 

A continuación se presenta las banderas i empleada en la compilación de 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 

Estoy seguro de si esto es debido a GCC he configurado incorrectamente, o "cosas" simplemente no funciona de esta manera, o si los archivos crti.o deberían venir de otro lado.

Gracias de antemano

Allan W. Nielsen

+1

posible duplicado de [crti.o archivo que falta] (http://stackoverflow.com/questions/91576/crti-o-file-missing) – user2284570

+0

Acabo de resolver un problema como este con gcc acumulación añadiendo '--host = x86_64' a la secuencia de comandos './configure', pero no estoy seguro si ayuda. – ton

Respuesta

1

Algunos crt* archivos no provienen del compilador, pero a partir de la biblioteca C. Sospecho que este es el caso aquí para su crt1.o y crti.o.

+0

No, hay ctr1.S y crti.S que son generados por un script durante el tiempo de compilación de gcc. – user2284570

Cuestiones relacionadas