it-swarm.com.de

Wie kann ich die gesamte Ausgabe meines Compilers in einer Datei erfassen?

Ich baue ein Open Source-Projekt aus Source (CPP) in Linux. Dies ist die Reihenfolge:

$CFLAGS="-g Wall" CXXFLAGS="-g Wall" ../trunk/configure --prefix=/somepath/ --Host=i386-pc --target=i386-pc
$make

Während des Kompilierens bekomme ich viele Compiler-Warnungen. Ich möchte anfangen, sie zu reparieren. Meine Frage ist, wie die gesamte Compiler-Ausgabe in einer Datei erfasst wird.

$make > file erledigt den Job nicht. Es wird nur der Compiler-Befehl wie g++ -someoptions /asdf/xyz.cpp gespeichert. Ich möchte die Ausgabe dieser Befehlsausführungen. 

53
pecker

Die Compiler-Warnungen finden auf stderr statt auf stdout statt. Daher werden sie nicht angezeigt, wenn Sie make nur an eine andere Stelle umleiten. Versuchen Sie dies stattdessen, wenn Sie Bash verwenden:

$ make &> results.txt

Der & bedeutet "stdout und stderr an diesen Speicherort umleiten". Andere Schalen haben oft ähnliche Konstrukte.

101
John Feminella

In einer Bourne-Shell:

make> my.log 2> & 1

Das heißt > leitet stdout um, 2> & 1 leitet stderr an dieselbe Stelle wie stdout um

22
Nathan Kidd

Viele gute Antworten bis jetzt. Hier ist ein Schnickschnack:

$ make 2>&1 | tee filetokeepitin.txt 

können Sie die Ausgabe vorbeiziehen sehen.

20
dmckee

Die Ausgabe ging an stderr. Verwenden Sie 2>, um dies zu erfassen.

$make 2> file
5
kennytm

Angenommen, Sie möchten Warnungen und Fehler aus der Build-Ausgabe hervorheben:

make |& grep -E "warning|error"
3
Peter Nguyen

Von http://www.oreillynet.com/linux/cmd/cmd.csp?path=g/gcc

Das Zeichen> leitet das .__ nicht um. Standart Fehler. Es ist nützlich, wenn Sie Ich möchte legitime Ausgaben ohne .__ speichern. Mucking einer Datei mit Fehlermeldungen . Was aber, wenn die Fehlernachrichten sind was willst du sparen Das ist ziemlich häufig bei der Fehlerbehebung. Das Lösung ist die Verwendung eines Größer-als-Zeichen gefolgt von einem Et-Zeichen. (Dieses -Konstrukt funktioniert in fast jeder modernen UNIX-Shell.) Es leitet beide Standardausgabe und der Standard Error. Zum Beispiel:

$ gcc invinitjig.c >& error-msg

Schau mal, ob das hilft: anderes Forum

2
Gauthier

Es ist normalerweise nicht das, was Sie tun möchten. Sie möchten Ihre Kompilierung in einem Editor ausführen, der Unterstützung für das Lesen der Ausgabe des Compilers und das Wechseln zu der Datei/Zeile enthält, die die Probleme aufweist. Es funktioniert in allen denkwürdigen Editoren. Hier ist das Emacs-Setup: 

https://www.gnu.org/software/emacs/manual/html_node/emacs/Compilation.html

0

Versuchen Sie make 2> file. Compiler-Warnungen erscheinen im Standardfehlerstrom, nicht im Standardausgabestrom. Wenn mein Vorschlag nicht funktioniert, überprüfen Sie in Ihrem Shell-Handbuch, wie Sie Standardfehler umleiten.

0
David Thornley