@ifinfo
@insertcopying
@end ifinfo
-@dircategory Programming
+@dircategory Software development
@direntry
* gccinstall: (gccinstall). Installing the GNU Compiler Collection.
@end direntry
@heading Tools/packages necessary for building GCC
@table @asis
@item ISO C90 compiler
-Necessary to bootstrap the GCC package, although versions of GCC prior
+Necessary to bootstrap GCC, 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
+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.
Necessary when running @command{configure} because some
@command{/bin/sh} shells have bugs and may crash when configuring the
-target libraries. In other cases, @command{/bin/sh} or even some
-@command{ksh} have disastrous corner-case performance problems. This
+target libraries. In other cases, @command{/bin/sh} or @command{ksh}
+have disastrous corner-case performance problems. This
can cause target @command{configure} runs to literally take days to
complete in some cases.
You must have GNU make installed to build GCC@.
-@item GNU tar version 1.12 (or later)
+@item GNU tar version 1.14 (or later)
Necessary (only on some platforms) to untar the source code. Many
systems' @command{tar} programs will also work, only try GNU
@command{tar} if you have problems.
-@item GNU Multiple Precision Library (GMP) version 4.0 (or later)
+@item GNU Multiple Precision Library (GMP) version 4.1 (or later)
-Necessary to build the Fortran frontend. If you don't have it
+Necessary to build the Fortran frontend. If you do not have it
installed in your library search path, you will have to configure with
the @option{--with-gmp} or @option{--with-gmp-dir} configure option.
-@item MPFR Library
+@item MPFR Library version 2.2 (or later)
Necessary to build the Fortran frontend. It can be downloaded from
-@uref{http://www.mpfr.org/}. It is also included in the current GMP
-release (4.1.3) when configured with @option{--enable-mpfr}.
+@uref{http://www.mpfr.org/}. The version of MPFR that is bundled with
+GMP 4.1.x contains numerous bugs. Although GNU Fortran will appear
+to function with the buggy versions of MPFR, there are a few GNU Fortran
+bugs that will not be fixed when using this version. It is strongly
+recommended to upgrade to at least MPFR version 2.2.
The @option{--with-mpfr} or @option{--with-mpfr-dir} configure option should
be used if your MPFR Library is not installed in your library search path.
+@item @command{jar}, or InfoZIP (@command{zip} and @command{unzip})
+
+Necessary to build libgcj, the GCJ runtime.
+
@end table
@file{gcc/cp/cfns.gperf} to regenerate its associated header file, e.g.@:
@file{gcc/cp/cfns.h}.
-@item expect version ???
-@itemx tcl version ???
-@itemx dejagnu version 1.4.4 (or later)
+@item DejaGnu 1.4.4
+@itemx Expect
+@itemx Tcl
-Necessary to run the GCC testsuite.
+Necessary to run the GCC testsuite; see the section on testing for details.
@item autogen version 5.5.4 (or later) and
@itemx guile version 1.4.1 (or later)
Necessary to regenerate @file{fixinc/fixincl.x} from
@file{fixinc/inclhack.def} and @file{fixinc/*.tpl}.
-Necessary to run the @file{fixinc} @command{make check}.
+Necessary to run @samp{make check} for @file{fixinc}.
Necessary to regenerate the top level @file{Makefile.in} file from
@file{Makefile.tpl} and @file{Makefile.def}.
@item GNU Bison version 1.28 (or later)
Berkeley @command{yacc} (@command{byacc}) is also reported to work other
-than for java.
+than for GCJ.
Necessary when modifying @file{*.y} files.
Necessary to build GCC during development because the generated output
-files are not included in the CVS repository. They are included in
+files are not included in the SVN repository. They are included in
releases.
@item Flex version 2.5.4 (or later)
Necessary when modifying @file{*.l} files.
Necessary to build GCC during development because the generated output
-files are not included in the CVS repository. They are included in
+files are not included in the SVN repository. They are included in
releases.
@item Texinfo version 4.4 (or later)
Necessary for running @command{makeinfo} when modifying @file{*.texi}
files to test your changes.
+Necessary for running @command{make dvi} or @command{make pdf} to
+create printable documentation in DVI or PDF format. Texinfo version
+4.8 or later is required for @command{make pdf}.
+
Necessary to build GCC documentation during development because the
-generated output files are not included in the CVS repository. They are
+generated output files are not included in the SVN repository. They are
included in releases.
@item @TeX{} (any working version)
-Necessary for running @command{texi2dvi}, used when running
-@command{make dvi} to create DVI files.
+Necessary for running @command{texi2dvi} and @command{texi2pdf}, which
+are used when running @command{make dvi} or @command{make pdf} to create
+DVI or PDF files, respectively.
-@item cvs version 1.10 (or later)
-@itemx ssh (any version)
+@item SVN (any version)
+@itemx SSH (any version)
-Necessary to access the CVS repository. Public releases and weekly
+Necessary to access the SVN repository. Public releases and weekly
snapshots of the development sources are also available via FTP@.
-@item perl version 5.6.1 (or later)
+@item Perl version 5.6.1 (or later)
Necessary when regenerating @file{Makefile} dependencies in libiberty.
Necessary when regenerating @file{libiberty/functions.texi}.
Necessary when generating manpages from Texinfo manuals.
Necessary when targetting Darwin, building libstdc++,
and not using @option{--disable-symvers}.
-Used by various scripts to generate some files included in CVS (mainly
+Used by various scripts to generate some files included in SVN (mainly
Unicode-related and rarely changing) from source tables.
@item GNU diffutils version 2.7 (or later)
-Necessary when creating changes to GCC source code to submit for review.
+Useful when submitting patches for the GCC source code.
@item patch version 2.5.4 (or later)
@cindex Downloading GCC
@cindex Downloading the Source
-GCC is distributed via @uref{http://gcc.gnu.org/cvs.html,,CVS} and FTP
+GCC is distributed via @uref{http://gcc.gnu.org/svn.html,,SVN} and FTP
tarballs compressed with @command{gzip} or
@command{bzip2}. It is possible to download a full distribution or specific
components.
We use @var{srcdir} to refer to the toplevel source directory for
GCC; we use @var{objdir} to refer to the toplevel build/object directory.
-If you obtained the sources via CVS, @var{srcdir} must refer to the top
+If you obtained the sources via SVN, @var{srcdir} must refer to the top
@file{gcc} directory, the one where the @file{MAINTAINERS} can be found,
and not its @file{gcc} subdirectory, otherwise the build will fail.
@option{--with-cpu}, which switches will be accepted and acceptable values
of the arguments depend on the target.
+@item --with-mode=@var{mode}
+Specify if the compiler should default to @option{-marm} or @option{-mthumb}.
+This option is only supported on ARM targets.
+
@item --with-divide=@var{type}
Specify how the compiler should generate code for checking for
division by zero. This option is only supported on the MIPS target.
this. Note that you need a recent version of the @code{gettext} tools
to do so.
+@item --disable-bootstrap
+For a native build, the default configuration is to perform
+a 3-stage bootstrap of the compiler when @samp{make} is invoked,
+testing that GCC can compile itself correctly. If you want to disable
+this process, you can configure with @option{--disable-bootstrap}.
+
+@item --enable-bootstrap
+In special cases, you may want to perform a 3-stage build
+even if the target and host triplets are different.
+This could happen when the host can run code compiled for
+the target (e.g.@: host is i686-linux, target is i486-linux).
+Starting from GCC 4.2, to do this you have to configure explicitly
+with @option{--enable-bootstrap}.
+
@item --enable-generated-files-in-srcdir
-Neither the .c and .h files that are generated from bison and flex nor the
+Neither the .c and .h files that are generated from Bison and flex nor the
info manuals and man pages that are built from the .texi files are present
-in the CVS development tree. When building GCC from that development tree,
-or from a snapshot which are created from CVS, then those generated files
-are placed in your build directory, which allows for the source to be in a
-readonly directory.
+in the SVN development tree. When building GCC from that development tree,
+or from one of our snapshots, those generated files are placed in your
+build directory, which allows for the source to be in a readonly
+directory.
If you configure with @option{--enable-generated-files-in-srcdir} then those
generated files will go into the source directory. This is mainly intended
for generating release or prerelease tarballs of the GCC sources, since it
-is not a requirement that the users of source releases to have flex, bison, or
-makeinfo.
+is not a requirement that the users of source releases to have flex, Bison,
+or makeinfo.
@item --enable-version-specific-runtime-libs
Specify
Specify that the run-time libraries for stack smashing protection
should not be built.
-@item --disable-libgcc-math
-Specify that the run-time libraries for arch and gcc specific math
-functions should not be built.
-
@item --disable-libgomp
Specify that the run-time libraries used by GOMP should not be built.
generated code, but adds error checking within the compiler. This will
slow down the compiler and may only work properly if you are building
the compiler with GCC@. This is @samp{yes} by default when building
-from CVS or snapshots, but @samp{release} for releases. More control
+from SVN or snapshots, but @samp{release} for releases. More control
over the checks may be had by specifying @var{list}. The categories of
checks available are @samp{yes} (most common checks
@samp{assert,misc,tree,gc,rtlflag,runtime}), @samp{no} (no checks at
systems. Other systems may also support it, but require the user to
specifically enable it.
+@item --with-long-double-128
+Specify if @code{long double} type should be 128-bit by default on selected
+GNU/Linux architectures. If using @code{--without-long-double-128},
+@code{long double} will be by default 64-bit, the same as @code{double} type.
+When neither of these configure options are used, the default will be
+128-bit @code{long double} when built against GNU C Library 2.4 and later,
+64-bit @code{long double} otherwise.
+
@end table
@subheading Cross-Compiler-Specific Options
Tells GCC not use any target headers from a libc when building a cross
compiler. When crossing to GNU/Linux, you need the headers so GCC
can build the exception handling for libgcc.
-See @uref{http://www.objsw.com/CrossGCC/,,CrossGCC} for more information
-on this option.
@item --with-libs
@itemx --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}''
Search for libiconv in @file{DIR/include} and @file{DIR/lib}.
@item --enable-sjlj-exceptions
-Force use of @code{builtin_setjmp} for exceptions. @samp{configure}
-ordinarily picks the correct value based on the platform. Only use
-this option if you are sure you need a different setting.
+Force use of the @code{setjmp}/@code{longjmp}-based scheme for exceptions.
+@samp{configure} ordinarily picks the correct value based on the platform.
+Only use this option if you are sure you need a different setting.
@item --with-system-zlib
Use installed @samp{zlib} rather than that included with GCC@.
The solution is not to use such a directory for building GCC@.
-When building from CVS or snapshots, or if you modify parser sources,
-you need the Bison parser generator installed. Any version 1.25 or
-later should work; older versions may also work. If you do not modify
+When building from SVN or snapshots, or if you modify parser sources,
+you need the Bison parser generator installed. If you do not modify
parser sources, releases contain the Bison-generated files and you do
not need Bison installed to build them.
-When building from CVS or snapshots, or if you modify Texinfo
+When building from SVN or snapshots, or if you modify Texinfo
documentation, you need version 4.4 or later of Texinfo installed if you
want Info documentation to be regenerated. Releases contain Info
documentation pre-built for the unmodified documentation in the release.
@section Building a native compiler
-For a native build, the command @samp{make} will trigger a 3-stage
-bootstrap of the compiler. This will build the entire GCC system
-and ensure that it compiles itself correctly, by doing the
-following steps:
+For a native build, the default configuration is to perform
+a 3-stage bootstrap of the compiler when @samp{make} is invoked.
+This will build the entire GCC system and ensure that it compiles
+itself correctly. It can be disabled with the @option{--disable-bootstrap}
+parameter to @samp{configure}, but bootstrapping is suggested because
+the compiler will be tested more completely and could also have
+better performance.
+
+The bootstrapping process will complete the following steps:
@itemize @bullet
@item
-Build tools necessary to build the compiler such as texinfo, bison,
-gperf.
+Build tools necessary to build the compiler.
@item
Perform a 3-stage bootstrap of the compiler. This includes building
@section Building a cross compiler
-We recommend reading the
-@uref{http://www.objsw.com/CrossGCC/,,crossgcc FAQ}
-for information about building cross compilers.
-
When building a cross compiler, it is not generally possible to do a
3-stage bootstrap of the compiler. This makes for an interesting problem
as parts of GCC can only be built with GCC@.
@itemize @bullet
@item
-Build host tools necessary to build the compiler such as texinfo, bison,
-gperf.
+Build host tools necessary to build the compiler.
@item
Build target tools for use by the compiler such as binutils (bfd,
separately.
Second, you must have the testing tools installed. This includes
-@uref{http://www.gnu.org/software/dejagnu/,,DejaGnu} 1.4.4 and later,
-Tcl, and Expect; the DejaGnu site has links to these.
+@uref{http://www.gnu.org/software/dejagnu/,,DejaGnu}, Tcl, and Expect;
+the DejaGnu site has links to these.
If the directories where @command{runtest} and @command{expect} were
installed are not in the @env{PATH}, you may need to set the following
dvi}. You will need to have @command{texi2dvi} (version at least 4.4)
and @TeX{} installed. This creates a number of @file{.dvi} files in
subdirectories of @file{@var{objdir}}; these may be converted for
-printing with programs such as @command{dvips}. You can also
+printing with programs such as @command{dvips}. Alternately, by using
+@samp{make pdf} in place of @samp{make dvi}, you can create documentation
+in the form of @file{.pdf} files; this requires @command{texi2pdf}, which
+is included with Texinfo version 4.8 and later. You can also
@uref{http://www.gnu.org/order/order.html,,buy printed manuals from the
Free Software Foundation}, though such manuals may not be for the most
recent version of GCC@.
@item
The @uref{http://gcc.gnu.org/wiki/GFortranBinaries,,GFortran Wiki} has
-links to gfortran binaries for several platforms.
+links to GNU Fortran binaries for several platforms.
@end itemize
In addition to those specific offerings, you can get a binary
Please read this document carefully @emph{before} installing the
GNU Compiler Collection on your machine.
+Note that this list of install notes is @emph{not} a list of supported
+hosts or targets. Not all supported hosts and targets are listed
+here, only the ones that require host-specific or target-specific
+information are.
+
@ifhtml
@itemize
@item
only available for the 32-bit PA-RISC runtime. The libffi and libjava
haven't been ported to HP-UX and don't build.
+Starting with GCC 3.4 an ISO C compiler is required to bootstrap. The
+bundled compiler supports only traditional C; you will need either HP's
+unbundled compiler, or a binary distribution of GCC@.
+
It is possible to build GCC 3.3 starting with the bundled HP compiler,
but the process requires several steps. GCC 3.3 can then be used to
build later versions. The fastjar program contains ISO C code and
@option{--enable-languages="c,c++,f77,objc"} option in your configure
command.
-Starting with GCC 3.4 an ISO C compiler is required to bootstrap. The
-bundled compiler supports only traditional C; you will need either HP's
-unbundled compiler, or a binary distribution of GCC@.
-
There are several possible approaches to building the distribution.
Binutils can be built first using the HP tools. Then, the GCC
distribution can be built. The second approach is to build GCC
instructions}, where we strongly recommend specifying an absolute path
to invoke @var{srcdir}/configure.
+Because GCC on AIX is built as a 32-bit executable by default,
+(although it can generate 64-bit programs) the GMP and MPFR libraries
+required by gfortran must be 32-bit libraries. Building GMP and MPFR
+as static archive libraries works better than shared libraries.
+
Errors involving @code{alloca} when building GCC generally are due
to an incorrect definition of @code{CC} in the Makefile or mixing files
compiled with the native C compiler and GCC@. During the stage1 phase of
anything but a MIPS. It does work to cross compile for a MIPS
if you use the GNU assembler and linker.
+The linker from GNU binutils versions prior to 2.17 has a bug which
+causes the runtime linker stubs in @file{libgcj.so} to be incorrectly
+generated. If you want to use libgcj, either use binutils 2.17 or
+later to build it or export @samp{LD_BIND_NOW=1} in your runtime environment.
+
@html
<hr />
@end html
its maximum of 262144 bytes. If you have root access, you can use the
@command{systune} command to do this.
+@code{wchar_t} support in @samp{libstdc++} is not available for old
+IRIX 6.5.x releases, @math{x < 19}. The problem cannot be autodetected
+and in order to build GCC for such targets you need to configure with
+@option{--disable-wchar_t}.
+
See @uref{http://freeware.sgi.com/} for more
information about using GCC on IRIX platforms.
The Solaris 2 @command{/bin/sh} will often fail to configure
@file{libstdc++-v3}, @file{boehm-gc} or @file{libjava}. We therefore
-recommend to use the following sequence of commands to bootstrap and
-install GCC:
+recommend using the following initial sequence of commands
@smallexample
% CONFIG_SHELL=/bin/ksh
% export CONFIG_SHELL
@end smallexample
-and then proceed as described in @uref{build.html,,the build instructions}.
+and proceed as described in @uref{configure.html,,the configure instructions}.
In addition we strongly recommend specifying an absolute path to invoke
@var{srcdir}/configure.
To work around this problem, compile with @option{-gstabs+} instead of
plain @option{-g}.
-When configuring the GNU Multiple Precision Library (GMP) on a Solaris 7
-or later system, the canonical target triplet must be specified as the
-@command{build} parameter on the configure line:
+When configuring the GNU Multiple Precision Library (GMP) version 4.1.x
+on a Solaris 7 or later system, the canonical target triplet must be
+specified as the @command{build} parameter on the configure line:
@smallexample
./configure --build=sparc-sun-solaris2.7 --prefix=xxx --enable-mpfr
Support for older systems as targets for cross-compilation is less
problematic than support for them as hosts for GCC; if an enthusiast
wishes to make such a target work again (including resurrecting any of
-the targets that never worked with GCC 2, starting from the last CVS
+the targets that never worked with GCC 2, starting from the last
version before they were removed), patches
@uref{../contribute.html,,following the usual requirements} would be
likely to be accepted, since they should not affect the support for more