How do I capture all of my compiler's output to a file?
I'm building an opensource project from source (CPP) in Linux. This is the order:
$CFLAGS="-g Wall" CXXFLAGS="-g Wall" ../trunk/configure --prefix=/somepath/ --host=i386-pc --target=i386-pc
$make
While compiling I'm getting lot of compiler warnings. I want to start fixing them. My question is how to capture all the compiler output in a file?
$make > file
is not doing the job. It's just saving the compiler command like g++ -someoptions /asdf/xyz.cpp
I want the output of these command executions.
Solution 1:
The compiler warnings happen on stderr
, not stdout
, which is why you don't see them when you just redirect make
somewhere else. Instead, try this if you're using Bash:
$ make &> results.txt
The &
means "redirect stdout and stderr to this location". Other shells often have similar constructs.
Solution 2:
In a bourne shell:
make > my.log 2>&1
I.e. > redirects stdout, 2>&1 redirects stderr to the same place as stdout
Solution 3:
Lots of good answers so far. Here's a frill:
$ make 2>&1 | tee filetokeepitin.txt
will let you watch the output scroll past.
Solution 4:
The output went to stderr. Use 2>
to capture that.
$make 2> file
Solution 5:
Assume you want to hilight warning and error from build ouput:
make |& grep -E "warning|error"