gcc編譯器將源代碼編譯成可執行程序的過程中,需要經過許多中間步驟(預處理、編譯、匯編、鏈接),這些過程實際上是由不同的程序來負責完成的(/usr/bin/gcc、cpp、ccl、as和ld等)。在這個過程的每一個階段中,都會生成一個臨時文件,因此會增加系統資源的開銷,導致速度變慢。可以通過管道來解決這一問題。
管道實質上就是進程間的通信方式,它可以用來同時連接兩個程序(進程),其中一個程序的輸出可以作為另一個程序的輸入,這樣就避免了使用臨時文件,但是編譯時卻需要消耗更多的內存。在編譯過程中采用管道可以使用-pipe參數,即:
gcc –pipe –Wall -pedantic foo.c –o foo
在編譯小型工程時使用管道,編譯時間上的差異可能不太明顯,但是對于大型工程,時間會差別很大。