GCC Dictionary Definitions

GCC. It is a compiler for GNU considered standard for operating systems derived from UNIX, the code open or also proprietary operating systems like Mac OS X. The acronym GCC stands for GNU Compiler Collection. Before this acronym for GNU C Compiler (GNU C Compiler). As its name suggests, it is a collection of compilers and supports various languages: C, C ++, Objective C, Chill, Fortran, Ada, and Java.

GCC (GNU Compiler Collection)

According to abbreviationfinder, GCC is part of the GNU project, which aims to improve the compiler used in GNU systems including the GNU / Linux variant. GCC development uses an open development environment and supports many other platforms in order to encourage the use of a global class compiler-optimizer, to attract many development teams, to ensure that GCC and GNU systems work on different architectures and different environments, and even more, to extend and improve the features of GCC. GCC requires the set of applications known as binutils to perform tasks such as identifying object files or obtaining their size for copying, translating, or listing, linking, or removing unnecessary symbols. The compiler is distributed under the license GPL (General Public License) which makes it freely distributed: copies of it can be made and given away or sold as long as the Source Code is included (or how to get it is indicated) and the license is maintained. There are versions for practically all operating systems. It is included in most (if not all) GNU / Linux distributions. The DOS version of this compiler is DJGPP. Hundreds of volunteers from all over the world participate in the development of this compiler.


The first version of GCC was made in 1987. This was a significant advance, being the first portable ANSI C compiler optimization released as free software. Since then CCG has become one of the most important tools in free software development. A major compiler revision came with the 2.0 series in 1992, which added the ability to compile C ++. In 1997 An experimental branch of the compiler (SLGE) was created to improve optimization and support for C ++. As a result of this work, egcs was adopted as the new CCG development line, and these features became widely available in GCC version 3.0 in 2001. Over time the CCG has been expanded to support many languages, including Fortran, Ada, Java,and Objective-C. Its development is guided by the CCG Steering Committee, a group comprised of representatives from the CCG user communities in industry, research, and academia.


The GCC exterior interface is generally standard for a UNIX system. Users call a controller program called gcc, which interprets the given arguments, decides which compiler to use for each file, and runs the assembler with the resulting code, then possibly runs the linker to produce a complete program. Each of the compilers is a separate program that takes Source Code as input and produces Assembler code. They all have a common internal structure: a Front end per language that processes the language and produces a syntax tree and a Back end, which converts those trees to the RTL Language (Record Transfer Language) from GCC, then performs various optimizations and produces the assembler using architecture-specific pattern recognition, originally based on an Algorithm by Jack Davidson and Chris Fraser. Almost all of GCC is written in C, although much of the Ada front end is written in Ada.

Build Stages

The Compilation process involves four successive stages. To go from a source program written by a human to an executable file it is necessary to carry out these four steps in succession. The Gcc and G ++ commands are capable of doing the whole process in one go.


At this stage the directives to the Preprocessor are interpreted. Among other things, Variables initialized with #define are substituted in code for their value in all places where their name appears.


The Compilation transforms the C Code into the own assembly language of the Processor of our machine.


The assembly transforms the program written in Assembly Language to Object Code, a binary File in Machine Language executable by the Processor.


The C / C ++ Functions included in our Code, such as printf () in the example, are already compiled and assembled in Libraries existing in the system. It is necessary to incorporate in some way the binary code of these functions to our executable. This is the linking stage, where one or more modules are brought together in object code with the existing code in the libraries.