make-output:stderr auf stdout umleiten

S

supersucker

Foren Gott
Hi,

rufe ich

Code:
make

auf kommt da eine ganze Lawine von Fehlermeldungen.

Leite ich aber die Ausgabe von make in ein logfile stehen da nur ein paar Zeilen.

Was ich probiert hab:

Code:
make 2>&1 > make_log.log

Code:
make 2>&1 > make_log.log

Code:
make | tee make_log.log

Code:
make 2>&1 | tee make_log.log

Das Resultat ist immer das Gleiche, es stehen nur ein paar Zeilen im Log, aber das meiste was fehlt.

WTF ist da los? Das, was mir make auf den screen schreibt, ist doch entweder STDOUT oder STDERR, oder?

Wie krieg ich es hin das alles was make ausgibt in ein logfile geschrieben wird?

Danke für jeden Tip!
 
make > make.log 2> make.err

alternativ

make >> make.log 2>> make.log
 
Erst mal vielen Dank, das war die Lösung.

Aber ich verstehe es nicht:

Mir ist klar, wieso deine Lösung funktioniert, aber warum funktioniert meine nicht?

Code:
make 2>&1 > make_log.log

Leite STDERR auf STDOUT um und schreib alles in das Log.

Wieso funktioniert das nicht?
 
Du lässt das make erstmal in den Hintergrund gehen, bevor du umleitest, was so nicht funktionieren kann. Dafür sorgt das &-Zeichen.
 
Ok,

aber warum klappt dann

Code:
make 2>1 > make.log

nicht?
 
Klappt doch. ;) Du loggst halt den Error-Output in die Datei '1' und den Standard-Output in make.log.
 
Allet klar.........

Danke aus Berlin nach Berlin.......:D
 
Damit aber auch jeder das versteht, nochmal eine kleine Zusammenfassung:

'2>' loggt den Error-Output (stderr) in die Datei, die danach angegeben ist.
'>' loggt den Standard-Output (stdout) in die Datei, die danach angegeben ist.
'>datei 2>&1' wiederum sorgt dafür, dass Error- und Standard-Output in die gleiche Datei umgeleitet werden.

Du könntest also auch anstelle von 'make >> make.log 2>> make.log' einfach 'make >make.log 2>&1' verwenden. Das läuft auf's selbe hinaus.
 

Ähnliche Themen

Xubuntu - AVR32-linux crosscompile sqlite

Suse 8.1-Install- + FritzCard!DSL-Probleme

Zurück
Oben