# Prerequisites for GCC

GCC requires that various tools and packages be available for use in the build procedure. Modifying GCC sources requires additional tools described below.

### Tools/packages necessary for building GCC

ISO C90 compiler
  Necessary to bootstrap the GCC package, although versions of GCC prior to 3.4 also allow bootstrapping with a traditional (K&R) C compiler.

  To make 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.

GNAT
  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.
A “working” POSIX compatible shell, or GNU bash
  Necessary when running `configure` because some `/bin/sh` shells have bugs and may crash when configuring the target libraries. In other cases, `/bin/sh` or even some `ksh` have disastrous corner-case performance problems. This can cause target `configure` runs to literally take days to complete in some cases.

  So on some platforms `/bin/ksh` is sufficient, on others it isn't. See the host/target specific instructions for your platform, or use `bash` to be sure. Then set `CONFIG_SHELL` in your environment to your “good” shell prior to running `configure`/`make`.

  `zsh` is not a fully compliant POSIX shell and will not work when configuring GCC.

GNU binutils
  Necessary in some circumstances, optional in others. See the host/target specific instructions for your platform for the exact requirements.
gzip version 1.2.4 (or later) or
bzip2 version 1.0.2 (or later)
  Necessary to uncompress GCC `tar` files when source code is obtained via FTP mirror sites.
GNU make version 3.79.1 (or later)
  You must have GNU make installed to build GCC.
GNU tar version 1.12 (or later)
  Necessary (only on some platforms) to untar the source code. Many systems' `tar` programs will also work, only try GNU `tar` if you have problems.

### Tools/packages necessary for modifying GCC

autoconf versions 2.13 and 2.57
GNU m4 version 1.4 (or later)
  Necessary when modifying `configure.in`, `aclocal.m4`, etc. to regenerate `configure` and `config.in` files. Most directories require autoconf 2.13 (exactly), but `libiberty`, `fastjar`, `libstdc++-v3`, `libjava/libltdl`, and `gcc` require autoconf 2.57 (exactly).
automake versions 1.4-gcj and 1.7.9
  Necessary when modifying a `Makefile.am` file to regenerate its associated `Makefile.in`.

  Much of GCC does not use automake, so directly edit the `Makefile.in` file. Specifically this applies to the `gcc`, `intl`, `libf2c`, `libiberty`, `libobjc` directories as well as any of their subdirectories.

  The `libstdc++-v3`, `libjava/libltdl`, and `fastjar` directories require automake 1.7.9. However, the Java directories, which include `boehm-gc`, `libffi`, `libjava`, and `zlib`, require a modified version of automake 1.4 downloadable from ftp://gcc.gnu.org/pub/java/automake-gcj-1.4.tar.gz.

gettext version 0.12 (or later)
  Needed to regenerate `gcc.pot`.
gperf version 2.7.2 (or later)
  Necessary when modifying `gperf` input files, e.g. `gcc/cp/cfns.gperf` to regenerate its associated header file, e.g. `gcc/cp/cfns.h`.
expect version ???
tcl version ???
dejagnu version ???
  Necessary to run the GCC testsuite.
autogen version 5.5.4 (or later) and
guile version 1.4.1 (or later)
  Necessary to regenerate `fixinc/fixincl.x` from `fixinc/inclhack.def` and `fixinc/*.tpl`.

  Necessary to run the `fixinc` `make check`.

  Necessary to regenerate the top level `Makefile.in` file from `Makefile.tpl` and `Makefile.def`.

GNU Bison version 1.28 (or later)
  Berkeley `yacc` (`byacc`) is also reported to work other than for java.

  Necessary when modifying `*.y` files.

  Necessary to build GCC during development because the generated output files are not included in the CVS repository. They are included in releases.

Flex version 2.5.4 (or later)
  Necessary when modifying `*.l` files.

  Necessary to build GCC during development because the generated output files are not included in the CVS repository. They are included in releases.

Texinfo version 4.2 (or later)
  Necessary for running `makeinfo` when modifying `*.texi` files to test your changes.

  Necessary to build GCC documentation during development because the generated output files are not included in the CVS repository. They are included in releases.

TeX (any working version)
  Necessary for running `texi2dvi`, used when running `make dvi` to create DVI files.
cvs version 1.10 (or later)
ssh (any version)
  Necessary to access the CVS repository. Public releases and weekly snapshots of the development sources are also available via FTP.
perl version 5.6.1 (or later)
  Necessary when regenerating `Makefile` dependencies in libiberty. Necessary when regenerating `libiberty/functions.texi`. Necessary when generating manpages from Texinfo manuals. Used by various scripts to generate some files included in CVS (mainly Unicode-related and rarely changing) from source tables.
GNU diffutils version 2.7 (or later)
  Necessary when creating changes to GCC source code to submit for review.
patch version 2.5.4 (or later)
  Necessary when applying patches, created with `diff`, to one's own sources.

Return to the GCC Installation page