2009-02-23 19 views
5

Sto reindirizzando l'output del compilatore g ++ (sia stderr che stdout) a un file su linux. Ma sta creando un file vuoto.compilatore linux g ++ redirect stderr e stdout crea file vuoto

Ho letto in qualche altro post che lo stdout non viene svuotato dopo ogni riga. Questo è ok, ma per quanto riguarda stderr. Nel mio caso ci sono errori di compilazione su più schermi. Quindi, sono interessato all'output di stderr. Non è stato creato alcun output di stdout.

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

Il comando precedente crea un file vuoto denominato "output". Il seguente comando riporta un comando null non valido.

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

Quale shell stai usando? E l'output viene generato quando non si effettua il reindirizzamento? –

+0

sto usando lo stucco per connetterti ad una scatola di linux che usa una shell bash Il motivo principale per il reindirizzamento è vedere gli errori di compilazione che corrono su più schermate. –

risposta

11

Uno dei vostri commenti tradisce che non si utilizza bash . Stai usando csh o tcsh. In tal caso, è possibile reindirizzare tutto l'output (compreso l'errore standard) in questo modo:

 
g++ -c Algorithms.cpp >& output 

Per ulteriori sintassi reindirizzamento csh, ho a useful link segnalibro. Nota che la sintassi del redirection csh non è fluente come la sintassi di bash. Puoi fare di più in bash che puoi in csh.

+0

mi dispiace per ingannarti. Ciò era dovuto solo alla mia ignoranza. Grazie mille. –

+1

Sto usando 'bash' e questa sintassi è ancora necessaria. –

0

"Nessuna notizia è una buona notizia" - il tuo comando produce anche un risultato? Quando non ci sono errori, g ++ non stamperà nulla!

+0

sono preoccupato per stderr. so che la compilazione di un file non produce alcun output :) –

+0

Oh, hai ragione, mi sono perso. Scusate! –

3

Si potrebbe provare questo:

sh/bash/versione zsh:

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

csh o tcsh versione:

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> output 2> & 1 Reindirizzamento output ambiguo. –

+0

La tua shell non è bash. Questo è un messaggio di errore csh. –

Problemi correlati