hc
2023-05-26 a23f51ed7a39e452c1037343a84d7db1ca2c5bd7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2016 Free Software Foundation, Inc.
 
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Funding Free Software", the Front-Cover
Texts being (a) (see below), and with the Back-Cover Texts being (b)
(see below).  A copy of the license is included in the section entitled
"GNU Free Documentation License".
 
(a) The FSF's Front-Cover Text is:
 
A GNU Manual
 
(b) The FSF's Back-Cover Text is:
 
You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Using the GNU Compiler Collection (GCC): G++ and GCC</title>
 
<meta name="description" content="Using the GNU Compiler Collection (GCC): G++ and GCC">
<meta name="keywords" content="Using the GNU Compiler Collection (GCC): G++ and GCC">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="index.html#Top" rel="up" title="Top">
<link href="Standards.html#Standards" rel="next" title="Standards">
<link href="index.html#Top" rel="prev" title="Top">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
 
 
</head>
 
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="G_002b_002b-and-GCC"></a>
<div class="header">
<p>
Next: <a href="Standards.html#Standards" accesskey="n" rel="next">Standards</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Programming-Languages-Supported-by-GCC"></a>
<h2 class="chapter">1 Programming Languages Supported by GCC</h2>
 
<a name="index-GCC"></a>
<a name="index-GNU-Compiler-Collection"></a>
<a name="index-GNU-C-Compiler"></a>
<a name="index-Ada"></a>
<a name="index-Fortran"></a>
<a name="index-Go"></a>
<a name="index-Java"></a>
<a name="index-Objective_002dC"></a>
<a name="index-Objective_002dC_002b_002b"></a>
<p>GCC stands for &ldquo;GNU Compiler Collection&rdquo;.  GCC is an integrated
distribution of compilers for several major programming languages.  These
languages currently include C, C++, Objective-C, Objective-C++, Java,
Fortran, Ada, and Go.
</p>
<p>The abbreviation <em>GCC</em> has multiple meanings in common use.  The
current official meaning is &ldquo;GNU Compiler Collection&rdquo;, which refers
generically to the complete suite of tools.  The name historically stood
for &ldquo;GNU C Compiler&rdquo;, and this usage is still common when the emphasis
is on compiling C programs.  Finally, the name is also used when speaking
of the <em>language-independent</em> component of GCC: code shared among the
compilers for all supported languages.
</p>
<p>The language-independent component of GCC includes the majority of the
optimizers, as well as the &ldquo;back ends&rdquo; that generate machine code for
various processors.
</p>
<a name="index-COBOL"></a>
<a name="index-Mercury"></a>
<a name="index-Pascal"></a>
<p>The part of a compiler that is specific to a particular language is
called the &ldquo;front end&rdquo;.  In addition to the front ends that are
integrated components of GCC, there are several other front ends that
are maintained separately.  These support languages such as Pascal,
Mercury, and COBOL.  To use these, they must be built together with
GCC proper.
</p>
<a name="index-C_002b_002b"></a>
<a name="index-G_002b_002b"></a>
<a name="index-Ada-1"></a>
<a name="index-GNAT"></a>
<p>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
talk about compiling one of those languages, we might refer to that
compiler by its own name, or as GCC.  Either is correct.
</p>
<a name="index-compiler-compared-to-C_002b_002b-preprocessor"></a>
<a name="index-intermediate-C-version_002c-nonexistent"></a>
<a name="index-C-intermediate-output_002c-nonexistent"></a>
<p>Historically, compilers for many languages, including C++ and Fortran,
have been implemented as &ldquo;preprocessors&rdquo; which emit another high
level language such as C.  None of the compilers included in GCC are
implemented this way; they all generate machine code directly.  This
sort of preprocessor should not be confused with the <em>C
preprocessor</em>, which is an integral feature of the C, C++, Objective-C
and Objective-C++ languages.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Standards.html#Standards" accesskey="n" rel="next">Standards</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
</div>
 
 
 
</body>
</html>