Je construis un projet opensource à partir de la source (CPP) sous Linux. C'est la commande:
$CFLAGS="-g Wall" CXXFLAGS="-g Wall" ../trunk/configure --prefix=/somepath/ --Host=i386-pc --target=i386-pc
$make
Pendant la compilation, je reçois de nombreux avertissements du compilateur. Je veux commencer à les réparer. Ma question est de savoir comment capturer toutes les sorties du compilateur dans un fichier?
$make > file
ne fait pas le travail. Il suffit de sauvegarder la commande du compilateur comme g++ -someoptions /asdf/xyz.cpp
Je veux la sortie de ces exécutions de commandes.
Les avertissements du compilateur se produisent le stderr
, pas le stdout
, c'est pourquoi vous ne les voyez pas lorsque vous redirigez simplement make
ailleurs Essayez plutôt ceci si vous utilisez Bash:
$ make &> results.txt
Le &
signifie "rediriger stdout et stderr vers cet emplacement". D'autres coquilles ont souvent des constructions similaires.
Dans un coquillage:
make> my.log 2> & 1
C'est à dire. > redirections stdout, 2> & 1 redirige stderr au même endroit que stdout
Beaucoup de bonnes réponses jusqu'à présent. Voici un petit détail:
$ make 2>&1 | tee filetokeepitin.txt
vous permettra de regarder défiler la sortie.
La sortie est allé à stderr. Utilisez 2>
pour capturer cela.
$make 2> file
Supposons que vous souhaitiez mettre en évidence les avertissements et les erreurs de la sortie de la construction:
make |& grep -E "warning|error"
De http://www.oreillynet.com/linux/cmd/cmd.csp?path=g/gcc
Le caractère> ne redirige pas le erreur standard. C'est utile quand vous vouloir enregistrer une sortie légitime sans encrassant un fichier avec des messages d'erreur . Mais que se passe-t-il si les messages d'erreur sont que voulez-vous sauver? C'est tout à fait commun pendant le dépannage. Le La solution consiste à utiliser un signe supérieur à suivi d'une esperluette. (Cette construction Fonctionne dans presque tous les modernes UNIX Shell.) Elle redirige les deux fichiers la sortie standard et la norme Erreur. Par exemple:
$ gcc invinitjig.c >& error-msg
Jetez un oeil là-bas, si cela vous aide: un autre forum
Ce n'est généralement pas ce que vous voulez faire. Vous voulez exécuter votre compilation dans un éditeur qui prend en charge la lecture de la sortie du compilateur et l’accès au caractère file/line qui pose problème. Cela fonctionne dans tous les éditeurs à considérer. Voici la configuration d'Emacs:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Compilation.html
Essayez make 2> file
. Les avertissements du compilateur apparaissent sur le flux d'erreur standard, pas sur le flux de sortie standard. Si ma suggestion ne fonctionne pas, consultez le manuel de votre shell pour savoir comment renvoyer l'erreur standard.