@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
@c 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
|
@c 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
|
@c This is part of the GCC manual.
|
@c This is part of the GCC manual.
|
@c For copying conditions, see the file gcc.texi.
|
@c For copying conditions, see the file gcc.texi.
|
|
|
@node G++ and GCC
|
@node G++ and GCC
|
@chapter Programming Languages Supported by GCC
|
@chapter Programming Languages Supported by GCC
|
|
|
@cindex GCC
|
@cindex GCC
|
@cindex GNU Compiler Collection
|
@cindex GNU Compiler Collection
|
@cindex GNU C Compiler
|
@cindex GNU C Compiler
|
@cindex Ada
|
@cindex Ada
|
@cindex Fortran
|
@cindex Fortran
|
@cindex Java
|
@cindex Java
|
@cindex Objective-C
|
@cindex Objective-C
|
@cindex Objective-C++
|
@cindex Objective-C++
|
@cindex treelang
|
@cindex treelang
|
GCC stands for ``GNU Compiler Collection''. GCC is an integrated
|
GCC stands for ``GNU Compiler Collection''. GCC is an integrated
|
distribution of compilers for several major programming languages. These
|
distribution of compilers for several major programming languages. These
|
languages currently include C, C++, Objective-C, Objective-C++, Java,
|
languages currently include C, C++, Objective-C, Objective-C++, Java,
|
Fortran, and Ada.
|
Fortran, and Ada.
|
|
|
The abbreviation @dfn{GCC} has multiple meanings in common use. The
|
The abbreviation @dfn{GCC} has multiple meanings in common use. The
|
current official meaning is ``GNU Compiler Collection'', which refers
|
current official meaning is ``GNU Compiler Collection'', which refers
|
generically to the complete suite of tools. The name historically stood
|
generically to the complete suite of tools. The name historically stood
|
for ``GNU C Compiler'', and this usage is still common when the emphasis
|
for ``GNU C Compiler'', and this usage is still common when the emphasis
|
is on compiling C programs. Finally, the name is also used when speaking
|
is on compiling C programs. Finally, the name is also used when speaking
|
of the @dfn{language-independent} component of GCC: code shared among the
|
of the @dfn{language-independent} component of GCC: code shared among the
|
compilers for all supported languages.
|
compilers for all supported languages.
|
|
|
The language-independent component of GCC includes the majority of the
|
The language-independent component of GCC includes the majority of the
|
optimizers, as well as the ``back ends'' that generate machine code for
|
optimizers, as well as the ``back ends'' that generate machine code for
|
various processors.
|
various processors.
|
|
|
@cindex COBOL
|
@cindex COBOL
|
@cindex Mercury
|
@cindex Mercury
|
@cindex Pascal
|
@cindex Pascal
|
The part of a compiler that is specific to a particular language is
|
The part of a compiler that is specific to a particular language is
|
called the ``front end''. In addition to the front ends that are
|
called the ``front end''. In addition to the front ends that are
|
integrated components of GCC, there are several other front ends that
|
integrated components of GCC, there are several other front ends that
|
are maintained separately. These support languages such as Pascal,
|
are maintained separately. These support languages such as Pascal,
|
Mercury, and COBOL@. To use these, they must be built together with
|
Mercury, and COBOL@. To use these, they must be built together with
|
GCC proper.
|
GCC proper.
|
|
|
@cindex C++
|
@cindex C++
|
@cindex G++
|
@cindex G++
|
@cindex Ada
|
@cindex Ada
|
@cindex GNAT
|
@cindex GNAT
|
Most of the compilers for languages other than C have their own names.
|
Most of the compilers for languages other than C have their own names.
|
The C++ compiler is G++, the Ada compiler is GNAT, and so on. When we
|
The C++ compiler is G++, the Ada compiler is GNAT, and so on. When we
|
talk about compiling one of those languages, we might refer to that
|
talk about compiling one of those languages, we might refer to that
|
compiler by its own name, or as GCC@. Either is correct.
|
compiler by its own name, or as GCC@. Either is correct.
|
|
|
@cindex compiler compared to C++ preprocessor
|
@cindex compiler compared to C++ preprocessor
|
@cindex intermediate C version, nonexistent
|
@cindex intermediate C version, nonexistent
|
@cindex C intermediate output, nonexistent
|
@cindex C intermediate output, nonexistent
|
Historically, compilers for many languages, including C++ and Fortran,
|
Historically, compilers for many languages, including C++ and Fortran,
|
have been implemented as ``preprocessors'' which emit another high
|
have been implemented as ``preprocessors'' which emit another high
|
level language such as C@. None of the compilers included in GCC are
|
level language such as C@. None of the compilers included in GCC are
|
implemented this way; they all generate machine code directly. This
|
implemented this way; they all generate machine code directly. This
|
sort of preprocessor should not be confused with the @dfn{C
|
sort of preprocessor should not be confused with the @dfn{C
|
preprocessor}, which is an integral feature of the C, C++, Objective-C
|
preprocessor}, which is an integral feature of the C, C++, Objective-C
|
and Objective-C++ languages.
|
and Objective-C++ languages.
|
|
|