【问题标题】:How to make GCC output to stdout?如何使 GCC 输出到标准输出?
【发布时间】:2011-03-29 07:37:46
【问题描述】:

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

【问题讨论】:

  • 你要把它传送到哪里?
  • 正如 ergosys 的回答所暗示的,GCC 的某些调用将输出一个程序集文件,而不是二进制文件。就我而言,我想看看它!

标签: c gcc


【解决方案1】:
gcc -o /dev/stdout foo.c

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

【讨论】:

  • 现在,Windows 是否有类似的解决方案?还是我必须破解它以获得跨平台解决方案?
  • @Kevin,大胆猜测,试试-o CON?自从我完成Windows以来已经有一段时间了。 ://
  • 关于 Cygwin 的警告gcc -o /dev/stdout foo.c 不输出任何内容,但 gcc -c -o /dev/stdout foo.c 删除 /dev/stdout!
  • @Matt 那么如何在 Cygwin 上将 GCC 输出到标准输出?
【解决方案2】:

您可以使用 -o-,例如打印装配列表:

gcc -S -o- in.c

【讨论】:

  • 请务必注意,这仅适用于某些输出。例如gcc -o- test.c 创建一个名为- 的可执行文件。
【解决方案3】:

嗯,你打算如何处理转储到标准输出的二进制目标文件?无论如何,一些程序接受'-'(单减号,无引号)字符作为标准输出的替代品。如果你在linux上,你可以-o /dev/fd/1

【讨论】:

  • /dev/fd/1写任何东西安全吗?
  • @MasBagol 是的。
猜你喜欢
  • 2018-08-21
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多