# 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