GCC,全称为GNU Compiler Collection,是一个广泛使用的开源编译器集合。该编译器集合不仅支持C和C++语言,还包括支持Fortran、Ada、Java、Objective-C等其他语言。GCC由Richard Stallman创立,目的是开发一个完整的类Unix操作系统以提升自由和促进计算机用户与程序员之间的合作,即GNU项目的一部分。1987年发布的GCC第一版是第一个可移植的、符合ANSI C标准的优化编译器,它的出现对自由软件开发领域具有里程碑意义。
GCC的发展历程可以概述为几个重要阶段:
1. GCC第一版于1987年发布,标志着自由软件开发领域的重大突破。
2. 1992年GCC推出2.0版本,引入了C++编译能力。
3. 1997年,为了改进优化和对C++的支持,GCC的实验性分支EGCS(Experimental/Enhanced GNU Compiler System)被建立。
4. EGCS在随后的时间里逐渐取代了GCC作为开发主线,而这些改进在2001年的GCC3.0版本中得到广泛推广。
5. GCC随着时间不断扩展,以支持更多的编程语言,比如Fortran、ADA、Java和Objective-C等。
GCC的核心特征包括:
- 高度的可移植性:GCC能在几乎所有主流平台上编译程序,并能够为不同类型的CPU生成输出,比如个人计算机、微控制器、DSP和64位CPU。
- 跨平台编译能力:除了本地编译,GCC还能编译出可在不同系统上运行的程序,这使得为无法运行编译器的嵌入式系统编写软件成为可能。
- 自我编译能力:GCC采用C语言编写,由于其高度关注可移植性,因此GCC能够轻松移植到新平台上。
- 多语言前端:GCC拥有多个语言前端,用以解析不同编程语言的源代码。
GCC还有一个特点,它不仅仅是一个编译器,它还是20年来自由软件运动的一部分。自由软件的定义不仅包含软件功能和可靠性方面,也包含软件在道德伦理层面上尊重用户自由的重要性。这包括用户运行软件的权利、研究和修改源代码的权利、自由分享软件拷贝的权利以及向自由软件社区贡献修改版的权利。自由软件的这一伦理原则强调了用户自由的尊重,而GCC是这种尊重的体现之一。
此外,GCC的开发由GCC指导委员会管理,该委员会由来自工业界、学术机构和研究机构的GCC用户社区的代表组成。GCC的每个主要版本更新,都会引入一些新特性,以优化性能和提高编译效率,使其在当今复杂的编译任务中,依旧保持其作为核心编译工具的地位。
在实际使用上,GCC提供了一系列的编译选项,程序员可以使用这些选项进行程序的编译、优化和调试。本书的目的就是向读者介绍如何使用GCC的这些功能,从而使得一个程序员能够利用GCC这个强大的工具来编译程序,而不是直接教授C或C++语言本身。在阅读完本书后,读者应该能够掌握编译一个程序以及如何使用GCC的优化和调试选项等基础知识。
理查德·斯托尔曼,作为GCC的创始人,同时也是GNU项目的创立者,他在本书的序言中强调了自由软件的重要性,并解释了自由软件和自由软件运动的基本原则。他鼓励读者支持自由软件运动,因为自由从来不会自动得到保护,需要人们的共同努力和参与。