2009-02-23 15 views
5

Przekierowuję wyjście kompilatora g ++ (zarówno stderr i stdout) do pliku na Linuksie. Ale tworzy pusty plik.linux g + + kompilator przekierowanie stderr i stdout tworzy pusty plik

Czytałem w innym poście, że stdout nie jest wypłukiwany po każdej linii. To jest ok, ale co z stderr. W moim przypadku są błędy kompilacji na kilku ekranach. Tak więc interesuje mnie produkcja stderr. Nie utworzono wyjściowego wyjścia.

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

Powyższe polecenie tworzy pusty plik o nazwie "output". Następujące polecenie zgłasza nieprawidłowe polecenie null.

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

Jaką powłokę używasz? I czy dane wyjściowe są generowane, gdy nie wykonujesz przekierowania? –

+0

Używam programu putty do połączenia z linuxem, w którym jest używana powłoka bash Głównym powodem przekierowania jest wyświetlenie błędów kompilacji wyświetlanych na kilku ekranach. –

Odpowiedz

11

Jeden z twoich komentarzach zdradza, że ​​nie używasz bash . Używasz csh lub tcsh. W takim przypadku, można przekierować wszystkie dane wyjściowe (włączając w to standardowy błąd) tak:

 
g++ -c Algorithms.cpp >& output 

uzyskać więcej składnię csh przekierowania, mam a useful link zakładki. Zwróć uwagę, że składnia przekierowania csh nie jest tak płynna, jak składnia bash. Możesz zrobić więcej w bashu niż w csh.

+0

Przykro mi, że wprowadzam Cię w błąd. To było spowodowane moją niewiedzą. Dziękuję Ci bardzo. –

+1

Używam 'bash' i ta składnia jest nadal niezbędna. –

0

„Brak wiadomości to dobra wiadomość” - twoja komenda nawet produkować dowolne wyjście? Gdy nie ma błędów, g ++ niczego nie wydrukuje!

+0

Jestem zaniepokojony stderr. Wiem, że kompilacja pliku nie daje żadnych wyników :) –

+0

Och, masz rację, tęskniłem za tym. Przepraszam! –

3

Można spróbować to:

sh/bash/wersja zsh:

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

csh lub tcsh wersja:

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 Niejednoznaczne przekierowanie wyjścia. –

+0

Twoja powłoka nie jest bash. To jest komunikat o błędzie csh. –

Powiązane problemy