1.2 Major features of GCC
This section describes some of the most important features of GCC.
First of all, GCC is a portable compiler--it runs on most platforms
available today, and can produce output for many types of processors. In
addition to the processors used in personal computers, it also supports
microcontrollers, DSPs and 64-bit CPUs.
GCC is not only a native compiler--it can also cross-compile any
program, producing executable files for a different system from the one
used by GCC itself. This allows software to be compiled for embedded
systems which are not capable of running a compiler. GCC is written in
C with a strong focus on portability, and can compile itself, so it can
be adapted to new systems easily.
GCC has multiple language frontends, for parsing different
languages. Programs in each language can be compiled, or
cross-compiled, for any architecture. For example, an ADA program can be
compiled for a microcontroller, or a C program for a supercomputer.
GCC has a modular design, allowing support for new languages and
architectures to be added. Adding a new language front-end to GCC
enables the use of that language on any architecture, provided that the
necessary run-time facilities (such as libraries) are available.
Similarly, adding support for a new architecture makes it available to
all languages.
Finally, and most importantly, GCC is free software, distributed under the
GNU General Public License (GNU GPL).(1) This means you have
the freedom to use and to modify GCC, as with all GNU software. If you
need support for a new type of CPU, a new language, or a new feature you
can add it yourself, or hire someone to enhance GCC for you. You can
hire someone to fix a bug if it is important for your work.
Furthermore, you have the freedom to share any enhancements you make to
GCC. As a result of this freedom you can also make use of enhancements
to GCC developed by others. The many features offered by GCC today show
how this freedom to cooperate works to benefit you, and everyone else
who uses GCC.