1<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<!-- 10Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 111998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 122009, 2010, 2011 Free Software Foundation, Inc. 13 14 Permission is granted to copy, distribute and/or modify this document 15under the terms of the GNU Free Documentation License, Version 1.2 or 16any later version published by the Free Software Foundation; with no 17Invariant Sections, the Front-Cover texts being (a) (see below), and 18with the Back-Cover Texts being (b) (see below). A copy of the 19license 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> 46GCC requires that various tools and packages be available for use in the 47build procedure. Modifying GCC sources requires additional tools 48described 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 54to 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 573-stage bootstrap is not performed, you need to start with an existing 58GCC binary (version 2.95 or later) because source code for language 59frontends other than C might use GCC extensions. 60 61 <br><dt>GNAT<dd> 62In order to build the Ada compiler (GNAT) you must already have GNAT 63installed because portions of the Ada frontend are written in Ada (with 64GNAT extensions.) Refer to the Ada installation instructions for more 65specific information. 66 67 <br><dt>A “working” POSIX compatible shell, or GNU bash<dd> 68Necessary 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 70target libraries. In other cases, <samp><span class="command">/bin/sh</span></samp> or <samp><span class="command">ksh</span></samp> 71have disastrous corner-case performance problems. This 72can cause target <samp><span class="command">configure</span></samp> runs to literally take days to 73complete in some cases. 74 75 <p>So on some platforms <samp><span class="command">/bin/ksh</span></samp> is sufficient, on others it 76isn't. See the host/target specific instructions for your platform, or 77use <samp><span class="command">bash</span></samp> to be sure. Then set <samp><span class="env">CONFIG_SHELL</span></samp> in your 78environment 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 82work when configuring GCC. 83 84 <br><dt>A POSIX or SVR4 awk<dd> 85Necessary for creating some of the generated source files for GCC. 86If in doubt, use a recent GNU awk version, as some of the older ones 87are broken. GNU awk version 3.1.5 is known to work. 88 89 <br><dt>GNU binutils<dd> 90Necessary in some circumstances, optional in others. See the 91host/target specific instructions for your platform for the exact 92requirements. 93 94 <br><dt>gzip version 1.2.4 (or later) or<dt>bzip2 version 1.0.2 (or later)<dd> 95Necessary to uncompress GCC <samp><span class="command">tar</span></samp> files when source code is 96obtained via FTP mirror sites. 97 98 <br><dt>GNU make version 3.80 (or later)<dd> 99You must have GNU make installed to build GCC. 100 101 <br><dt>GNU tar version 1.14 (or later)<dd> 102Necessary (only on some platforms) to untar the source code. Many 103systems' <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> 107Necessary to build GCC. If you do not have it installed in your 108library 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> 110and <samp><span class="option">--with-gmp-include</span></samp>. Alternatively, if a GMP source 111distribution 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> 115Necessary 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 117option should be used if your MPFR Library is not installed in your 118default 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 120distribution 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> 124Necessary 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> 126configure option should be used if your MPC Library is not installed 127in your default library search path. See also <samp><span class="option">--with-mpc-lib</span></samp> 128and <samp><span class="option">--with-mpc-include</span></samp>. Alternatively, if an MPC source 129distribution 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> 133Necessary to build GCC with the Graphite loop optimizations. 134It 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 137installed in your default library search path. 138 139 <br><dt>CLooG-PPL version 0.15<dd> 140Necessary to build GCC with the Graphite loop optimizations. It can 141be downloaded from <a href="ftp://gcc.gnu.org/pub/gcc/infrastructure/">ftp://gcc.gnu.org/pub/gcc/infrastructure/</a>. 142The code in <samp><span class="file">cloog-ppl-0.15.tar.gz</span></samp> comes from a branch of CLooG 143available from <a href="http://repo.or.cz/w/cloog-ppl.git">http://repo.or.cz/w/cloog-ppl.git</a>. CLooG-PPL 144should 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 147not 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> 150Necessary to build libgcj, the GCJ runtime. 151 152 <br><dt>libelf version 0.8.12 (or later)<dd> 153Necessary to build link-time optimization (LTO) support. It can be 154downloaded 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>, 155though it is commonly available in several systems. The versions in 156IRIX 5 and 6 don't work since they lack <samp><span class="file">gelf.h</span></samp>. The version in 157Solaris 2 does work. 158 159 <p>The <samp><span class="option">--with-libelf</span></samp> configure option should be used if libelf is 160not 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> 168Necessary when modifying <samp><span class="file">configure.ac</span></samp>, <samp><span class="file">aclocal.m4</span></samp>, etc. 169to 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> 172Necessary when modifying a <samp><span class="file">Makefile.am</span></samp> file to regenerate its 173associated <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> 176file. 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 178as any of their subdirectories. 179 180 <p>For directories that use automake, GCC requires the latest release in 181the 1.11 series, which is currently 1.11.1. When regenerating a directory 182to a newer version, please update all the directories using an older 1.11 183to the latest released version. 184 185 <br><dt>gettext version 0.14.5 (or later)<dd> 186Needed to regenerate <samp><span class="file">gcc.pot</span></samp>. 187 188 <br><dt>gperf version 2.7.2 (or later)<dd> 189Necessary 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> 194Necessary 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> 197Necessary 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> 206Necessary when modifying <samp><span class="file">*.l</span></samp> files. 207 208 <p>Necessary to build GCC during development because the generated output 209files are not included in the SVN repository. They are included in 210releases. 211 212 <br><dt>Texinfo version 4.7 (or later)<dd> 213Necessary for running <samp><span class="command">makeinfo</span></samp> when modifying <samp><span class="file">*.texi</span></samp> 214files 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 217create printable documentation in DVI or PDF format. Texinfo version 2184.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 221generated output files are not included in the SVN repository. They are 222included in releases. 223 224 <br><dt>TeX (any working version)<dd> 225Necessary for running <samp><span class="command">texi2dvi</span></samp> and <samp><span class="command">texi2pdf</span></samp>, which 226are used when running <samp><span class="command">make dvi</span></samp> or <samp><span class="command">make pdf</span></samp> to create 227DVI or PDF files, respectively. 228 229 <br><dt>SVN (any version)<dt>SSH (any version)<dd> 230Necessary to access the SVN repository. Public releases and weekly 231snapshots of the development sources are also available via FTP. 232 233 <br><dt>Perl version 5.6.1 (or later)<dd> 234Necessary when regenerating <samp><span class="file">Makefile</span></samp> dependencies in libiberty. 235Necessary when regenerating <samp><span class="file">libiberty/functions.texi</span></samp>. 236Necessary when generating manpages from Texinfo manuals. 237Necessary when targetting Darwin, building libstdc++, 238and not using <samp><span class="option">--disable-symvers</span></samp>. 239Used by various scripts to generate some files included in SVN (mainly 240Unicode-related and rarely changing) from source tables. 241 242 <br><dt>GNU diffutils version 2.7 (or later)<dd> 243Useful when submitting patches for the GCC source code. 244 245 <br><dt>patch version 2.5.4 (or later)<dd> 246Necessary when applying patches, created with <samp><span class="command">diff</span></samp>, to one's 247own sources. 248 249 <br><dt>ecj1<dt>gjavah<dd> 250If you wish to modify <samp><span class="file">.java</span></samp> files in libjava, you will need to 251configure with <samp><span class="option">--enable-java-maintainer-mode</span></samp>, and you will need 252to have executables named <samp><span class="command">ecj1</span></samp> and <samp><span class="command">gjavah</span></samp> in your path. 253The <samp><span class="command">ecj1</span></samp> executable should run the Eclipse Java compiler via 254the 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> 259If you wish to build the <samp><span class="command">gjdoc</span></samp> binary in libjava, you will 260need to have an <samp><span class="file">antlr.jar</span></samp> library available. The library is 261searched 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 264the 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 285