2009-02-27 13 views
0

Ich versuche einen Cross-Compiler mit x86_64 als Host und i386 als Ziel zu erstellen. Ich bekomme die (alle gemeinsam) crti.o: Nein solche Dateifehler. Anstatt einen bereits erstellten crti.o und crtn.o aus einer Distribution zu holen ... wie könnte ich diese Dateien explizit aus glibc (oder möglicherweise gcc) Quellen erstellen?Erstellen crti.o für i386

FYI, mir ist die -m32-Option für x86_64-Compiler bekannt. Ich würde lieber nur eine 32-Bit-Compiler-Umgebung haben. Der Grund, warum ich keine der gazillion-fähigen i386-Compiler verwenden möchte, liegt auch daran, dass ich glibc/binutils/gcc-Versionen je nach meinen Testanforderungen mischen und anpassen möchte.

Danke, Chenz

+0

möglich Duplikat [crti.o Datei fehlt] (http://stackoverflow.com/questions/91576/crti-o-file-missing) – user2284570

Antwort

0

Sind Sie sicher, dass Sie die Kreuzkompilierung korrekt konfigurieren? Es sollte

CBUILD = CHOST = x86_64-pc-linux-gnu 
CTARGET = i386-pc-linux-gnu

sein, wie Sie einen Build auf einem x86_64, für einen Compiler läuft auf einem x86_64 zu laufen, welcher Code für einen i386 erzeugt. Wenn Sie CHOST = i386-pc-linux-gnu verwendet haben, versuchen Sie, 32-Bit-Binärdateien zu generieren, die mit einer 32-Bit-libc verknüpft werden müssen. Was ist in Ordnung, wenn Sie bereits eine 32-Bit libc haben, aber es klingt wie Sie nicht.

dh

$ tar xvjf gcc-*.tar.bz2 
$ cd gcc-*/ 
$ mkdir build 
$ cd build 
$ ../configure --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=i386-pc-linux-gnu
1

Hier ist eine Möglichkeit (von here)

Sie benötigen Distributionen 32 Bit libc-dev-Paket, oder Sie müssen --disable-multilib zu installieren, führt zu einem Compiler, der den Bitmodus 32 nicht unterstützt.

+0

Ich will nur 32bit, nicht die andersherum. Ich möchte keine Distrokopie verwenden ... ich möchte aus der Quelle bauen. Bitte lesen Sie die Mitteilung. –