Comment puis-je capter toute mon compilateur est de sortie pour un fichier?
Je suis en train de construire un projet opensource de la source (RPC sous Linux). C'est l'ordre:
$CFLAGS="-g Wall" CXXFLAGS="-g Wall" ../trunk/configure --prefix=/somepath/ --host=i386-pc --target=i386-pc
$make
Lors de la compilation j'obtiens beaucoup des avertissements du compilateur. Je veux commencer à les corriger. Ma question est comment faire pour capturer tous la sortie du compilateur dans un fichier?
$make > file
n'est pas faire le travail. C'est juste l'enregistrement de la commande du compilateur comme g++ -someoptions /asdf/xyz.cpp
je veux que la sortie de ces exécutions de commandes.
- Pratiques recommandées par l'autoconf responsables est d'exécuter votre première commande de manière différente: utiliser " ../trunk configurer CFLAGS="-g" Mur de l'CXXFLAGS="-g Mur" ...'. C'est, de ne pas définir C{XX}DRAPEAUX dans l'environnement, mais plutôt en tant qu'arguments à configurer.
- Pursell, je crois pecker est, le " $ " signe de dollar, je crois, est utilisé pour représenter l'invite du shell, en raison de son utilisation sur la deuxième ligne ($faire, tout simplement, sans l'espace après l'invite du shell.
- FOO=x cmd" est très différent de "$ cmd FOO=x". Dans le premier cas, cmd est exécuté avec les FOO réglé sur "x" dans l'environnement. Dans ce dernier, la chaîne "TOTO=x" est un argument de cmd.
- D'accord. Étant donné la nouveauté de l'interlocuteur, j'essayais d'être gentil.
Vous devez vous connecter pour publier un commentaire.
Les avertissements du compilateur se produire sur
stderr
, passtdout
, qui est pourquoi vous ne voyez pas quand vous suffit de redirigermake
quelque part d'autre. Au lieu de cela, essayez cette option si vous utilisez Bash:La
&
signifie "rediriger stdout et stderr à cet endroit". D'autres obus ont souvent d'autres constructions similaires.make > results.txt 2>&1
mais avec moins de frappe 🙂|&
pour les tuyaux, ce qui est équivalent à2>&1 |
.&|
.Dans un bourne shell:
I. e. > redirige stdout, 2>,&1 redirige stderr à la même place que stdout
Beaucoup de bonnes réponses. Voici une collerette:
vous permettra de regarder la sortie de défilement passé.
tee
pasmake
. Ainsi, le|| more
malheureusement ne fait pas ce que vous dites il n'. Comparerfalse || echo $?
àfalse | cat || echo $?
.tee
dans la présente demande assez souvent.shopt -s pipefail
, peut-être?La sortie est allé vers stderr. Utilisation
2>
à saisir.De http://www.oreillynet.com/linux/cmd/cmd.csp?path=g/gcc
Jeter un coup d'oeil, si cela peut vous aider:
un autre forum
&>
sur>&
.Suppose que vous voulez hilight d'avertissement et d'erreur de compilation sortie:
Essayer
make 2> file
. Les avertissements du compilateur sortir sur le flux d'erreur standard, pas le flux de sortie standard. Si ma suggestion ne fonctionne pas, vérifiez votre shell manuel pour savoir comment détourner l'erreur standard.Il 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 d'aller dans le fichier/ligne de char qui a des problèmes. Il fonctionne dans tous les éditeurs vaut la peine d'examiner. Voici l'emacs de l'installation:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Compilation.html