1 |
268 |
jeremybenn |
<html lang="en">
|
2 |
|
|
<head>
|
3 |
|
|
<title>Prerequisites for GCC</title>
|
4 |
|
|
<meta http-equiv="Content-Type" content="text/html">
|
5 |
|
|
<meta name="description" content="Prerequisites for GCC">
|
6 |
|
|
<meta name="generator" content="makeinfo 4.12">
|
7 |
|
|
<link title="Top" rel="top" href="#Top">
|
8 |
|
|
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
9 |
|
|
<!--
|
10 |
|
|
Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
|
11 |
|
|
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
|
12 |
|
|
2008 Free Software Foundation, Inc.
|
13 |
|
|
|
14 |
|
|
Permission is granted to copy, distribute and/or modify this document
|
15 |
|
|
under the terms of the GNU Free Documentation License, Version 1.2 or
|
16 |
|
|
any later version published by the Free Software Foundation; with no
|
17 |
|
|
Invariant Sections, the Front-Cover texts being (a) (see below), and
|
18 |
|
|
with the Back-Cover Texts being (b) (see below). A copy of the
|
19 |
|
|
license is included in the section entitled "GNU Free Documentation License".
|
20 |
|
|
|
21 |
|
|
(a) The FSF's Front-Cover Text is:
|
22 |
|
|
|
23 |
|
|
A GNU Manual
|
24 |
|
|
|
25 |
|
|
(b) The FSF's Back-Cover Text is:
|
26 |
|
|
|
27 |
|
|
You have freedom to copy and modify this GNU Manual, like GNU
|
28 |
|
|
software. Copies published by the Free Software Foundation raise
|
29 |
|
|
funds for GNU development.-->
|
30 |
|
|
<meta http-equiv="Content-Style-Type" content="text/css">
|
31 |
|
|
<style type="text/css"><!--
|
32 |
|
|
pre.display { font-family:inherit }
|
33 |
|
|
pre.format { font-family:inherit }
|
34 |
|
|
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
35 |
|
|
pre.smallformat { font-family:inherit; font-size:smaller }
|
36 |
|
|
pre.smallexample { font-size:smaller }
|
37 |
|
|
pre.smalllisp { font-size:smaller }
|
38 |
|
|
span.sc { font-variant:small-caps }
|
39 |
|
|
span.roman { font-family:serif; font-weight:normal; }
|
40 |
|
|
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
41 |
|
|
--></style>
|
42 |
|
|
</head>
|
43 |
|
|
<body>
|
44 |
|
|
<h1 class="settitle">Prerequisites for GCC</h1>
|
45 |
|
|
<a name="index-Prerequisites-1"></a>
|
46 |
|
|
GCC requires that various tools and packages be available for use in the
|
47 |
|
|
build procedure. Modifying GCC sources requires additional tools
|
48 |
|
|
described below.
|
49 |
|
|
|
50 |
|
|
<h3 class="heading"><a name="TOC0"></a>Tools/packages necessary for building GCC</h3>
|
51 |
|
|
|
52 |
|
|
<dl>
|
53 |
|
|
<dt>ISO C90 compiler<dd>Necessary to bootstrap GCC, although versions of GCC prior
|
54 |
|
|
to 3.4 also allow bootstrapping with a traditional (K&R) C compiler.
|
55 |
|
|
|
56 |
|
|
<p>To build all languages in a cross-compiler or other configuration where
|
57 |
|
|
3-stage bootstrap is not performed, you need to start with an existing
|
58 |
|
|
GCC binary (version 2.95 or later) because source code for language
|
59 |
|
|
frontends other than C might use GCC extensions.
|
60 |
|
|
|
61 |
|
|
<br><dt>GNAT<dd>
|
62 |
|
|
In order to build the Ada compiler (GNAT) you must already have GNAT
|
63 |
|
|
installed because portions of the Ada frontend are written in Ada (with
|
64 |
|
|
GNAT extensions.) Refer to the Ada installation instructions for more
|
65 |
|
|
specific information.
|
66 |
|
|
|
67 |
|
|
<br><dt>A “working” POSIX compatible shell, or GNU bash<dd>
|
68 |
|
|
Necessary when running <samp><span class="command">configure</span></samp> because some
|
69 |
|
|
<samp><span class="command">/bin/sh</span></samp> shells have bugs and may crash when configuring the
|
70 |
|
|
target libraries. In other cases, <samp><span class="command">/bin/sh</span></samp> or <samp><span class="command">ksh</span></samp>
|
71 |
|
|
have disastrous corner-case performance problems. This
|
72 |
|
|
can cause target <samp><span class="command">configure</span></samp> runs to literally take days to
|
73 |
|
|
complete in some cases.
|
74 |
|
|
|
75 |
|
|
<p>So on some platforms <samp><span class="command">/bin/ksh</span></samp> is sufficient, on others it
|
76 |
|
|
isn't. See the host/target specific instructions for your platform, or
|
77 |
|
|
use <samp><span class="command">bash</span></samp> to be sure. Then set <samp><span class="env">CONFIG_SHELL</span></samp> in your
|
78 |
|
|
environment to your “good” shell prior to running
|
79 |
|
|
<samp><span class="command">configure</span></samp>/<samp><span class="command">make</span></samp>.
|
80 |
|
|
|
81 |
|
|
<p><samp><span class="command">zsh</span></samp> is not a fully compliant POSIX shell and will not
|
82 |
|
|
work when configuring GCC.
|
83 |
|
|
|
84 |
|
|
<br><dt>A POSIX or SVR4 awk<dd>
|
85 |
|
|
Necessary for creating some of the generated source files for GCC.
|
86 |
|
|
If in doubt, use a recent GNU awk version, as some of the older ones
|
87 |
|
|
are broken. GNU awk version 3.1.5 is known to work.
|
88 |
|
|
|
89 |
|
|
<br><dt>GNU binutils<dd>
|
90 |
|
|
Necessary in some circumstances, optional in others. See the
|
91 |
|
|
host/target specific instructions for your platform for the exact
|
92 |
|
|
requirements.
|
93 |
|
|
|
94 |
|
|
<br><dt>gzip version 1.2.4 (or later) or<dt>bzip2 version 1.0.2 (or later)<dd>
|
95 |
|
|
Necessary to uncompress GCC <samp><span class="command">tar</span></samp> files when source code is
|
96 |
|
|
obtained via FTP mirror sites.
|
97 |
|
|
|
98 |
|
|
<br><dt>GNU make version 3.80 (or later)<dd>
|
99 |
|
|
You must have GNU make installed to build GCC.
|
100 |
|
|
|
101 |
|
|
<br><dt>GNU tar version 1.14 (or later)<dd>
|
102 |
|
|
Necessary (only on some platforms) to untar the source code. Many
|
103 |
|
|
systems' <samp><span class="command">tar</span></samp> programs will also work, only try GNU
|
104 |
|
|
<samp><span class="command">tar</span></samp> if you have problems.
|
105 |
|
|
|
106 |
|
|
<br><dt>GNU Multiple Precision Library (GMP) version 4.3.2 (or later)<dd>
|
107 |
|
|
Necessary to build GCC. If you do not have it installed in your
|
108 |
|
|
library search path, you will have to configure with the
|
109 |
|
|
<samp><span class="option">--with-gmp</span></samp> configure option. See also <samp><span class="option">--with-gmp-lib</span></samp>
|
110 |
|
|
and <samp><span class="option">--with-gmp-include</span></samp>. Alternatively, if a GMP source
|
111 |
|
|
distribution is found in a subdirectory of your GCC sources named
|
112 |
|
|
<samp><span class="file">gmp</span></samp>, it will be built together with GCC.
|
113 |
|
|
|
114 |
|
|
<br><dt>MPFR Library version 2.4.2 (or later)<dd>
|
115 |
|
|
Necessary to build GCC. It can be downloaded from
|
116 |
|
|
<a href="http://www.mpfr.org/">http://www.mpfr.org/</a>. The <samp><span class="option">--with-mpfr</span></samp> configure
|
117 |
|
|
option should be used if your MPFR Library is not installed in your
|
118 |
|
|
default library search path. See also <samp><span class="option">--with-mpfr-lib</span></samp> and
|
119 |
|
|
<samp><span class="option">--with-mpfr-include</span></samp>. Alternatively, if a MPFR source
|
120 |
|
|
distribution is found in a subdirectory of your GCC sources named
|
121 |
|
|
<samp><span class="file">mpfr</span></samp>, it will be built together with GCC.
|
122 |
|
|
|
123 |
|
|
<br><dt>MPC Library version 0.8.1 (or later)<dd>
|
124 |
|
|
Necessary to build GCC. It can be downloaded from
|
125 |
|
|
<a href="http://www.multiprecision.org/">http://www.multiprecision.org/</a>. The <samp><span class="option">--with-mpc</span></samp>
|
126 |
|
|
configure option should be used if your MPC Library is not installed
|
127 |
|
|
in your default library search path. See also <samp><span class="option">--with-mpc-lib</span></samp>
|
128 |
|
|
and <samp><span class="option">--with-mpc-include</span></samp>. Alternatively, if an MPC source
|
129 |
|
|
distribution is found in a subdirectory of your GCC sources named
|
130 |
|
|
<samp><span class="file">mpc</span></samp>, it will be built together with GCC.
|
131 |
|
|
|
132 |
|
|
<br><dt>Parma Polyhedra Library (PPL) version 0.10<dd>
|
133 |
|
|
Necessary to build GCC with the Graphite loop optimizations.
|
134 |
|
|
It can be downloaded from <a href="http://www.cs.unipr.it/ppl/Download/">http://www.cs.unipr.it/ppl/Download/</a>.
|
135 |
|
|
|
136 |
|
|
<p>The <samp><span class="option">--with-ppl</span></samp> configure option should be used if PPL is not
|
137 |
|
|
installed in your default library search path.
|
138 |
|
|
|
139 |
|
|
<br><dt>CLooG-PPL version 0.15<dd>
|
140 |
|
|
Necessary to build GCC with the Graphite loop optimizations. It can
|
141 |
|
|
be downloaded from <a href="ftp://gcc.gnu.org/pub/gcc/infrastructure/">ftp://gcc.gnu.org/pub/gcc/infrastructure/</a>.
|
142 |
|
|
The code in <samp><span class="file">cloog-ppl-0.15.tar.gz</span></samp> comes from a branch of CLooG
|
143 |
|
|
available from <a href="http://repo.or.cz/w/cloog-ppl.git">http://repo.or.cz/w/cloog-ppl.git</a>. CLooG-PPL
|
144 |
|
|
should be configured with <samp><span class="option">--with-ppl</span></samp>.
|
145 |
|
|
|
146 |
|
|
<p>The <samp><span class="option">--with-cloog</span></samp> configure option should be used if CLooG is
|
147 |
|
|
not installed in your default library search path.
|
148 |
|
|
|
149 |
|
|
<br><dt><samp><span class="command">jar</span></samp>, or InfoZIP (<samp><span class="command">zip</span></samp> and <samp><span class="command">unzip</span></samp>)<dd>
|
150 |
|
|
Necessary to build libgcj, the GCJ runtime.
|
151 |
|
|
|
152 |
|
|
<br><dt>libelf version 0.8.12 (or later)<dd>
|
153 |
|
|
Necessary to build link-time optimization (LTO) support. It can be
|
154 |
|
|
downloaded from <a href="http://www.mr511.de/software/libelf-0.8.12.tar.gz">http://www.mr511.de/software/libelf-0.8.12.tar.gz</a>,
|
155 |
|
|
though it is commonly available in several systems. The versions in
|
156 |
|
|
IRIX 5 and 6 don't work since they lack <samp><span class="file">gelf.h</span></samp>. The version in
|
157 |
|
|
Solaris 2 does work.
|
158 |
|
|
|
159 |
|
|
<p>The <samp><span class="option">--with-libelf</span></samp> configure option should be used if libelf is
|
160 |
|
|
not installed in your default library search patch.
|
161 |
|
|
|
162 |
|
|
</dl>
|
163 |
|
|
|
164 |
|
|
<h3 class="heading"><a name="TOC1"></a>Tools/packages necessary for modifying GCC</h3>
|
165 |
|
|
|
166 |
|
|
<dl>
|
167 |
|
|
<dt>autoconf version 2.64<dt>GNU m4 version 1.4.6 (or later)<dd>
|
168 |
|
|
Necessary when modifying <samp><span class="file">configure.ac</span></samp>, <samp><span class="file">aclocal.m4</span></samp>, etc.
|
169 |
|
|
to regenerate <samp><span class="file">configure</span></samp> and <samp><span class="file">config.in</span></samp> files.
|
170 |
|
|
|
171 |
|
|
<br><dt>automake version 1.11.1<dd>
|
172 |
|
|
Necessary when modifying a <samp><span class="file">Makefile.am</span></samp> file to regenerate its
|
173 |
|
|
associated <samp><span class="file">Makefile.in</span></samp>.
|
174 |
|
|
|
175 |
|
|
<p>Much of GCC does not use automake, so directly edit the <samp><span class="file">Makefile.in</span></samp>
|
176 |
|
|
file. Specifically this applies to the <samp><span class="file">gcc</span></samp>, <samp><span class="file">intl</span></samp>,
|
177 |
|
|
<samp><span class="file">libcpp</span></samp>, <samp><span class="file">libiberty</span></samp>, <samp><span class="file">libobjc</span></samp> directories as well
|
178 |
|
|
as any of their subdirectories.
|
179 |
|
|
|
180 |
|
|
<p>For directories that use automake, GCC requires the latest release in
|
181 |
|
|
the 1.11 series, which is currently 1.11.1. When regenerating a directory
|
182 |
|
|
to a newer version, please update all the directories using an older 1.11
|
183 |
|
|
to the latest released version.
|
184 |
|
|
|
185 |
|
|
<br><dt>gettext version 0.14.5 (or later)<dd>
|
186 |
|
|
Needed to regenerate <samp><span class="file">gcc.pot</span></samp>.
|
187 |
|
|
|
188 |
|
|
<br><dt>gperf version 2.7.2 (or later)<dd>
|
189 |
|
|
Necessary when modifying <samp><span class="command">gperf</span></samp> input files, e.g.
|
190 |
|
|
<samp><span class="file">gcc/cp/cfns.gperf</span></samp> to regenerate its associated header file, e.g.
|
191 |
|
|
<samp><span class="file">gcc/cp/cfns.h</span></samp>.
|
192 |
|
|
|
193 |
|
|
<br><dt>DejaGnu 1.4.4<dt>Expect<dt>Tcl<dd>
|
194 |
|
|
Necessary to run the GCC testsuite; see the section on testing for details.
|
195 |
|
|
|
196 |
|
|
<br><dt>autogen version 5.5.4 (or later) and<dt>guile version 1.4.1 (or later)<dd>
|
197 |
|
|
Necessary to regenerate <samp><span class="file">fixinc/fixincl.x</span></samp> from
|
198 |
|
|
<samp><span class="file">fixinc/inclhack.def</span></samp> and <samp><span class="file">fixinc/*.tpl</span></samp>.
|
199 |
|
|
|
200 |
|
|
<p>Necessary to run ‘<samp><span class="samp">make check</span></samp>’ for <samp><span class="file">fixinc</span></samp>.
|
201 |
|
|
|
202 |
|
|
<p>Necessary to regenerate the top level <samp><span class="file">Makefile.in</span></samp> file from
|
203 |
|
|
<samp><span class="file">Makefile.tpl</span></samp> and <samp><span class="file">Makefile.def</span></samp>.
|
204 |
|
|
|
205 |
|
|
<br><dt>Flex version 2.5.4 (or later)<dd>
|
206 |
|
|
Necessary when modifying <samp><span class="file">*.l</span></samp> files.
|
207 |
|
|
|
208 |
|
|
<p>Necessary to build GCC during development because the generated output
|
209 |
|
|
files are not included in the SVN repository. They are included in
|
210 |
|
|
releases.
|
211 |
|
|
|
212 |
|
|
<br><dt>Texinfo version 4.7 (or later)<dd>
|
213 |
|
|
Necessary for running <samp><span class="command">makeinfo</span></samp> when modifying <samp><span class="file">*.texi</span></samp>
|
214 |
|
|
files to test your changes.
|
215 |
|
|
|
216 |
|
|
<p>Necessary for running <samp><span class="command">make dvi</span></samp> or <samp><span class="command">make pdf</span></samp> to
|
217 |
|
|
create printable documentation in DVI or PDF format. Texinfo version
|
218 |
|
|
4.8 or later is required for <samp><span class="command">make pdf</span></samp>.
|
219 |
|
|
|
220 |
|
|
<p>Necessary to build GCC documentation during development because the
|
221 |
|
|
generated output files are not included in the SVN repository. They are
|
222 |
|
|
included in releases.
|
223 |
|
|
|
224 |
|
|
<br><dt>TeX (any working version)<dd>
|
225 |
|
|
Necessary for running <samp><span class="command">texi2dvi</span></samp> and <samp><span class="command">texi2pdf</span></samp>, which
|
226 |
|
|
are used when running <samp><span class="command">make dvi</span></samp> or <samp><span class="command">make pdf</span></samp> to create
|
227 |
|
|
DVI or PDF files, respectively.
|
228 |
|
|
|
229 |
|
|
<br><dt>SVN (any version)<dt>SSH (any version)<dd>
|
230 |
|
|
Necessary to access the SVN repository. Public releases and weekly
|
231 |
|
|
snapshots of the development sources are also available via FTP.
|
232 |
|
|
|
233 |
|
|
<br><dt>Perl version 5.6.1 (or later)<dd>
|
234 |
|
|
Necessary when regenerating <samp><span class="file">Makefile</span></samp> dependencies in libiberty.
|
235 |
|
|
Necessary when regenerating <samp><span class="file">libiberty/functions.texi</span></samp>.
|
236 |
|
|
Necessary when generating manpages from Texinfo manuals.
|
237 |
|
|
Necessary when targetting Darwin, building libstdc++,
|
238 |
|
|
and not using <samp><span class="option">--disable-symvers</span></samp>.
|
239 |
|
|
Used by various scripts to generate some files included in SVN (mainly
|
240 |
|
|
Unicode-related and rarely changing) from source tables.
|
241 |
|
|
|
242 |
|
|
<br><dt>GNU diffutils version 2.7 (or later)<dd>
|
243 |
|
|
Useful when submitting patches for the GCC source code.
|
244 |
|
|
|
245 |
|
|
<br><dt>patch version 2.5.4 (or later)<dd>
|
246 |
|
|
Necessary when applying patches, created with <samp><span class="command">diff</span></samp>, to one's
|
247 |
|
|
own sources.
|
248 |
|
|
|
249 |
|
|
<br><dt>ecj1<dt>gjavah<dd>
|
250 |
|
|
If you wish to modify <samp><span class="file">.java</span></samp> files in libjava, you will need to
|
251 |
|
|
configure with <samp><span class="option">--enable-java-maintainer-mode</span></samp>, and you will need
|
252 |
|
|
to have executables named <samp><span class="command">ecj1</span></samp> and <samp><span class="command">gjavah</span></samp> in your path.
|
253 |
|
|
The <samp><span class="command">ecj1</span></samp> executable should run the Eclipse Java compiler via
|
254 |
|
|
the GCC-specific entry point. You can download a suitable jar from
|
255 |
|
|
<a href="ftp://sourceware.org/pub/java/">ftp://sourceware.org/pub/java/</a>, or by running the script
|
256 |
|
|
<samp><span class="command">contrib/download_ecj</span></samp>.
|
257 |
|
|
|
258 |
|
|
<br><dt>antlr.jar version 2.7.1 (or later)<dt>antlr binary<dd>
|
259 |
|
|
If you wish to build the <samp><span class="command">gjdoc</span></samp> binary in libjava, you will
|
260 |
|
|
need to have an <samp><span class="file">antlr.jar</span></samp> library available. The library is
|
261 |
|
|
searched in system locations but can be configured with
|
262 |
|
|
<samp><span class="option">--with-antlr-jar=</span></samp> instead. When configuring with
|
263 |
|
|
<samp><span class="option">--enable-java-maintainer-mode</span></samp>, you will need to have one of
|
264 |
|
|
the executables named <samp><span class="command">cantlr</span></samp>, <samp><span class="command">runantlr</span></samp> or
|
265 |
|
|
<samp><span class="command">antlr</span></samp> in your path.
|
266 |
|
|
|
267 |
|
|
</dl>
|
268 |
|
|
|
269 |
|
|
<p><hr />
|
270 |
|
|
<p><a href="./index.html">Return to the GCC Installation page</a>
|
271 |
|
|
|
272 |
|
|
<!-- ***Downloading the source************************************************** -->
|
273 |
|
|
<!-- ***Configuration*********************************************************** -->
|
274 |
|
|
<!-- ***Building**************************************************************** -->
|
275 |
|
|
<!-- ***Testing***************************************************************** -->
|
276 |
|
|
<!-- ***Final install*********************************************************** -->
|
277 |
|
|
<!-- ***Binaries**************************************************************** -->
|
278 |
|
|
<!-- ***Specific**************************************************************** -->
|
279 |
|
|
<!-- ***Old documentation****************************************************** -->
|
280 |
|
|
<!-- ***GFDL******************************************************************** -->
|
281 |
|
|
<!-- *************************************************************************** -->
|
282 |
|
|
<!-- Part 6 The End of the Document -->
|
283 |
|
|
</body></html>
|
284 |
|
|
|