Linux系統中保存make編譯時的信息

在Linux系統中,經常會使用到make命令進行編譯,而且編譯的時間往往會比較長,並且會超過Shell查看的範圍,爲了便於查看編譯的情況並進行分析,我們可以將終端上的編譯信息保存到文件中。 


舉例說明保存編譯信息的行命令,它把make過程中打印的所有信息都保存在xxx.log中。
$make 2>&1|tee ./xxx.log

其中,

0 標準輸入  stdin = standard input
1 標準輸出  stdout = standard output
2 標準錯誤輸出  stderr = standard error

這條命令是編譯並保存打印信息。在Linux Shell的設備定義中,“0”表示標準輸入,“1”表示標準輸出,“2”表示標準出錯信息輸出。2>&1表示把2設備的信息重定向到1設備;“|”是管道符號,把標準輸出的信息直接傳遞給後面的命令;tee是創建文件並保存信息的工具;xxx.log是文件名。
這種管道的用法在Linux Shell命令中使用非常普遍。編譯過程中都可以使用這個方法,生成日誌文件,保存到buildlogs目錄下。

【總結】

下面三種方法, 都可以將make編譯的所有信息重定向至文件中:

方法一 make 2>&1 | tee error.txt

方法二 make > error.txt 2>&1

方法三 make 2> error.txt


其他方法:

1.想要把make輸出的全部信息,輸出到某個文件中,最常見的辦法就是:
make xxx > build_output.txt
此時默認情況是沒有改變2=stderr的輸出方式,還是屏幕,所以,如果有錯誤信息,還是可以在屏幕上看到的。
2.只需要把make輸出中的錯誤(及警告)信息輸出到文件中ing,可以用:
make xxx 2> build_output.txt
相應地,由於1=stdout沒有變,還是屏幕,所以,那些命令執行時候輸出的正常信息,還是會輸出到屏幕上,你還是可以在屏幕上看到的。
3.只需要把make輸出中的正常(非錯誤,非警告)的信息輸出到文件中,可以用:
make xxx 1> build_output.txt
相應地,由於2=stderr沒有變,還是屏幕,所以,那些命令執行時候輸出的錯誤信息,還是會輸出到屏幕上,你還是可以在屏幕上看到的。
4.想要把正常輸出信息和錯誤信息輸出到分別的文件中,可以用:
make xxx 1> build_output_normal.txt 2>build_output_error.txt
即聯合使用了1和2,正常信息和錯誤信息,都輸出到對應文件中了。
5. 所有的信息都輸出到同一個文件中:
make xxx > build_output_all.txt 2>&1
其中的2>&1表示錯誤信息輸出到&1中,而&1,指的是前面的那個文件:build_output_all.txt 。
注意:上面所有的1,2等數字,後面緊跟着大於號'>' ,中間不能有空格 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章