2009-02-23 8 views
5

Je redirige la sortie du compilateur g ++ (à la fois stderr et stdout) vers un fichier sous Linux. Mais il crée un fichier vide.linux g ++ compilateur redirect stderr et stdout crée un fichier vide

J'ai lu dans un autre post que stdout n'est pas vidé après chaque ligne. C'est ok, mais qu'en est-il de stderr. Dans mon cas, il existe des erreurs de compilation exécutant plusieurs écrans. Donc, je suis intéressé par la sortie stderr. Il n'y a pas de sortie stdout créée.

g++ -c -I ~/cplusplus/boost_1_37_0/boost_1_37_0/ -I 
~/cplusplus/niVxWorksDeliver/TEES/ Algorithms.cpp 2> output 

La commande ci-dessus crée un fichier vide nommé "sortie". La commande suivante signale une commande null invalide.

g++ -c -I ~/cplusplus/boost_1_37_0/boost_1_37_0/ -I  
~/cplusplus/niVxWorksDeliver/TEES/ Algorithms.cpp &> output 
Invalid null command. 
+0

Quelle coque utilisez-vous? Et la sortie est-elle générée lorsque vous ne faites pas la redirection? –

+0

J'utilise putty pour me connecter à un boîtier Linux qui utilise un shell bash La raison principale de la redirection est de voir les erreurs de compilation qui traversent plusieurs écrans. –

Répondre

11

L'un de vos commentaires trahissent que vous n'utilisez bash . Vous utilisez csh ou tcsh. Dans ce cas, vous pouvez rediriger toutes les sorties (y compris l'erreur standard) comme ceci:

 
g++ -c Algorithms.cpp >& output 

Pour plus de syntaxe de redirection csh, je a useful link marque-page. Notez que la syntaxe de redirection csh n'est pas aussi fluide que la syntaxe bash. Vous pouvez faire plus dans bash que vous pouvez dans csh.

+0

je suis désolé de vous induire en erreur. C'était seulement dû à mon ignorance. Merci beaucoup. –

+1

J'utilise 'bash' et cette syntaxe est toujours nécessaire. –

0

"Pas de nouvelles, bonnes nouvelles": votre commande génère-t-elle des résultats? Quand il n'y a pas d'erreur, g ++ n'imprime rien!

+0

Je suis préoccupé par stderr. Je sais que la compilation d'un fichier ne produit aucune sortie :) –

+0

Oh, vous avez raison, j'ai raté cela. Pardon! –

3

Vous pouvez essayer ceci:

sh/bash/version zsh:

g++ -c -I ~/cplusplus/boost_1_37_0/boost_1_37_0/ \ 
     -I ~/cplusplus/niVxWorksDeliver/TEES/ \ 
     Algorithms.cpp > output 2>&1 

csh ou tcsh Version:

g++ -c -I ~/cplusplus/boost_1_37_0/boost_1_37_0/ \ 
     -I ~/cplusplus/niVxWorksDeliver/TEES/ \ 
     Algorithms.cpp >& output 
+0

g ++ -c -I ~/cplusplus/boost_1_37_0/boost_1_37_0/-I ~/cplusplus/niVxWorksDeliver/TEES/Algorithms.cpp> sortie 2> & 1 Redirection de sortie ambiguë. –

+0

Votre shell n'est pas bash. C'est un message d'erreur csh. –

Questions connexes