Redirection operator does not work. So how should we do it? One more question, in makefile, how can we give arguments from command line, like
run: a.out
./a.out **<input>**
gcc prints its error messages to stderr
, so you have to redirect stderr
:
gcc -o foo foo.c 2> foo.gccmessages
You give arguments on the command line always in the same way
./a.out argument1 argument2 argument3
Try: $ make 2>&1 | tee your_build_log.txt this will redirect stdout, 2>&1 redirects stderr to the same place as stdout while allowing you to simultaneously see the output in your terminal.
see: How do I capture all of my compiler's output to a file?
A detailed documentation for I/O redirection for stdout,stderr is given in this document(1).Peripheral devices like stdin(eg:keyboard), stdout(eg: computer monitor) and stderr(error messages from the output of a gcc compilation) are considered as files.