2010-08-13 16 views
22

GCC jest zwykle instruowane, aby wyświetlać plik za pośrednictwem przełącznika -o. Jeśli nie jest to przewidziane, wydaje się, że decyduje o odpowiedniej nazwie i wynikach. Jak sprawić, aby GCC zapisał wygenerowane dane wyjściowe na standardowe wyjście?Jak zrobić wyjście GCC na standardowe wyjście?

+1

gdzie idziesz do rury to do? – dreamlax

+1

Jak sugeruje ergosys, niektóre wywołania GCC będą wyprowadzać plik złożenia, a nie binarny. W moim przypadku chcę na to spojrzeć! –

Odpowiedz

27
gcc -o /dev/stdout foo.c 

Zauważ, że /dev/stdout jest zdefiniowana jako miejsce linku: /dev/stdout -> /proc/self/fd/1.

+0

Czy istnieje podobne rozwiązanie dla systemu Windows? Czy będę musiał zhakować go dla rozwiązań wieloplatformowych? –

+0

@Kevin, dzikie domysły, spróbuj '-o CON'? Minęło trochę czasu odkąd skończyłem Windows. :/ – sarnold

+1

** Słowo ostrzeżenia dla Cygwin **: 'gcc -o/dev/stdout foo.c' nic nie daje, ale' gcc -c -o/dev/stdout foo.c' ** usuwa '/ dev/stdout'! ** – Matt

0

Hm, co zrobisz z plikiem binarnym zrzuconym na stdout? w każdym razie niektóre programy akceptują znak "-" (pojedynczy minus, bez cudzysłowu) jako zamiennik standardowego wyjścia. Jeśli jesteś na Linuksie, można zrobić -o /dev/fd/1

+9

Można z tym zrobić wiele rzeczy. – Qix

22

Można użyć -o-, na przykład, aby wydrukować listę montaż:

gcc -S -o- in.c 
+4

Należy zauważyć, że działa to tylko w przypadku niektórych wyjść. Na przykład 'gcc -ô test.c' tworzy plik wykonywalny o nazwie' -'. –

Powiązane problemy