gcc编译器支持多平台编译,不仅支持C,C++,JAVA,Pascal等,几乎支持所有的硬件平台。
gcc在编译一个程序时,一般需要完成预处理、编译 、汇编和链接过程。使用gcc编译C程序时,这些过程是使用默认的设置自动完成 的,但是用户可以对这些过程进行设置,控制这些操作的详细过程。
预处理:在预处理阶段,主要完成对源代码中的预编译语句(如宏定义define等)和文件包含进行处理。需要完成的工作时对预编译指令进行替换,把包含文件放置到需要编译的文件中。完成这些工作后,会生成一个非常完整的C程序源文件。
编译:gcc对预处理以后的文件进行编译,生成以.s为后缀的汇编语言文件。该汇编语言文件时编译源代码得到的汇编语言代码,接下来交给汇编过程进行处理。汇编语言是一种比C语言更低级的语言,直接面对硬盘进行操作。程序需要编译成汇编指令以后再编译成机器代码。
汇编:汇编过程是处理汇编语言的阶段,主要调用汇编处理程序完成将汇编语言汇编成二进制机器代码的过程。通常来说,汇编过程是将.s的汇编语言代码文件汇编成.o的目标文件的过程。所生成的目标文件作为下一步链接过程的输入文件。
链接:链接过程就是将多个汇编生成的目标文件以及引用的库文件进行模板链接生成一个完整的可执行文件。在链接阶段,所有的目标文件被安排在可执行程序中的适当的位置。同时,该程序所调用到库函数也从各自所在的函数库中链接到程序中。经过了这个过程以后,生成的文件就是可执行的程序。
摘自:Linux系统下C程序开发详解