花了些时间学习了下GCC,在此作一下总结,不求多么深入,只求通俗易懂。希望能让更多的初学者在较短时间内对其有一个概况的了解

先来说说GNU:GNU(“GNU's Not Unix”的递归缩写,它的发音为“guh-noo”)是一个自由软件工程项目,该项目始于1984年,它是一个叫做Richard Stallman的牛人发起的,目的是开发一个完整的、自由的类UNIX系统(UNIX like):GNU系统。各种使用Linux作为内核的GNU操作系统正在被广泛的使用;尽管这类操作系统常常被简略的称作Linux,其实更准确的说法应该是GNU/Linux系统。

GCC是GNU的C和C++ 编译器,用于Unix/Unix-like系统下编程,对C与C++标准有很好的支持。起初,GCC只是一个C语言编译器,他是GNU C Compiler 的英文缩写。随着众多自由开发者的加入和GCC自身的发展,如今的GCC以经是一个包含众多语言的编译器了。其中包括C,C++,Ada,Object C和Java等。所以,GCC也由原来的GNU C Compiler变为GNU Compiler Collection。也就是“GNU编译器家族”的意思。当然,如今的GCC借助于他的特性,具有了交叉编译器的功能,即在一个平台下编译另一个平台的代码。

GCC 可同时用来编译C 程序和C++ 程序。一般来说,C 编译器通过源文件的后缀名来判断是C 程序还是C++ 程序。在Linux 中,C 源文件的后缀名为.c,而C++ 源文件的后缀名为.C 或.cpp。gcc命令主要用来编译C程序,也可以用来编译C++ 源文件,但是它不能自动和C++ 程序使用的库连接。因此,通常使用g++来完成C++ 程序的编译和连接,该程序会自动调用gcc 实现编译。g++实际上也是调用gcc来编译, 也就是说g++其实只是连接C++程序,真正的编译还是交给gcc,这时可以把gcc看作一个外壳。

起初,GCC只是用于Unix,Unix-like系统的编译器。不过,现在Windows下也出现了GCC的稳定移植版。比较流行的有:MinGW,Cygwin和Djgpp(Djgpp是应用于DOS系统的,考虑到windows对DOS的兼容,所以也将Djgpp纳入其中了)。

MinGW,Cygwin和Djgpp各有特色,针对不同的应用场合,可以选择不同的移植版来满足需要。MinGW这个系列的移植,主要方向是让GCC的Windows移植版能使用Win32API来编程。而Cygwin的目标是能让Unix-like下的程序代码在Windows下直接被编译。至于Djgpp,则是想让DOS下也能用上GCC。

现在在Windows下用的比较多的是MinGW系列。再加上MinGW较Cygwin和Djgpp安装和使用更为简便。所以,建议读者学习时还是使用MinGW。

PS:本文参考了北斗星君的《GCC for Win32开发环境介绍(1)》

posted on 2006-09-17 15:43  eyoung  阅读(1161)  评论(0编辑  收藏  举报