GCC: The Complete Reference



is compiled by the GNU compiler.
The GCC compiler has had a very interesting history. Its history is more than just
a list of dates and events. This piece of software is more fundamental to the entire free
software movement than any other. In fact, without it or something like it, there would
be no free software movement. Linux is possible because of GCC.

This introduction provides an overview of what is in the compiler collection and
what the tools are that surround it. Along with compiling are the tools that track the
source code and the programs to edit files, control the compilation process, and provide
information for debugging.

This introduction concludes with a parts list and a process description. The list
contains descriptions of the files and programs that make up the compiler collection.
The list is followed by a step-by-step description of the process of moving source files
into a linked and executable program.

GNU
GCC is a product of the GNU Project. This project began in 1984 with the goal in mind
of developing a complete UNIX-like operating system as free software. Like any project
of this size, the GNU Project has taken some twists and turns, but the goal has been
achieved. Today there is indeed a fully functional UNIX-like operating system, named
Linux, abroad in the world and is being used with great success by countless companies,
governments, and individuals. And this system, with all its utilities and applications,
is based on the GNU Compiler Collection.

The range of free software available for Linux, and for other systems, is enormous
and is growing every day. Software developed as part of the overall GNU Project to create a
free UNIX is listed in the Free Software Directory at http://www.gnu.org/directory.

Thousands of programmers have contributed to the various GNU projects, as well
as to other free software projects, and virtually all of them at some level are based on GCC.
Measuring a Compiler
Compilers can be compared in terms of speed of compilation, speed of the generated
code, and the size of the generated code. It's hard to measure much else. Some numbers
can be produced, but it's difficult to attach much meaning to them. For example, a count
of the number of source files (makefiles, configuration files, header files, executable code,
and so on) shows that there are well over 15,000 files of various types. Compiling the
source files into object files, libraries, and executable programs increases the count by
several thousand more. Counting the lines of code--the number of lines of text in

4