Линукс g ++ компилятор перенаправляет stderr и stdout создает пустой файл - PullRequest
5 голосов
/ 23 февраля 2009

Я перенаправляю вывод компилятора g ++ (и stderr, и stdout) в файл на linux Но это создает пустой файл.

Я прочитал в другом посте, что стандартный вывод не сбрасывается после каждой строки. Это хорошо, но как насчет stderr. В моем случае есть ошибки компиляции на нескольких экранах. Итак, я заинтересован в выводе stderr. Вывод stdout не создан.

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

Приведенная выше команда создает пустой файл с именем «output». Следующая команда сообщает о недопустимой нулевой команде.

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

Ответы [ 3 ]

13 голосов
/ 23 февраля 2009

Один из ваших комментариев показывает, что вы не используете bash. Вы используете csh или tcsh. В этом случае вы можете перенаправить все выходные данные (включая стандартную ошибку) следующим образом:

g++ -c Algorithms.cpp >& output

Для большего синтаксиса перенаправления csh, у меня есть полезная ссылка в закладки Обратите внимание на то, что синтаксис перенаправления csh не так быстр, как синтаксис bash. Вы можете сделать больше в bash, чем в csh.

3 голосов
/ 23 февраля 2009

Вы можете попробовать это:

sh / bash / zsh версия:

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

csh или tcsh версия:

g++ -c -I ~/cplusplus/boost_1_37_0/boost_1_37_0/ \
       -I ~/cplusplus/niVxWorksDeliver/TEES/ \
       Algorithms.cpp >& output
0 голосов
/ 23 февраля 2009

«Нет новостей, это хорошие новости» - ваша команда вообще выдает какие-либо результаты? Когда ошибок нет, g ++ ничего не печатает!

...