2010-01-12 4 views
1

Lors de l'exécution de gcc sur la ligne de commande dans OS X, de temps en temps, j'obtiens des avertissements et/ou des erreurs. Mais je compile toujours pour plusieurs architectures (avec l'option -arch), et puisque gcc engendre plusieurs processus pour chaque architecture, les erreurs seront constamment brouillées. Par exemple, juste en cours d'exécution gcc (options) -### entraîneraPourquoi la sortie gcc d'Apple est-elle mélangée lors de la compilation pour plusieurs architectures?

Using built-in specs. 
Target: powerpc-apple-darwin9 
Configured with: /var/tmp/gcc/gcc-5493~1/src/configure --disable-checking -enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.0/ --with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib --build=i686-apple-darwin9 --enable-werror-always --program-prefix=powerpc-apple-darwin9- --host=i686-apple-darwin9 --target=powerpc-apple-darwin9 
Thread model: posix 
gcc version 4.0.1 (Apple Inc. build 5493) 
Using built-in specs. 
"/uTarget: powerpc-apple-darwin9 
sr/Configured with: /var/tmp/gcc/gcc-5493~1/src/configure --disable-checking -enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.0/ --with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib --build=i686-apple-darwin9 --enable-werror-always --program-prefix=powerpc-apple-darwin9- --host=i686-apple-darwin9 --target=powerpc-apple-darwin9 
liThread model: posix 
bexgcc version 4.0.1 (Apple Inc. build 5493) 

Dans ce bloc collé copie de la console, vous pouvez voir que la production est foiré. Regardez les lignes:

"/uTarget: 
liThread model: posix 
bexgcc version 4.0.1 (Apple Inc. build 5493) 

Il continue tout au long de la sortie. Il semble que de nombreux programmes différents écrivent sur le terminal en même temps. Le même mélange pour les sorties se produit avec des erreurs, des avertissements et autres. Cela rend la sortie entière inutile et illisible. Y a-t-il quelque chose que je peux transmettre à gcc d'Apple pour imprimer sa sortie sainement?

+0

Je perçois pas confusion dans votre journal. Que pensez-vous est mélangé? –

+0

parlez-vous de l'écrasement de sortie dans /u'Target....\n'usr? –

+0

oui. J'espère que c'est plus clair maintenant. – qedi

Répondre

2

GCC a des programmes pilotes, comme gcc, g++ et gfortran, qui appellent les compilateurs de langages (nommés cc1, cc1plus et f951) au code assembleur généré, puis appelle l'assembleur pour créer des fichiers d'objet, puis l'éditeur de liens (bien, cette dernière étape est un peu plus compliquée, car elle implique de déterminer l'ordre correct des fichiers objets et des bibliothèques, ce qui est fait par un programme nommé collect2). Par conséquent, Apple a ajouté aux pilotes de GCC un «pilote de pilote» qui gère plusieurs options -arch et génère des processus de pilote pour chaque arche. Ces processus s'exécutent simultanément et leur sortie peut parfois être mélangée.

Questions connexes