一、gcc简介
除了上面讲的之外,gcc除了支持c语言外,还支持多种其他语言,例如c++、ada、java、objective-c、fortran、pascal等。 【相关文章:用Java得到硬盘空间】
通常所说的gcc是gun compiler collection的简称,除了编译程序之外,它还含其他相关工具,所以它能把易于人类使用的高级语言编写的源代码构建成计算机能够直接执行的二进制代码。gcc是linux平台下最常用的编译程序,它是linux平台编译器的事实标准。同时,在linux平台下的嵌入式开发领域,gcc也是用得最普遍的一种编译器。gcc之所以被广泛采用,是因为它能支持各种不同的目标体系结构。例如,它既支持基于宿主的开发(简单讲就是要为某平台编译程序,就在该平台上编译),也支持交叉编译(即在a平台上编译的程序是供平台b使用的)。目前,gcc支持的体系结构有四十余种,常见的有x86系列、arm、powerpc等。同时,gcc还能运行在不同的操作系统上,如linux、solaris、windows等。 【扩展阅读:JAVA基础:提升JSP应用程序的七大绝】
二、程序的编译过程 【扩展信息:Java Applet编程小技巧之文字显】
本系列文章中,我们不仅介绍gcc的基本功能,还涉及到一些诸如优化之类的高级功能。另外,我们还考察gcc的一些映像操作工具,如size与objcopy等,这将在后续的文章中加以介绍。
对于gun编译器来说,程序的编译要经历预处理、编译、汇编、连接四个阶段,如下图所示:
560)this.style.width=560; onmousewheel = javascript:return big(this) height=303 alt="" src="/files/uploadimg/20060926/1714230.jpg" width=152 border=0>
从功能上分,预处理、编译、汇编是三个不同的阶段,但gcc的实际操作上,它可以把这三个步骤合并为一个步骤来执行。下面我们以c语言为例来谈一下不同阶段的输入与输出情况。
在预处理阶段,输入的是c语言的源文件,通常为*.c。它们通常带有.h之类头文件的包含文件。这个阶段主要处理源文件中的#ifdef、 #include与#define命令。该阶段会生成一个中间文件*.i,但实际工作中通常不用专门生成这种文件,因为基本上用不到;若非要生成这种文件不可,可以利用下面的示例命令:
gcc -e test.c -o test.i
在编译阶段,输入的是中间文件*.i,编译后生成汇编语言文件*.s 。... 下一页