如何使GCC输出到标准输出?

问题描述:

GCC通常被指示通过-o开关输出到文件。如果没有提供,它似乎决定一个适当的名称和输出。我如何让GCC将其生成的输出写入标准输出?如何使GCC输出到标准输出?

+1

你要去哪里来管它? – dreamlax 2010-08-13 07:06:12

+1

正如ergosys的回答所暗示的,GCC的一些调用将输出一个程序集文件,而不是二进制文件。在我的情况下,我想看看它! – 2013-02-15 00:38:42

gcc -o /dev/stdout foo.c 

注意/dev/stdout被定义为符号链接:/dev/stdout -> /proc/self/fd/1

+0

现在,Windows有没有类似的解决方案?或者我将不得不针对跨平台解决方案进行破解? – 2013-07-27 19:26:16

+0

@凯文,疯狂猜测,试试'-o CON'?从我完成Windows开始已经有一段时间了。 :/ – sarnold 2013-07-29 21:14:32

+1

** Cygwin **注意:'gcc -o/dev/stdout foo.c'不输出任何内容,但'gcc -c -o/dev/stdout foo.c' **删除'/ dev/stdout'!** – Matt 2015-02-19 15:59:50

嗯,你要做什么用二进制对象文件转储到标准输出?无论如何,一些程序接受' - '(单减,无引号)字符作为替代标准输出。如果你是在Linux上,你可以做-o /dev/fd/1

+9

很多事情都可以用它来完成。 – Qix 2013-01-08 00:39:34

你可以用-O-,例如打印汇编清单:

gcc -S -o- in.c 
+4

需要注意的是,这只适用于某些输出。例如'gcc -o- test.c'创建一个名为'-'的可执行文件。 – 2013-07-27 19:24:56