Как я могу записать весь вывод моего компилятора в файл?
Я создаю проект с открытым исходным кодом из исходного кода (CPP) в Linux. Это порядок:
$CFLAGS="-g Wall" CXXFLAGS="-g Wall" ../trunk/configure --prefix=/somepath/ --host=i386-pc --target=i386-pc
$make
Во время компиляции я получаю много предупреждений компилятора. Я хочу начать их исправление. Мой вопрос заключается в том, как захватить весь вывод компилятора в файл?
$make > file
не выполняет работу. Это просто сохранение команды компилятора, как g++ -someoptions /asdf/xyz.cpp
Мне нужен вывод этих команд.
Ответы
Ответ 1
Предупреждения компилятора происходят на stderr
, а не stdout
, поэтому вы не видите их, когда вы просто перенаправляете make
в другое место. Вместо этого попробуйте, если вы используете Bash:
$ make &> results.txt
&
означает "перенаправить stdout и stderr в это местоположение". Другие оболочки часто имеют похожие конструкции.
Ответ 2
В оболочке bourne:
make > my.log 2 > & 1
т.е. > перенаправляет stdout, 2 > и 1 перенаправляет stderr на то же место, что и stdout
Ответ 3
До сих пор много хороших ответов. Здесь оборка:
$ make 2>&1 | tee filetokeepitin.txt
позволит вам следить за прокруткой вывода.
Ответ 4
Выход шел в stderr. Используйте 2>
, чтобы зафиксировать это.
$make 2> file
Ответ 5
От http://www.oreillynet.com/linux/cmd/cmd.csp?path=g/gcc
Симвul > не перенаправляет стандартная ошибка. Это полезно, когда вы хотите сохранить законный вывод без сбрасывая файл с сообщениями об ошибках. Но что, если сообщения об ошибках что вы хотите сохранить? Это вполне обычно при устранении неполадок. решение заключается в использовании знака большего размера а затем амперсанд. (Эта строить работы практически во всех современных UNIX shell.) Он перенаправляет стандартный выход и стандартный ошибка. Например:
$ gcc invinitjig.c >& error-msg
Посмотрите там, если это поможет:
другой форум
Ответ 6
Предположим, что вы хотите предупреждать о hilight и ошибку из сборщика:
make |& grep -E "warning|error"
Ответ 7
Попробуйте make 2> file
. Предупреждения компилятора выводятся на стандартный поток ошибок, а не на стандартный поток вывода. Если мое предложение не работает, ознакомьтесь с руководством по работе с оболочкой для того, как отменить стандартную ошибку.
Ответ 8
Обычно это не то, что вы хотите сделать. Вы хотите запустить компиляцию в редакторе, который имеет поддержку для чтения вывода компилятора и перехода к файлу/строке char, у которого есть проблемы. Он работает во всех редакциях, которые стоит рассмотреть. Вот настройка emacs:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Compilation.html