我正在使用 CMake 构建一个项目。我可以构建所有内容,但遇到了冗长的链接器错误。
我尝试过通过管道传输make
到less
,但这样做只得到两个屏幕,一个显示构建进度,另一个显示截断的链接器错误。我如何才能减慢链接器错误滚动速度或以其他方式访问它?
我也试过
make > buildinfo.txt
但同样,它只显示了构建进度。其中没有任何关于链接器错误的信息。
答案1
错误显示在 STDERR(文件描述符 2)上,而不是 STDOUT(文件描述符 1)上;由于您仅重定向/管道 STDOUT,因此您将无法获取 STDERR 内容。因此您需要某种方法来处理 STDERR。
如果要将 STDOUT 和 STDERR 都保存在一个文件中:
make &>buildinfo.txt
POSIX 风格:
make >buildinfo.txt 2>&1
仅限 STDERR:
make 2>buildinfo.txt
以上将在终端上打印 STDOUT(假设 FD 1 已连接到终端),如果您不想要它,请丢弃它:
make >/dev/null 2>buildinfo.txt
pipefs
现在,通过( )将 STDOUT 和 STDERR 传输到一些其他命令 STDIN |
,例如less
:
make |& less
POSIX 风格:
make 2>&1 | less
仅限 STDERR:
make 2>&1 >/dev/null | less