GCC 编程基础? GCC ( piler Collection , GNU 编译器套装) 是一套由 GNU 工程开发的支持多种编程语言的编译器。 GCC 是自由软件发展过程中的著名例子,由自由软件基金会以 GPL 协议发布。 GCC 是大多数类 Unix 操作系统(如 Linux 、 BSD 、 Mac OS X 等)的标准的编译器, GCC 同样适用于微软的 Windows 。 GCC 支持多种计算机体系芯片,如 x86 、 ARM ,并已移植到其他多种硬件平台。 GCC 原名为 GNU C 编译器( GNU C Compiler ),因为它原本只能处理 C语言。 GCC 很快地扩展,并支持处理 C++ 。后来又扩展能够支持更多编程语言,如 Fortran 、 Pascal 、 Objective-C 、 Java 、 Ada 、 Go 等。? GCC 的外部接口长得像一个标准的 Unix 编译器。使用者在命令列下键入 gcc 之程序名,以及一些命令参数,以便决定每个输入档案使用的个别语言编译器,并为输出程序码使用适合此硬件平台的组合语言编译器,并且选择性地执行连结器以制造可执行的程序。?每个语言编译器都是独立程序,此程序可处理输入的原始码,并输出组合语言码。全部的语言编译器都拥有共通的中介架构:一个前端解析符合此语言的原始码,并产生一抽象语法树,以及一翻译此语法树成为 GCC 的暂存器转换语言〈 RTL 〉的后端。编译器最佳化与静态程序码解析技术在此阶段应用于程序码上。最后,适用于此硬件架构的组合语言程序码以 Jack Davidson 与 Chris Fraser 发明的算法产出。?几乎全部的 GCC 都由 C写成,除了 Ada 前端大部分以 Ada 写成。?前端的功能在于产生一个可让后端处理之语法树。此语法解析器是手写之递回语法解析器。?一般编译器作者会将语法树的最佳化放在前端,但其实此步骤并不看语言的种类而有不同,且不需要用到语法解析器。因此 GCC 作者们将此步骤归入通称为中介阶段的部分里。此类的最佳化包括消解死码、消解重复运算与全域数值重编码等。? GCC 后端的行为因不同的前处理器宏和特定架构的功能而不同,例如不同的字符尺寸、呼叫方式与大小尾序等。后端接口的前半部利用这些讯息决定其 RTL 的生成形式,因此虽然 GCC 的 RTL 理论上不受处理器影响,但在此阶段其抽象指令已被转换成目标架构的格式。 1) [******@rhel5 Server]# rpm -ivh kernel-headers- - 2) [******@rhel5 Server]# rpm -ivh glibc-headers-- 3) [******@rhel5 Server]# rpm -ivh glibc-devel-- 4) [******@rhel5 Server]# rpm -ivh libgomp-- 5) [******@rhel5 Server]# rpm -ivh gcc-- 6) [******@rhel5 Server]# rpm -ivh libstdc++-devel- - 7) [******@rhel5 Server]# rpm -ivh gcc-c++-- ?// ?#include <> ? int main(void) ?{ ? printf("Hello World!\n"); ? return 0; ?} ?先输入“ gcc ”,在默认情况下, C编译器将生成一个名为 的可执行文件,输入“./ ”后,会显示“ Hello World ”。每一次编译程序时,新的 将覆盖原来的程序。你无法知道是哪个程序创建了 。我们可以通过使用-o 编译选项,告诉 gcc 我们想把可执行文件叫什么名字。我们将把这个程序叫做 test ,我们可以使用任何名字,因为 C没有 Java 那样的命名限制。输入“ gcc – o test ”,则直接生成“ test ”的文件,输入“./test ”即可。
GCC基础 来自淘豆网m.daumloan.com转载请标明出处.