2010-08-27 11 views
3

Je suis en train de construire un compilateur croisé arm-elf-gcc.Erreur lors de la construction de arm-elf-gcc

Alors je firts installé binutils 2.18 avec les options de configuration suivantes:

./configure --target=arm-elf --enable-interwork --enable-multilib 

Cela semble fonctionner très bien.

suivant J'ai installé gmp, mpfr et libmpc

maintenant à l'gcc lui-même.

// modifier - Suppression erreur précédente et mis à jour avec l'actuel (j'ai essayé de construire tout séparément)

D'abord j'installer un gcc d'amorçage avec ces configurer les options:

--target=arm-elf --disable-libssp --with-newlib --without-headers --with-gnu-as --with-gnu-ld 

Et après, je essayez de construire newlib 1.17.0 avec elle

--target=arm-elf --disable-werror --disable-newlib-supplied-syscalls --disable-nls --with-gnu-as --with-gnu-ld 

Mais il en résulte toujours dans la même erreur. Peut-être que newlib essaie de construire pour l'architecture x86 avec l'apple gcc (je cours ces choses tous sur OS X) qui ne comprend peut-être pas ces paramètres?

cc1: error: unrecognized command line option "-msse4" 
../../../../../../newlib/libc/argz/dummy.c:1: error: bad value (core2) for -march= switch 
cc1: error: unrecognized command line option "-msse4" 
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag! 
../../../../../../newlib/libc/argz/argz_add.c:1: error: bad value (core2) for -march= switch 
cc1: error: unrecognized command line option "-msse4" 
../../../../../../newlib/libc/argz/argz_add_sep.c:1: error: bad value (core2) for -march= switch 
cc1: error: unrecognized command line option "-msse4" 
make[8]: *** [lib_a-argz_add.o] Error 1 
make[8]: *** Waiting for unfinished jobs.... 
../../../../../../newlib/libc/argz/argz_append.c:1: error: bad value (core2) for -march= switch 
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag! 
cc1: error: unrecognized command line option "-msse4" 
../../../../../../newlib/libc/argz/argz_create.c:1: error: bad value (core2) for -march= switch 
cc1: error: unrecognized command line option "-msse4" 
../../../../../../newlib/libc/argz/argz_count.c:1: error: bad value (core2) for -march= switch 
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag! 
cc1: error: unrecognized command line option "-msse4" 
../../../../../../newlib/libc/argz/argz_delete.c:1: error: bad value (core2) for -march= switch 
make[8]: *** [lib_a-dummy.o] Error 1 
make[8]: *** [lib_a-argz_create.o] Error 1 
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag! 
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag! 
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag! 
make[8]: *** [lib_a-argz_add_sep.o] Error 1 
make[8]: *** [lib_a-argz_delete.o] Error 1 
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag! 
make[8]: *** [lib_a-argz_count.o] Error 1 
make[8]: *** [lib_a-argz_append.o] Error 1 
FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'm' flag! 
cc1: error: unrecognized command line option "-msse4" 
../../../../../../newlib/libc/argz/argz_create_sep.c:1: error: bad value (core2) for -march= switch 
make[8]: *** [lib_a-argz_create_sep.o] Error 1 
make[7]: *** [all-recursive] Error 1 
make[6]: *** [all-recursive] Error 1 
make[5]: *** [all] Error 2 
make[4]: *** [multi-do] Error 1 
make[3]: *** [all-multi] Error 2 
make[2]: *** [all] Error 2 
make[1]: *** [all-target-newlib] Error 2 
make: *** [all] Error 2 
+0

Le fichier config.log tentera de vous le dire. S'il vous plaît poster le fragment pertinent (c'est généralement gros). – reinierpost

+0

a ajouté la configuration.journal sortie – V1ru8

Répondre

1

Toutes les combinaisons de binutils, gcc et newlib ne fonctionnent pas. J'ai renoncé depuis longtemps à essayer personnellement de trouver des combinaisons. La dernière fois que j'ai réussi était dans les jours 3.x de gcc, et vous ne pouvez pas compiler gcc 3.x avec gcc 4.x ou au moins cela devient plus difficile. Peut-être essayer sans interwork et multilib jusqu'à ce que vous obtenez le bras droit de travail. Peut-être que vous avez besoin d'un eabi dans une certaine forme de bras-non-eabi, quelque chose comme ça?

Voici une combinaison qui obtient un gcc travail et libgcc

http://www.cowlark.com/2009-07-04-building-gcc/

sourcery code devrait avoir leurs informations de construction disponibles pour comprendre comment, au moins aller aussi loin que binutils et gcc.

D'une manière ou d'une autre, vous obtenez une architecture core2, mais je ne vois rien d'évident.

+0

voir ma mise à jour post, j'ai essayé de construire avec seulement les options minimales et toujours obtenir des erreurs lors de la construction de newlib. – V1ru8

0

Oui, c'est un ancien article, mais je l'ai trouvé car je cherchais une réponse. Maintenant, j'ai trouvé la réponse, alors je l'afficherai ici.

Regardez de près le "as" - lequel est réellement exécuté, comme pour l'ordinateur hôte ou pour l'architecture cible?

La réponse est: L'as pour l'architecture cible.

Cela se produit lorsque vous compilez sur Mac - à la fois sur PowerPC et sur Intel. Vous devez configurer votre variable d'environnement PATH juste après la construction de binutils, afin que les binutils correctes soient trouvées, sinon vos outils natifs x86 (ou PowerPC) seront utilisés pour construire votre cible ARM. Cela ne marchera pas.

+0

Comment définissez-vous l'environnement PATH au milieu d'une construction? Avez-vous pirater le Makefile? THX. J'essaye de construire la source androïde sur un ordinateur portable de Mac en cours d'exécution d'Intel et je reçois la même chose "je ne comprends pas l'option". –

+0

Non, vous ne piratez pas le Makefile. -Après la construction et l'installation de votre binutils (par exemple make && sudo make install), vous exécutez 'export PATH ="/usr/local/bras-aucun-eabi/bin: $ PATH "' –