6

我正在将 g++ 编译器输出(stderr 和 stdout)重定向到 linux 上的文件。但它正在创建一个空文件。

我在其他一些帖子中读到 stdout 在每一行之后都没有刷新。没关系,但是 stderr 呢?在我的情况下,运行多个屏幕时出现编译错误。所以,我对标准错误输出感兴趣。没有创建标准输出输出。

 g++ -c -I ~/cplusplus/boost_1_37_0/boost_1_37_0/ -I 
~/cplusplus/niVxWorksDeliver/TEES/ Algorithms.cpp 2> output

上面的命令创建了一个名为“output”的空文件。以下命令报告无效的空命令。

 g++ -c -I ~/cplusplus/boost_1_37_0/boost_1_37_0/ -I    
~/cplusplus/niVxWorksDeliver/TEES/ Algorithms.cpp &> output
Invalid null command.
4

3 回答 3

14

您的一条评论表明您没有使用 bash。您正在使用 csh 或 tcsh。在这种情况下,您可以像这样重定向所有输出(包括标准错误):

g++ -c Algorithms.cpp >& 输出

对于更多的 csh 重定向语法,我有一个有用的链接书签。请注意,csh 重定向语法不如 bash 语法流畅。在 bash 中比在 csh 中可以做的更多。

于 2009-02-23T18:29:12.750 回答
3

你可以试试这个:

sh/bash/zsh 版本:

g++ -c -I ~/cplusplus/boost_1_37_0/boost_1_37_0/ \
       -I ~/cplusplus/niVxWorksDeliver/TEES/ \
       Algorithms.cpp > output 2>&1

csh 或 tcsh 版本:

g++ -c -I ~/cplusplus/boost_1_37_0/boost_1_37_0/ \
       -I ~/cplusplus/niVxWorksDeliver/TEES/ \
       Algorithms.cpp >& output
于 2009-02-23T17:11:27.947 回答
0

“没有消息就是好消息”——你的命令是否会产生任何输出?当没有错误时,g++ 不会打印任何东西!

于 2009-02-23T17:09:18.763 回答