Bâtiment crti.o pour i386
Question
J'essaie de construire un compilateur croisé avec x86_64 étant l'hôte et i386 étant la cible. J'obtiens le (tout à commun) CRTI.O: aucune erreur de fichier de ce type. Au lieu de saisir un CRTI.O et Crtn.o déjà construits à partir d'une distribution ... comment puis-je construire ces fichiers explicitement à partir de sources GLIBC (ou peut-être GCC)?
FYI, je suis bien conscient de l'option -M32 pour les compilateurs x86_64. Je préférerais simplement avoir un environnement de compilateur à 32 bits. De plus, la raison pour laquelle je ne veux pas utiliser l'un des compilateurs de Gazillion Build I386 est que je prévois de mélanger et de faire correspondre les versions GLIBC / Binutils / GCC en fonction de mes besoins de test.
Merci, Chenz
La solution
Êtes-vous sûr que vous utilisez correctement la configuration de la compilation croisée? Ça devrait être
CBUILD = CHOST = x86_64-pc-linux-gnu CTARGET = i386-pc-linux-gnu
Alors que vous exécutez une construction sur un x86_64
, pour qu'un compilateur fonctionne sur un x86_64
, qui génère du code pour un i386
.
Si vous avez utilisé CHOST = i386-pc-linux-gnu
, vous essairez de générer des binaires 32 bits, qui devront être liés à un 32 bits libc
. Ce qui est bien, si vous avez déjà un 32 bits libc
, mais il semble que vous ne le fassiez pas.
c'est à dire
$ 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
Autres conseils
Voici une possibilité (de ici)
Vous devez installer le package LIBC-DEV 32 bits de votre distribution, ou vous devez - désir-multilib qui se traduira par un compilateur qui ne prend pas en charge le mode 32 bits.