红联Linux门户
Linux帮助

心随心动---GCC的发展之路

发布时间:2005-06-06 00:19:15来源:红联作者:风雨无阻
转:不经意间,GCC已发展到了4.0的版本,尽管在软件开发社区之外乏人闻问,但因为GCC在几乎所有开源软件和自由软件中都会用到,因此它的编译性能的涨落会直接影响到Linux 、Firefox 乃至于OpenOffice.org和Apache等几千个项目的开发。因此,把GCC摆在开源软件的核心地位是一点也不为过。另一方面,GCC4.0的出现,正在牵引着广大程序员们的心。如果我们非要用一个词来说明GCC与程序员之间的关系,那无疑是"心随心动"。


历史篇
作为自由软件的旗舰项目,Richard Stallman 在十多年前刚开始写作 GCC 的时候,还只是把它当作仅仅一个 C 程序语言的编译器;GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compiler Collection 也即是 GNU 编译器家族的意思了。另一方面,说到 GCC 对于各种硬件平台的支持,概括起来就是一句话:无所不在。几乎所有有点实际用途的硬件平台,甚至包括有些不那么有实际用途的硬件平台。

Gcc 简介
Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。Gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。

GCC 3.0印象记
从1999年4月开始,GCC的含义从GNU C Compiler变成了GNU Compiler Collection,支持C、C++、Objective C、Chill、Fortan和Java等语言。其中C++编译器G++当然是我们关注的焦点。从GCC网站的介绍中可以看出,G++作了不少改进,更好地支持C++标准。我们将选出相关的内容逐一评论。我们对GCC 3.0的总体印象是,有不少改进,但"革命尚未成功",还得加把劲儿。
技术篇
GCC是整个协作软件开发理念的基础,时至今日,GCC的使用范围已不仅仅限于Linux平台,而是扩展到了包括Windows在内的很多平台。这样,GCC性能的高低,还关系到许多专有软件的核心竞争力。

Linux上安装GCC编译器过程

在cygwin下安装gcc4.0
GCC----一切从这里开始


要想读懂本文,你需要对C语言有基本的了解,本文将介绍如何使用gcc编译器。首先,我们介绍如何在命令行方式下使用编译器编译简单的C源代码。然后,我们简要介绍一下编译器究竟作了那些工作,以及如何控制编译过程。我们也简要介绍了调试器的使用方法。

GCC 中文手册

GCC中SIMD指令的应用方法
X86架构上的多媒体应用开发,如果能够使用SIMD指令进行优化, 性能将大大提高。目前,IA-32的SIMD指令包括MMX,SSE,SSE2等几级。 在GCC的开发环境中,有几种使用SIMD指令的方式……

GCC常用命令描述
unix下开发常用的编译工具gcc,我对于gcc的了解知道的很少,
一般用到的也就是gcc -o xx xx.cpp
今天翻了一下gnu的gcc manual 花了点时间总结了一下,
给大家分享一下!呵呵,希望对大家有帮助.
这里介绍一下gcc的常用命令选项(可以参考gnu gcc manual).
1. gcc 支持的语言.
GCC 全称是GNU Compiler Collection ,包含一些主要编译器支持语言 C, C++, Objective-C, Java, Fortran, and Ada的编译.
2.gcc 命令选项
当执行gcc的时候通常会经过四个处理过程,preprocessing, compilation, assembly and linking .可以通过加不同的选项来中止到某个过程.
a.总的选项.
-c -S -E -o file -pipe -pass-exit-codes
-x language -v -### --help --target-help --version
编译器编译文件要经过四个阶段,如上所述.是按顺序来进行的.
编译器根据输入文件的后缀来决定进入哪个阶段的处理过程:
file.c c 文件要经过豫处理.
file.i c源文件不必进行豫处理。
file.ii c++源文件不必进行豫处理。
file.h c/c++豫编译头文件.
file.cc
file.cp
file.cxx
file.cpp
file.CPP
file.c++
file.C c++源文件要经过豫处理.
file.hh
file.H c++头文件转换为豫处理头文件.
file.s
Assembler code.
file.S
Assembler code which must be preprocessed
-x language =========选项是为了指定语言告诉gcc 文件是什么语言的,
不必要缺省的后缀识别.
languge 可以是:
c c-header cpp-output
c++ c++-header c++-cpp-output
objective-c objective-c-header objc-cpp-output
assembler assembler-with-cpp
ada
f77 f77-cpp-input ratfor
java
treelang
-x none 用后缀识别,关闭语言识别.
-c 只是编译不连接,生成的都是目标文件. .c, .i, .s ==> .o
-S 只是编译不进行汇编,生成汇编代码. .c, .i ==>.s
-E 只是进行豫编译,不做其他处理.
-o file 把输出文件输出到file里.
-v 打印出编译器内部编译的各个过程的命令行信息.和编译器的版本.
-### 同上,但是不真正执行命令.
-pipe 编译器编译时各个阶段的信息是保存到临时文件的,如果你不想
用临时文件的话可以通过管道也行.这个命令选项就用上了.不过有些系统不支持.



Gcc使用的内嵌汇编语法格式小教程
本文对内嵌汇编语法,从基本语法、内嵌汇编的格式介绍、和扩展的内嵌汇编格式进行了详细说明,需要说明的是gcc采用的是at&t的汇编格式。
现状篇
GCC4.0的发展道路并不平坦。GCC 4.0发布不久就因为无法编译Linux图形界面KDE,而遭到参与开发KDE的程序员们的放弃。但是,一方面,GCC4.0编译性能的提高,是有目共睹的。另一方面,开源软件的一大优势,就在于它能在开发者的不断改进中变得完善。

开源开发工具GCC将大翻修 性能有望全面提升
改良GCC 并非易事,从GCC 3.3 版升级到3.4 版,在性能上虽然有进步,但却造成回溯兼容性的问题。GCC4.0在这方面又做得如何呢?

开源利器GCC 4.0性能改进工作火热进行
GCC 4.0发布不久就遇到问题,Linux图形界面KDE无法用GCC编译,参与开发KDE的程序员们随即放弃了GCC 4.0。这些问题又如何解决呢?
文章评论

共有 5 条评论

  1. hongmaojin 于 2008-03-28 12:56:05发表:

    学习中

  2. jpl2000 于 2005-10-10 00:17:55发表:

    支持

  3. chentong 于 2005-08-29 00:46:14发表:

    支持

  4. linux 于 2005-07-31 11:18:00发表:

    支持下

  5. 何哥 于 2005-07-05 00:18:39发表: