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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top