2010-08-13 8 views
22

GCC обычно инструктируется для вывода в файл через переключатель -o. Если это не предусмотрено, оно, похоже, принимает решение о соответствующем имени и выводит на это. Как заставить GCC записать сгенерированный вывод в stdout?Как сделать вывод GCC на стандартный вывод?

+1

Где вы собираетесь канал, в? – dreamlax

+1

Как следует из ответа ergosys, некоторые вызовы GCC выдают файл сборки, а не двоичный. В моем случае я хочу посмотреть на это! –

ответ

27
gcc -o /dev/stdout foo.c 

Обратите внимание, что /dev/stdout определяется как линке: /dev/stdout -> /proc/self/fd/1.

+0

Теперь, есть ли подобное решение для Windows? Или мне придется взломать его для кросс-платформенных решений? –

+0

@Kevin, дикая догадка, попробуйте '-o CON'? Прошло некоторое время с тех пор, как я сделал Windows. :/ – sarnold

+1

** Предупреждение о Cygwin **: 'gcc -o/dev/stdout foo.c' ничего не выводит, но' gcc -c -o/dev/stdout foo.c' ** удаляет '/ dev/stdout'! ** – Matt

0

Ум, что вы собираетесь делать с бинарным файлом объекта, сбрасываемым на stdout? в любом случае, некоторые программы принимают символ «-» (один минус, без кавычек) в качестве замены для stdout. Если вы на Linux, вы можете сделать -o /dev/fd/1

+9

С этим можно многое поделать. – Qix

22

Вы можете использовать -о-, например, чтобы напечатать список сборки:

gcc -S -o- in.c 
+4

Важно отметить, что это работает только для некоторых выходов. Например, 'gcc -o- test.c' создает исполняемый файл под названием' -'. –

Смежные вопросы