2010-08-13 12 views
22

GCC viene normalmente istruito per l'output su un file tramite l'interruttore -o. Se questo non viene fornito, sembra decidere un nome appropriato e produrre quello. Come faccio a far scrivere a GCC il suo output generato su stdout?Come rendere l'output GCC su stdout?

+1

Dove vai a tubo a? – dreamlax

+1

Come la risposta di ergosys implica, alcune invocazioni di GCC genereranno un file assembly, non binario. Nel mio caso voglio vederlo! –

risposta

27
gcc -o /dev/stdout foo.c 

noti che /dev/stdout è definito come un link simbolico: /dev/stdout -> /proc/self/fd/1.

+0

Ora, c'è una soluzione simile per Windows? O dovrò hackerarlo per soluzioni multipiattaforma? –

+0

@Kevin, wild guess, prova '-o CON'? È passato un po 'di tempo da quando ho Windows. :/ – sarnold

+1

** Una parola di cautela su Cygwin **: 'gcc -o/dev/stdout foo.c' non restituisce nulla, ma' gcc -c -o/dev/stdout foo.c' ** elimina '/ dev/stdout'! ** – Matt

0

Ehm, cosa hai intenzione di fare con un file oggetto binario scaricato su stdout? comunque, alcuni programmi accettano il carattere '-' (singolo meno, senza virgolette) come sostituto di stdout. Se siete su Linux, si può fare -o /dev/fd/1

+9

Molte cose possono essere fatte con esso. – Qix

22

È possibile utilizzare -O-, per esempio per stampare un elenco di montaggio:

gcc -S -o- in.c 
+4

È importante notare che questo funziona solo per alcune uscite. Ad esempio 'gcc -o- test.c' crea un eseguibile chiamato' -'. –