私はLinuxのソース(CPP)からオープンソースプロジェクトを構築しています。これが順序です:
$CFLAGS="-g Wall" CXXFLAGS="-g Wall" ../trunk/configure --prefix=/somepath/ --Host=i386-pc --target=i386-pc
$make
コンパイル中に多くのコンパイラ警告が表示されます。それらの修正を開始したいです。私の質問は、すべてのコンパイラ出力をファイルに取り込む方法ですか?
$make > file
は仕事をしていません。 g++ -someoptions /asdf/xyz.cpp
のようなコンパイラコマンドを保存しているだけです。これらのコマンド実行の出力が必要です。
コンパイラの警告はstderr
ではなくstdout
で発生するため、make
を別の場所にリダイレクトしただけでは警告は表示されません。代わりに、Bashを使用している場合はこれを試してください。
$ make &> results.txt
&
は、「stdoutおよびstderrをこの場所にリダイレクトする」ことを意味します。多くの場合、他のシェルには同様の構造があります。
ボーンシェルの場合:
make> my.log 2>&1
つまり> stdoutをリダイレクト、2>&1はstderrをstdoutと同じ場所にリダイレクト
これまでのところ、たくさんの良い答えがあります。ここにフリルがあります:
$ make 2>&1 | tee filetokeepitin.txt
過去の出力スクロールを見ることができます。
出力はstderrに送られました。つかいます 2>
をキャプチャします。
$make 2> file
から http://www.oreillynet.com/linux/cmd/cmd.csp?path=g/gcc
>文字は標準エラーをリダイレクトしません。エラーメッセージを含むファイルを作成せずに正当な出力を保存する場合に便利です。しかし、エラーメッセージが保存したい場合はどうでしょうか。これはトラブルシューティング中に非常に一般的です。解決策は、大なり記号の後にアンパサンドを使用することです。 (この構成は、ほとんどすべての最新のUNIXシェルで機能します。)標準出力と標準エラーの両方をリダイレクトします。例えば:
$ gcc invinitjig.c >& error-msg
これが役立つ場合は、こちらをご覧ください: 別のフォーラム
ビルド出力から警告とエラーを強調表示するとします。
make |& grep -E "warning|error"
通常、それはあなたがしたいことではありません。コンパイラーの出力の読み取りをサポートし、問題のあるファイル/行の文字にアクセスできるエディターでコンパイルを実行する必要があります。すべてのエディターで検討する価値があります。 emacsのセットアップは次のとおりです。
https://www.gnu.org/software/emacs/manual/html_node/emacs/Compilation.html
make 2> file
。コンパイラの警告は、標準出力ストリームではなく、標準エラーストリームに出力されます。私の提案が機能しない場合は、標準エラーを迂回する方法について、シェルのマニュアルを確認してください。