| <html lang="en"> |
| <head> |
| <title>Prerequisites for GCC</title> |
| <meta http-equiv="Content-Type" content="text/html"> |
| <meta name="description" content="Prerequisites for GCC"> |
| <meta name="generator" content="makeinfo 4.11"> |
| <link title="Top" rel="top" href="#Top"> |
| <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> |
| <!-- |
| Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, |
| 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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.2 or |
| any later version published by the Free Software Foundation; with no |
| Invariant Sections, 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.--> |
| <meta http-equiv="Content-Style-Type" content="text/css"> |
| <style type="text/css"><!-- |
| pre.display { font-family:inherit } |
| pre.format { font-family:inherit } |
| pre.smalldisplay { font-family:inherit; font-size:smaller } |
| pre.smallformat { font-family:inherit; font-size:smaller } |
| pre.smallexample { font-size:smaller } |
| pre.smalllisp { font-size:smaller } |
| span.sc { font-variant:small-caps } |
| span.roman { font-family:serif; font-weight:normal; } |
| span.sansserif { font-family:sans-serif; font-weight:normal; } |
| --></style> |
| </head> |
| <body> |
| <h1 class="settitle">Prerequisites for GCC</h1> |
| <a name="index-Prerequisites-1"></a> |
| GCC requires that various tools and packages be available for use in the |
| build procedure. Modifying GCC sources requires additional tools |
| described below. |
| |
| <h3 class="heading"><a name="TOC0"></a>Tools/packages necessary for building GCC</h3> |
| |
| <dl> |
| <dt>ISO C90 compiler<dd>Necessary to bootstrap GCC, although versions of GCC prior |
| to 3.4 also allow bootstrapping with a traditional (K&R) C compiler. |
| |
| <p>To build all languages in a cross-compiler or other configuration where |
| 3-stage bootstrap is not performed, you need to start with an existing |
| GCC binary (version 2.95 or later) because source code for language |
| frontends other than C might use GCC extensions. |
| |
| <br><dt>GNAT<dd> |
| In order to build the Ada compiler (GNAT) you must already have GNAT |
| installed because portions of the Ada frontend are written in Ada (with |
| GNAT extensions.) Refer to the Ada installation instructions for more |
| specific information. |
| |
| <br><dt>A “working” POSIX compatible shell, or GNU bash<dd> |
| Necessary when running <samp><span class="command">configure</span></samp> because some |
| <samp><span class="command">/bin/sh</span></samp> shells have bugs and may crash when configuring the |
| target libraries. In other cases, <samp><span class="command">/bin/sh</span></samp> or <samp><span class="command">ksh</span></samp> |
| have disastrous corner-case performance problems. This |
| can cause target <samp><span class="command">configure</span></samp> runs to literally take days to |
| complete in some cases. |
| |
| <p>So on some platforms <samp><span class="command">/bin/ksh</span></samp> is sufficient, on others it |
| isn't. See the host/target specific instructions for your platform, or |
| use <samp><span class="command">bash</span></samp> to be sure. Then set <samp><span class="env">CONFIG_SHELL</span></samp> in your |
| environment to your “good” shell prior to running |
| <samp><span class="command">configure</span></samp>/<samp><span class="command">make</span></samp>. |
| |
| <p><samp><span class="command">zsh</span></samp> is not a fully compliant POSIX shell and will not |
| work when configuring GCC. |
| |
| <br><dt>GNU binutils<dd> |
| Necessary in some circumstances, optional in others. See the |
| host/target specific instructions for your platform for the exact |
| requirements. |
| |
| <br><dt>gzip version 1.2.4 (or later) or<dt>bzip2 version 1.0.2 (or later)<dd> |
| Necessary to uncompress GCC <samp><span class="command">tar</span></samp> files when source code is |
| obtained via FTP mirror sites. |
| |
| <br><dt>GNU make version 3.79.1 (or later)<dd> |
| You must have GNU make installed to build GCC. |
| |
| <br><dt>GNU tar version 1.14 (or later)<dd> |
| Necessary (only on some platforms) to untar the source code. Many |
| systems' <samp><span class="command">tar</span></samp> programs will also work, only try GNU |
| <samp><span class="command">tar</span></samp> if you have problems. |
| |
| <br><dt>GNU Multiple Precision Library (GMP) version 4.1 (or later)<dd> |
| Necessary to build GCC. If you do not have it installed in your |
| library search path, you will have to configure with the |
| <samp><span class="option">--with-gmp</span></samp> configure option. See also |
| <samp><span class="option">--with-gmp-lib</span></samp> and <samp><span class="option">--with-gmp-include</span></samp>. |
| |
| <br><dt>MPFR Library version 2.3.0 (or later)<dd> |
| Necessary to build GCC. It can be downloaded from |
| <a href="http://www.mpfr.org/">http://www.mpfr.org/</a>. The version of MPFR that is bundled with |
| GMP 4.1.x contains numerous bugs. Although GCC may appear to function |
| with the buggy versions of MPFR, there are a few bugs that will not be |
| fixed when using this version. It is strongly recommended to upgrade |
| to the recommended version of MPFR. |
| |
| <p>The <samp><span class="option">--with-mpfr</span></samp> configure option should be used if your MPFR |
| Library is not installed in your default library search path. See |
| also <samp><span class="option">--with-mpfr-lib</span></samp> and <samp><span class="option">--with-mpfr-include</span></samp>. |
| |
| <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> |
| Necessary to build libgcj, the GCJ runtime. |
| |
| </dl> |
| |
| <h3 class="heading"><a name="TOC1"></a>Tools/packages necessary for modifying GCC</h3> |
| |
| <dl> |
| <dt>autoconf version 2.59<dt>GNU m4 version 1.4 (or later)<dd> |
| Necessary when modifying <samp><span class="file">configure.ac</span></samp>, <samp><span class="file">aclocal.m4</span></samp>, etc. |
| to regenerate <samp><span class="file">configure</span></samp> and <samp><span class="file">config.in</span></samp> files. |
| |
| <br><dt>automake version 1.9.6<dd> |
| Necessary when modifying a <samp><span class="file">Makefile.am</span></samp> file to regenerate its |
| associated <samp><span class="file">Makefile.in</span></samp>. |
| |
| <p>Much of GCC does not use automake, so directly edit the <samp><span class="file">Makefile.in</span></samp> |
| file. Specifically this applies to the <samp><span class="file">gcc</span></samp>, <samp><span class="file">intl</span></samp>, |
| <samp><span class="file">libcpp</span></samp>, <samp><span class="file">libiberty</span></samp>, <samp><span class="file">libobjc</span></samp> directories as well |
| as any of their subdirectories. |
| |
| <p>For directories that use automake, GCC requires the latest release in |
| the 1.9.x series, which is currently 1.9.6. When regenerating a directory |
| to a newer version, please update all the directories using an older 1.9.x |
| to the latest released version. |
| |
| <br><dt>gettext version 0.14.5 (or later)<dd> |
| Needed to regenerate <samp><span class="file">gcc.pot</span></samp>. |
| |
| <br><dt>gperf version 2.7.2 (or later)<dd> |
| Necessary when modifying <samp><span class="command">gperf</span></samp> input files, e.g. |
| <samp><span class="file">gcc/cp/cfns.gperf</span></samp> to regenerate its associated header file, e.g. |
| <samp><span class="file">gcc/cp/cfns.h</span></samp>. |
| |
| <br><dt>DejaGnu 1.4.4<dt>Expect<dt>Tcl<dd> |
| Necessary to run the GCC testsuite; see the section on testing for details. |
| |
| <br><dt>autogen version 5.5.4 (or later) and<dt>guile version 1.4.1 (or later)<dd> |
| Necessary to regenerate <samp><span class="file">fixinc/fixincl.x</span></samp> from |
| <samp><span class="file">fixinc/inclhack.def</span></samp> and <samp><span class="file">fixinc/*.tpl</span></samp>. |
| |
| <p>Necessary to run ‘<samp><span class="samp">make check</span></samp>’ for <samp><span class="file">fixinc</span></samp>. |
| |
| <p>Necessary to regenerate the top level <samp><span class="file">Makefile.in</span></samp> file from |
| <samp><span class="file">Makefile.tpl</span></samp> and <samp><span class="file">Makefile.def</span></samp>. |
| |
| <br><dt>GNU Bison version 1.28 (or later)<dd> |
| Necessary when modifying <samp><span class="file">*.y</span></samp> files. Necessary to build the |
| <code>treelang</code> front end (which is not enabled by default) from a |
| checkout of the SVN repository; the generated files are not in the |
| repository. They are included in releases. |
| |
| <p>Berkeley <samp><span class="command">yacc</span></samp> (<samp><span class="command">byacc</span></samp>) has been reported to work |
| as well. |
| |
| <br><dt>Flex version 2.5.4 (or later)<dd> |
| Necessary when modifying <samp><span class="file">*.l</span></samp> files. |
| |
| <p>Necessary to build GCC during development because the generated output |
| files are not included in the SVN repository. They are included in |
| releases. |
| |
| <br><dt>Texinfo version 4.4 (or later)<dd> |
| Necessary for running <samp><span class="command">makeinfo</span></samp> when modifying <samp><span class="file">*.texi</span></samp> |
| files to test your changes. |
| |
| <p>Necessary for running <samp><span class="command">make dvi</span></samp> or <samp><span class="command">make pdf</span></samp> to |
| create printable documentation in DVI or PDF format. Texinfo version |
| 4.8 or later is required for <samp><span class="command">make pdf</span></samp>. |
| |
| <p>Necessary to build GCC documentation during development because the |
| generated output files are not included in the SVN repository. They are |
| included in releases. |
| |
| <br><dt>TeX (any working version)<dd> |
| Necessary for running <samp><span class="command">texi2dvi</span></samp> and <samp><span class="command">texi2pdf</span></samp>, which |
| are used when running <samp><span class="command">make dvi</span></samp> or <samp><span class="command">make pdf</span></samp> to create |
| DVI or PDF files, respectively. |
| |
| <br><dt>SVN (any version)<dt>SSH (any version)<dd> |
| Necessary to access the SVN repository. Public releases and weekly |
| snapshots of the development sources are also available via FTP. |
| |
| <br><dt>Perl version 5.6.1 (or later)<dd> |
| Necessary when regenerating <samp><span class="file">Makefile</span></samp> dependencies in libiberty. |
| Necessary when regenerating <samp><span class="file">libiberty/functions.texi</span></samp>. |
| Necessary when generating manpages from Texinfo manuals. |
| Necessary when targetting Darwin, building libstdc++, |
| and not using <samp><span class="option">--disable-symvers</span></samp>. |
| Used by various scripts to generate some files included in SVN (mainly |
| Unicode-related and rarely changing) from source tables. |
| |
| <br><dt>GNU diffutils version 2.7 (or later)<dd> |
| Useful when submitting patches for the GCC source code. |
| |
| <br><dt>patch version 2.5.4 (or later)<dd> |
| Necessary when applying patches, created with <samp><span class="command">diff</span></samp>, to one's |
| own sources. |
| |
| <br><dt>ecj1<dt>gjavah<dd> |
| If you wish to modify <samp><span class="file">.java</span></samp> files in libjava, you will need to |
| configure with <samp><span class="option">--enable-java-maintainer-mode</span></samp>, and you will need |
| to have executables named <samp><span class="command">ecj1</span></samp> and <samp><span class="command">gjavah</span></samp> in your path. |
| The <samp><span class="command">ecj1</span></samp> executable should run the Eclipse Java compiler via |
| the GCC-specific entry point. You can download a suitable jar from |
| <a href="ftp://sourceware.org/pub/java/">ftp://sourceware.org/pub/java/</a>, or by running the script |
| <samp><span class="command">contrib/download_ecj</span></samp>. |
| |
| </dl> |
| |
| <p><hr /> |
| <p><a href="./index.html">Return to the GCC Installation page</a> |
| |
| <!-- ***Downloading the source************************************************** --> |
| <!-- ***Configuration*********************************************************** --> |
| <!-- ***Building**************************************************************** --> |
| <!-- ***Testing***************************************************************** --> |
| <!-- ***Final install*********************************************************** --> |
| <!-- ***Binaries**************************************************************** --> |
| <!-- ***Specific**************************************************************** --> |
| <!-- ***Old documentation****************************************************** --> |
| <!-- ***GFDL******************************************************************** --> |
| <!-- *************************************************************************** --> |
| <!-- Part 6 The End of the Document --> |
| </body></html> |
| |