一.定义
编译器实际上就是把一种语言翻译为另一种语言的程序。通常是把高级语言翻译为计算机或机器能够识别的低级语言。也存在从低级语言生成高级语言的编译器。这种由高级语言生成的低级语言代码重新生成高级语言代码的编译器又称为反编译器。还有从高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的中间代码的编译器(又叫级联)。
二.C/C++的编译器
(1)VectorC:只支持纯C,号称是最快的编译器。有一个交互式的优化器,可以看到 C代码对应的汇编代码。
(2)Cygwin和Mingw32:为一母所生,运行效果相差不大。它们对C++特性的支持是所有编译器中最完全的,支持C++的大部分特性。执行代码的效率不错,编译速度也较快。
(3)MSVC:VC6.0和VC7.0中的编译器。在VC7.0中有了很大的改进,对C++特性的支持比6.0有了很大的提高。用它编译出的程序,运行速度也很快。仅有少数情况下次于VectorC和GCC,其它情况下都是最快的。它的平均运行速度是最快的。
(4)Borland:具有较高的执行效率。相对微软平台的C++而言,开发的程序体积相对较大,但执行效率比微软的编译器高。
(5)Intel:太贵了,还要支持VC,编译速度比VC6还慢,不划算。不过代码质量不错。
(6)DigitalMars C/C++:编译速度较快,代码执行速度较慢。但是它的IDE在所有的FREE编程工具中是最专业的,有很强的代码分析,管理功能,提供了大量的编程资料。
三.LINUX的编译器
LINUX下可用的编译器有GCC、EGCS和PGCC。其中最常用的是GCC.
GCC是由GNU开发的编程语言编译器,原名是GNU C语言编译器。GCC是初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。“自由”是指它尊重用户的自由。
gcc所遵循的部分约定规则:
1).c为后缀的文件,C语言源代码文件;
2).a为后缀的文件,是由目标文件构成的档案库文件;
3).C,.cc或.cxx 为后缀的文件,是C++源代码文件且必须要经过预处理;
4).h为后缀的文件,是程序所包含的头文件;
5).i 为后缀的文件,是C源代码文件且不应该对其执行预处理;
6).ii为后缀的文件,是C++源代码文件且不应该对其执行预处理;
7).m为后缀的文件,是Objective-C源代码文件;
8).mm为后缀的文件,是Objective-C++源代码文件;
9).o为后缀的文件,是编译后的目标文件;
10).s为后缀的文件,是汇编语言源代码文件;
11).S为后缀的文件,是经过预编译的汇编语言源代
四.分类
(1)GCC家族:Cygwin Mingw32 DJGPP Dev-C++ GNU GCC 2.95.5~3.0.0.4版本.
其中,GNU GCC是根本。Cywin和Mingw32是WIN32平台下的编译器。DEV-C++只是GCC的一个外壳,自带的编译器是Mingw32的一个版本。在这些版本中,Cygwin是最大的,不仅包括编译器,还有其它很多的工具。其实,它就是UNIX系统在WIN32平台上的一个实现。但是,它并不是很易用。
(2)MS家族:MSC5.0、6.0、7.0 MSQC1.0、2.5 MSVC1.0、4.2、6.0、7.0 Visual C++。已经非常成熟可靠了。Visual C++对标准C++的兼容性达到了98.22%。
(3)Borland家族:TC1.0、2.0 TC++1.01、3.0 BC3.0、3.1、4.0、4.5、5.0、5.02 BCB3.0\5.0\6.0 Borland C++.
速度快、空间效率高。
(4)其它:
Intel C/C++5.0
Watcom C/C++ 11.0、11.0c
VectorC 1.3.3
IBM VisualAge for C++
KAI C/C++ 4.03f for RedHat 7.2
Lcc4.1
LCC-WIN32 2001-09-25~2002-04-28
Small C
CC386
Pacific