What is GCC

What is GCC

Most programmers working on Linux/Unix platforms are familiar with GCC since this is one of the most popular compiler for writing portable code for a variety of platforms. GCC was first released in 1987 as the part of GNU Project. However, the first stable release of GCC (Rel. 1.17) came out in 1988 (January, 9). Initially GCC stood for "GNU C Compiler" as it was a compiler for C language, but later GCC evolved into a more powerful compiler capable of compiling C++, Ada, Java, Fortran and other languages as well. Due to this GCC has become a suite of compilers and now is appropriately called as "GNU Collection of Compilers".

It's Free, It's Free

The credit for creating GCC goes to Richard M. Stallman (a.k.a rms) who on 22 March 1987, RMS sent an e-mail announcing first release of GCC to announce the release of GCC. He is also the founder of GNU Project. The main aim of GNU Project was to develop and promote open source culture. GCC was developed from scratch and was provided free of cost. GCC is still distributed under GPL (GNU Public License). This means that individuals have the liberty to modify and use the code for their use either by themselves or can hire others to do so. This open-source policy has been a major factor for the wide-spread acceptance and popularity of GCC.

To quote RMS

Shortly before beginning the GNU project, I heard about the Free

University Compiler Kit, also known as VUCK. (The Dutch word for

"free" is written with a V.) This was a compiler designed to handle

multiple languages,including C and Pascal, and to support multiple

target machines. I wrote to its author asking if GNU could use it.

He responded derisively, stating that the university was free but

the compiler was not. I therefore decided that my first program for

the GNU project would be a multi-language, multi-platform compiler.

Hoping to avoid the need to write the whole compiler myself, I

obtained the source code for the Pastel compiler, which was a

multi-platform compiler developed at Lawrence Livermore Lab. It

supported, and was written in, an extended version of Pascal,

designed to be a system-programming language. I added a C front

end, and began porting it to the Motorola 68000 computer. But I had

to give that up when I discovered that the compiler needed many

megabytes of stack space, and the available 68000 Unix system would

only allow 64k.

I then realized that the Pastel compiler functioned by parsing the

entire input file into a syntax tree, converting the whole syntax tree

into a chain of "instructions", and then generating the whole output

file, without ever freeing any storage. At this point, I concluded

I would have to write a new compiler from scratch. That new compiler

is now known as GCC; none of the Pastel compiler is used in it, but

I managed to adapt and use the C front end that I had written.

GCC and EGCS

GCC was first released in 1987 with help of funds by individuals and companies to the Free Software Foundation. In 1992 the second version of GCC was released capable of compiling C++. Since the source code of GCC was available to everyone, different developers around the globe started adding their own features and fixing bus. This resulted in different forks of standard GCC compiler. In 1997, these developers created a different project EGCS (pronounced as 'eggs')

Just like RMS, these Developers also sent an e-mail announcing the creation of EGCS project and describing the need for it

partly in hope (to deliver changes to end-users faster) and partly in frustration (since the original GNU GCC was unable to keep up with the required pace). EGCS Project was developed under the umbrella of Cygnus, a company which provided support for GNU Products including GCC

GNU Project realized the efforts of EGCS and in April 1999 EGCS and GCC were merged into single stream with EGCS as the official GCC compiler of GNU Project. It was at this time when GCC was renamed to "GNU Collection of Compilers". The next compiler which GNU Project and EGCS collectively came out was GCC version 2.95.

GCC For Windows ?

If you are one of those people who want the best of both worlds, then this would be a good news to you that gcc is also available on Windows. This means that people can develop for Linux/Unix platform on Windows platform. Cygnus package provides GCC for Windows. WinAVR distribution also provides GCC for windows.