gcc编译器将源代码编译成可执行程序的过程中,需要经过许多中间步骤(预处理、编译、汇编、链接),这些过程实际上是由不同的程序来负责完成的(/usr/bin/gcc、cpp、ccl、as和ld等)。在这个过程的每一个阶段中,都会生成一个临时文件,因此会增加系统资源的开销,导致速度变慢。可以通过管道来解决这一问题。
管道实质上就是进程间的通信方式,它可以用来同时连接两个程序(进程),其中一个程序的输出可以作为另一个程序的输入,这样就避免了使用临时文件,但是编译时却需要消耗更多的内存。在编译过程中采用管道可以使用-pipe参数,即:
gcc –pipe –Wall -pedantic foo.c –o foo
在编译小型工程时使用管道,编译时间上的差异可能不太明显,但是对于大型工程,时间会差别很大。