GCC起步在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器.(pilerCollection),它是GNU项目中符合ANSIC标准的编译系统,能够编译用C、C++,,如Java、Fortran、Pascal、Modula-、自由和灵活是Linux的魅力所在,,编译过程可以被细分为四个阶段:◆预处理(Pre-Processing)◆piling)◆汇编(Assembling)◆链接(Linking)在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,,GCC也提供了灵活而强大的代码优化功能,,,GCC还对标准的C和C++语言进行了大量的扩展,提高程序的执行效率,有助于编译器进行代码优化,,的工作原理,:清单1:#include<>intmain(void){printf("Helloworld,Linuxprogramming!\n");return0;}然后执行下面的命令编译和运行这段程序:#-ohello#./helloHelloworld,Linuxprogramming!从程序员的角度看,命令就可以了,但从编译器的角度来看,,GCC需要调用预处理程序cpp,由它负责展开在源文件中定义的宏,并向其中插入“#include”语句所包含的内容;接着,l和as将处理后的源代码编译成目标代码;最后,GCC会调用链接程序ld,,可以把上述编译过程分成几个步骤单独进行,,使用-在预处理结束后停止编译过程:#gcc--,,,这可以通过使用-c参数来完成:#gcc--,因此上述命令将自动跳过预处理步骤而开始执行编译过程,也可以使用-:#-ohello在采用模块化的设计思想进行软件开发时,通常整个程序是由多个源文件组成的,相应地也就形成了多个编译单元,,为了对它们进行编译,并最终生成可执行程序foo,可以使用下面这条命令:#-ofoo如果同时处理的文件不止一个,GCC仍然会按照预处理、,上面这条命令大致相当于依次执行如下三条命令:#gcc--#gcc--#-ofoo在编译一个包含许多源文件的工程时,,并且每个源文件中都包含10000行代码,命令来完成编译工作,需要将每个源文件都重新编译一遍,,这样浪费的时间相当多,尤其是当用户只是修改了其中某一个文件的时候,完全没有必要将每个文件都重新编译一遍,,,,,这段代码写得很糟糕,仔细检查一下不难挑出很多毛病:◆main函数的返回值被声明为void,但实际上应该是int;◆使用了GNU语法扩展,即使用longlong来声明64位整数,不符合ANSI/ISOC语言标准;◆:#include<>voidmain(void){longlongintvar
GCC起步 来自淘豆网m.daumloan.com转载请标明出处.