2010-07-21 5 views
5

Ich versuche, eine Cross-Compile-Toolchain basierend auf GCC4.5 und Newlib mit Gold und Link-Time-Optimierung aktiviert zu erstellen. GCC kompiliert gut, aber es hat die Dateien crt1.o oder crti.o nicht erzeugt. Deshalb, wenn ich den Compiler für den Aufbau Newlib zu verwenden versucht, wirft sie mit der Nachricht:Missing crt1 und crti wenn crosscompiling

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 

Wenn für crt * im Verzeichnis mit dem Namen Dateien suchen, wo GCC4.5 installiert ist i folgendes Ergebnis bekam:

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 

Aus den GCC-Spezifikationen scheint gcc sowohl die Dateien crtbegin.o als auch crti.o zu haben, aber nur eine davon ist verfügbar.

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

Es folgt die Flags i verwendet, wenn GCC kompilieren:

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

Ich bin sicher auf, wenn dies aufgrund ich GCC falsch konfiguriert oder „Material“ einfach nicht auf diese Weise nicht funktionieren, oder wenn die Dateien crti.o von woanders kommen sollten.

Vielen Dank im Voraus

Allan W. Nielsen

+1

möglich duplikat von [crti.o datei fehlt] (http://stackoverflow.com/questions/91576/crtio-o-file-missing) – user2284570

+0

Ich habe gerade ein Problem wie dieses gelöst mit gcc build addieren '--host = x86_64 'zu'./configure' Skript, aber nicht sicher, ob es hilft. – ton

Antwort

1

Einige crt* Dateien kommen nicht vom Compiler, sondern aus der Bibliothek C. Ich vermute, das ist hier der Fall für Ihre crt1.o und crti.o.

+0

Nein, es gibt ctr1.S und crti.S, die während der Erstellungszeit von gcc von einem Skript generiert werden. – user2284570