@c %**end of header
@c @end ifnothtml
+@include gcc-common.texi
+
@c Specify title for specific html page
@ifset indexhtml
@settitle Installing GCC
@end ifset
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
@c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com
@c IMPORTANT: whenever you modify this file, run `install.texi2html' to
@c Part 3 Titlepage and Copyright
@titlepage
-@sp 10
-@comment The title is printed in a large font.
-@center @titlefont{Installing GCC}
+@title Installing GCC
+@versionsubtitle
@c The following two commands start the copyright page.
@page
@insertcopying
@end titlepage
-@c Part 4 Top node and Master Menu
+@c Part 4 Top node, Master Menu, and/or Table of Contents
@ifinfo
@node Top, , , (dir)
@comment node-name, next, Previous, up
@end menu
@end ifinfo
+@iftex
+@contents
+@end iftex
+
@c Part 5 The Body of the Document
@c ***Installing GCC**********************************************************
@ifnothtml
@item GNU Multiple Precision Library (GMP) version 4.1 (or later)
-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.
+Necessary to build GCC. If you do not have it installed in your
+library search path, you will have to configure with the
+@option{--with-gmp} configure option. See also
+@option{--with-gmp-lib} and @option{--with-gmp-include}.
-@item MPFR Library version 2.2 (or later)
+@item MPFR Library version 2.2.1 (or later)
-Necessary to build the Fortran frontend. It can be downloaded from
+Necessary to build GCC. It can be downloaded from
@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.
+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.
-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.
+The @option{--with-mpfr} configure option should be used if your MPFR
+Library is not installed in your default library search path. See
+also @option{--with-mpfr-lib} and @option{--with-mpfr-include}.
@item @command{jar}, or InfoZIP (@command{zip} and @command{unzip})
@heading Tools/packages necessary for modifying GCC
@table @asis
-@item autoconf versions 2.13 and 2.59
+@item autoconf version 2.59
@itemx GNU m4 version 1.4 (or later)
Necessary when modifying @file{configure.ac}, @file{aclocal.m4}, etc.@:
-to regenerate @file{configure} and @file{config.in} files. Most
-directories require autoconf 2.59 (exactly), but the toplevel
-still requires autoconf 2.13 (exactly).
+to regenerate @file{configure} and @file{config.in} files.
@item automake version 1.9.6
@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 GCJ.
-Necessary when modifying @file{*.y} files.
+Necessary when modifying @file{*.y} files. Necessary to build the
+@code{treelang} 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.
-Necessary to build GCC during development because the generated output
-files are not included in the SVN repository. They are included in
-releases.
+Berkeley @command{yacc} (@command{byacc}) has been reported to work
+as well.
@item Flex version 2.5.4 (or later)
Necessary when applying patches, created with @command{diff}, to one's
own sources.
+@item ecj1
+@itemx gjavah
+
+If you wish to modify @file{.java} files in libjava, you will need to
+configure with @option{--enable-java-maintainer-mode}, and you will need
+to have executables named @command{ecj1} and @command{gjavah} in your path.
+The @command{ecj1} executable should run the Eclipse Java compiler via
+the GCC-specific entry point. You can download a suitable jar from
+@uref{ftp://sourceware.org/pub/java/}, or by running the script
+@command{contrib/download_ecj}.
+
@end table
@html
Please refer to the @uref{http://gcc.gnu.org/releases.html,,releases web page}
for information on how to obtain GCC@.
-The full distribution includes the C, C++, Objective-C, Fortran 77, Fortran
-(in case of GCC 4.0 and later), Java, and Ada (in case of GCC 3.1 and later)
-compilers. The full distribution also includes runtime libraries for C++,
-Objective-C, Fortran 77, Fortran, and Java. In GCC 3.0 and later versions,
-GNU compiler testsuites are also included in the full distribution.
+The full distribution includes the C, C++, Objective-C, Fortran, Java,
+and Ada (in the case of GCC 3.1 and later) compilers. The full
+distribution also includes runtime libraries for C++, Objective-C,
+Fortran, and Java. In GCC 3.0 and later versions, the GNU compiler
+testsuites are also included in the full distribution.
If you choose to download specific components, you must download the core
GCC distribution plus any language specific distributions you wish to
@item --disable-multilib
Specify that multiple target
libraries to support different target variants, calling
-conventions, etc should not be built. The default is to build a
+conventions, etc.@: should not be built. The default is to build a
predefined set of them.
Some targets provide finer-grained control over which multilibs are built
@item --with-cpu=@var{cpu}
Specify which cpu variant the compiler should generate code for by default.
@var{cpu} will be used as the default value of the @option{-mcpu=} switch.
-This option is only supported on some targets, including ARM, i386, PowerPC,
-and SPARC@.
+This option is only supported on some targets, including ARM, i386, M68k,
+PowerPC, and SPARC@.
@item --with-schedule=@var{cpu}
@itemx --with-arch=@var{cpu}
parallel. This is currently supported by @samp{libgfortran},
@samp{libjava}, @samp{libmudflap}, @samp{libstdc++}, and @samp{libobjc}.
-@item --with-java-home=@var{dirname}
-This @samp{libjava} option overrides the default value of the
-@samp{java.home} system property. It is also used to set
-@samp{sun.boot.class.path} to @file{@var{dirname}/lib/rt.jar}. By
-default @samp{java.home} is set to @file{@var{prefix}} and
-@samp{sun.boot.class.path} to
-@file{@var{datadir}/java/libgcj-@var{version}.jar}.
-
@item --enable-languages=@var{lang1},@var{lang2},@dots{}
Specify that only a particular subset of compilers and
their runtime libraries should be built. For a list of valid values for
work anymore, as those language sub-directories might not have been
configured!
+@item --enable-stage1-languages=@var{lang1},@var{lang2},@dots{}
+Specify that a particular subset of compilers and their runtime
+libraries should be built with the system C compiler during stage 1 of
+the bootstrap process, rather than only in later stages with the
+bootstrapped C compiler. The list of valid values is the same as for
+@option{--enable-languages}, and the option @code{all} will select all
+of the languages enabled by @option{--enable-languages}. This option is
+primarily useful for GCC development; for instance, when a development
+version of the compiler cannot bootstrap due to compiler bugs, or when
+one is debugging front ends other than the C front end. When this
+option is used, one can then build the target libraries for the
+specified languages with the stage-1 compiler by using @command{make
+stage1-bubble all-target}, or run the testsuite on the stage-1 compiler
+for the specified languages using @command{make stage1-start check-gcc}.
+
@item --disable-libada
Specify that the run-time libraries and tools used by GNAT should not
be built. This can be useful for debugging, or for compatibility with
option enables the 32-bit target to be a bi-arch compiler, which is
useful when you want a bi-arch compiler that defaults to 32-bit, and
you are building a bi-arch or multi-arch binutils in a combined tree.
-Currently, this option only affects powerpc-linux.
+Currently, this option only affects powerpc-linux and x86-linux.
@item --enable-secureplt
This option enables @option{-msecure-plt} by default for powerpc-linux.
forward to maintain the port.
@item --enable-decimal-float
+@itemx --enable-decimal-float=yes
+@itemx --enable-decimal-float=no
+@itemx --enable-decimal-float=bid
+@itemx --enable-decimal-float=dpd
@itemx --disable-decimal-float
-Enable (or disable) support for the C decimal floating point
-extension. This is enabled by default only on PowerPC GNU/Linux
-systems. Other systems may also support it, but require the user to
-specifically enable it.
+Enable (or disable) support for the C decimal floating point extension
+that is in the IEEE 754R extension to the IEEE754 floating point
+standard. This is enabled by default only on PowerPC, i386, and
+x86_64 GNU/Linux systems. Other systems may also support it, but
+require the user to specifically enable it. You can optionally
+control which decimal floating point format is used (either @samp{bid}
+or @samp{dpd}). The @samp{bid} (binary integer decimal) format is
+default on i386 and x86_64 systems, and the @samp{dpd} (densely packed
+decimal) format is default on PowerPC systems.
@item --with-long-double-128
Specify if @code{long double} type should be 128-bit by default on selected
128-bit @code{long double} when built against GNU C Library 2.4 and later,
64-bit @code{long double} otherwise.
+@item --with-gmp=@var{pathname}
+@itemx --with-gmp-include=@var{pathname}
+@itemx --with-gmp-lib=@var{pathname}
+@itemx --with-mpfr=@var{pathname}
+@itemx --with-mpfr-include=@var{pathname}
+@itemx --with-mpfr-lib=@var{pathname}
+If you do not have GMP (the GNU Multiple Precision library) and the
+MPFR Libraries installed in a standard location and you want to build
+GCC, you can explicitly specify the directory where they are installed
+(@samp{--with-gmp=@var{gmpinstalldir}},
+@samp{--with-mpfr=@var{mpfrinstalldir}}). The
+@option{--with-gmp=@var{gmpinstalldir}} option is shorthand for
+@option{--with-gmp-lib=@var{gmpinstalldir}/lib} and
+@option{--with-gmp-include=@var{gmpinstalldir}/include}. Likewise the
+@option{--with-mpfr=@var{mpfrinstalldir}} option is shorthand for
+@option{--with-mpfr-lib=@var{mpfrinstalldir}/lib} and
+@option{--with-mpfr-include=@var{mpfrinstalldir}/include}. If these
+shorthand assumptions are not correct, you can use the explicit
+include and lib options directly.
+
@end table
@subheading Cross-Compiler-Specific Options
tools.
@end table
-@subheading Fortran-Specific Options
-
-The following options apply to the build of the Fortran front end.
-
-@table @code
-
-@item --with-gmp=@var{pathname}
-@itemx --with-mpfr=@var{pathname}
-@itemx --with-gmp-dir=@var{pathname}
-@itemx --with-mpfr-dir=@var{pathname}
-If you don't have GMP (the GNU Multiple Precision library) and the MPFR
-Libraries installed in a standard location and you want to build the Fortran
-front-end, you can explicitly specify the directory where they are installed
-(@samp{--with-gmp=gmpinstalldir}, @samp{--with-mpfr=mpfrinstalldir}) or where
-you built them without installing (@samp{--with-gmp-dir=gmpbuilddir},
-@samp{--with-mpfr-dir=gmpbuilddir}).
-
-@end table
-
@subheading Java-Specific Options
The following option applies to the build of the Java front end.
@subsubheading General Options
@table @code
+@item --enable-java-maintainer-mode
+By default the @samp{libjava} build will not attempt to compile the
+@file{.java} source files to @file{.class}. Instead, it will use the
+@file{.class} files from the source tree. If you use this option you
+must have executables named @command{ecj1} and @command{gjavah} in your path
+for use by the build. You must use this option if you intend to
+modify any @file{.java} files in @file{libjava}.
+
+@item --with-java-home=@var{dirname}
+This @samp{libjava} option overrides the default value of the
+@samp{java.home} system property. It is also used to set
+@samp{sun.boot.class.path} to @file{@var{dirname}/lib/rt.jar}. By
+default @samp{java.home} is set to @file{@var{prefix}} and
+@samp{sun.boot.class.path} to
+@file{@var{datadir}/java/libgcj-@var{version}.jar}.
+
+@item --with-ecj-jar=@var{filename}
+This option can be used to specify the location of an external jar
+file containing the Eclipse Java compiler. A specially modified
+version of this compiler is used by @command{gcj} to parse
+@file{.java} source files. If this option is given, the
+@samp{libjava} build will create and install an @file{ecj1} executable
+which uses this jar file at runtime.
+
+If this option is not given, but an @file{ecj.jar} file is found in
+the topmost source tree at configure time, then the @samp{libgcj}
+build will create and install @file{ecj1}, and will also install the
+discovered @file{ecj.jar} into a suitable place in the install tree.
+
+If @file{ecj1} is not installed, then the user will have to supply one
+on his path in order for @command{gcj} to properly parse @file{.java}
+source files. A suitable jar is available from
+@uref{ftp://sourceware.org/pub/java/}.
+
@item --disable-getenv-properties
Don't set system properties from @env{GCJ_PROPERTIES}.
The solution is not to use such a directory for building GCC@.
-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 SVN or snapshots and enabling the @code{treelang}
+front end, or if you modify @file{*.y} files, you need the Bison parser
+generator installed. If you do not modify @file{*.y} files, releases
+contain the Bison-generated files and you do not need Bison installed
+to build them. Note that most front ends now use hand-written parsers,
+which can be modified with no need for Bison.
+
+Similarly, when building from SVN or snapshots, or if you modify
+@file{*.l} files, you need the Flex lexical analyzer generator installed.
+There is still one Flex-based lexical analyzer (part of the build
+machinery, not of GCC itself) that is used even if you only build the
+C front end.
When building from SVN or snapshots, or if you modify Texinfo
documentation, you need version 4.4 or later of Texinfo installed if you
cross compiler. The installed native compiler needs to be GCC version
2.95 or later.
+If the cross compiler is to be built with support for the Java
+programming language and the ability to compile .java source files is
+desired, the installed native compiler used to build the cross
+compiler needs to be the same GCC version as the cross compiler. In
+addition the cross compiler needs to be configured with
+@option{--with-ecj-jar=@dots{}}.
+
Assuming you have already installed a native copy of GCC and configured
your cross compiler, issue the command @command{make}, which performs the
following steps:
work outside the makefiles. For example,
@smallexample
- make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fno-strength-reduce"
+ make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
@end smallexample
will run the standard @command{g++} testsuites (``unix'' is the target name
for a standard native testsuite situation), passing
-@samp{-O3 -fno-strength-reduce} to the compiler on every test, i.e.,
+@samp{-O3 -fmerge-constants} to the compiler on every test, i.e.,
slashes separate options.
You can run the testsuites multiple times using combinations of options
in the @file{@var{target}/libjava/testsuite} directory in
the build tree.
-The @uref{http://sources.redhat.com/mauve/,,Mauve Project} provides
+The @uref{http://sourceware.org/mauve/,,Mauve Project} provides
a suite of tests for the Java Class Libraries. This suite can be run
as part of libgcj testing by placing the Mauve tree within the libjava
testsuite at @file{libjava/testsuite/libjava.mauve/mauve}, or by
specifying the location of that tree when invoking @samp{make}, as in
@samp{make MAUVEDIR=~/mauve check}.
-@uref{http://sources.redhat.com/mauve/jacks.html,,Jacks}
-is a free testsuite that tests Java compiler front ends. This suite
-can be run as part of libgcj testing by placing the Jacks tree within
-the libjava testsuite at @file{libjava/testsuite/libjava.jacks/jacks}.
-
@section How to interpret test results
The result of running the testsuite are various @file{*.sum} and @file{*.log}
@end smallexample
We strongly recommend to install into a target directory where there is
-no previous version of GCC present.
+no previous version of GCC present. Also, the GNAT runtime should not
+be stripped, as this would break certain features of the debugger that
+depend on this debugging information (catching Ada exceptions for
+instance).
That step completes the installation of GCC; user level binaries can
be found in @file{@var{prefix}/bin} where @var{prefix} is the value
Microsoft Windows:
@itemize
@item
-The @uref{http://sources.redhat.com/cygwin/,,Cygwin} project;
+The @uref{http://sourceware.org/cygwin/,,Cygwin} project;
@item
The @uref{http://www.mingw.org/,,MinGW} project.
@end itemize
@item
@uref{#m6812-elf,,m6812-elf}
@item
+@uref{#m68k-x-x,,m68k-*-*}
+@item
@uref{#m68k-hp-hpux,,m68k-hp-hpux}
@item
+@uref{#m68k-uclinux,,m68k-uclinux}
+@item
@uref{#mips-x-x,,mips-*-*}
@item
@uref{#mips-sgi-irix5,,mips-sgi-irix5}
@end html
@heading @anchor{x-x-linux-gnu}*-*-linux-gnu
-Versions of libstdc++-v3 starting with 3.2.1 require bugfixes present
+Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
in glibc 2.2.5 and later. More information is available in the
libstdc++-v3 documentation.
@html
<hr />
@end html
+@heading @anchor{m68k-x-x}m68k-*-*
+By default, @samp{m68k-*-aout}, @samp{m68k-*-coff*},
+@samp{m68k-*-elf*}, @samp{m68k-*-rtems} and @samp{m68k-*-uclinux}
+build libraries for both M680x0 and ColdFire processors. If you only
+need the M680x0 libraries, you can omit the ColdFire ones by passing
+@option{--with-arch=m68k} to @command{configure}. Alternatively, you
+can omit the M680x0 libraries by passing @option{--with-arch=cf} to
+@command{configure}. These targets default to 5206 code when
+configured with @option{--with-arch=cf} and 68020 code otherwise.
+
+The @samp{m68k-*-linux-gnu}, @samp{m68k-*-netbsd} and
+@samp{m68k-*-openbsd} targets also support the @option{--with-arch}
+option. They will generate ColdFire CFV4e code when configured with
+@option{--with-arch=cf} and 68020 code otherwise.
+
+You can override the default processors listed above by configuring
+with @option{--with-cpu=@var{target}}. This @var{target} can either
+be a @option{-mcpu} argument or one of the following values:
+@samp{m68000}, @samp{m68010}, @samp{m68020}, @samp{m68030},
+@samp{m68040}, @samp{m68060}, @samp{m68020-40} and @samp{m68020-60}.
+
+@html
+<hr />
+@end html
@heading @anchor{m68k-hp-hpux}m68k-hp-hpux
HP 9000 series 300 or 400 running HP-UX@. HP-UX version 8.0 has a bug in
the assembler that prevents compilation of GCC@. This
@html
<hr />
@end html
+@heading @anchor{m68k-x-uclinux}m68k-*-uclinux
+GCC 4.3 changed the uClinux configuration so that it uses the
+@samp{m68k-linux-gnu} ABI rather than the @samp{m68k-elf} ABI.
+It also added improved support for C++ and flat shared libraries,
+both of which were ABI changes. However, you can still use the
+original ABI by configuring for @samp{m68k-uclinuxoldabi} or
+@samp{m68k-@var{vendor}-uclinuxoldabi}.
+
+@html
+<hr />
+@end html
@heading @anchor{mips-x-x}mips-*-*
If on a MIPS system you get an error message saying ``does not have gp
sections for all it's [sic] sectons [sic]'', don't worry about it. This
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.
+The assembler from GNU binutils 2.17 and earlier has a bug in the way
+it sorts relocations for REL targets (o32, o64, EABI). This can cause
+bad code to be generated for simple C++ programs. Also the linker
+from GNU binutils versions prior to 2.17 has a bug which causes the
+runtime linker stubs in very large programs, like @file{libgcj.so}, to
+be incorrectly generated. Binutils CVS snapshots and releases made
+after Nov. 9, 2006 are thought to be free from both of these problems.
@html
<hr />
GNU binutils 2.15 or later. You may also use GNU @command{ld}, but
this is not required and currently causes some problems with Ada.
-The @option{--enable-threads} option doesn't currently work, a patch is
-in preparation for a future release. The @option{--enable-libgcj}
+The @option{--enable-libgcj}
option is disabled by default: IRIX 6 uses a very low default limit
(20480) for the command line length. Although @command{libtool} contains a
workaround for this problem, at least the N64 @samp{libgcj} is known not
@uref{http://developer.apple.com/darwin/projects/compiler/} (free
registration required).
-This version of GCC requires at least cctools-590.7.
-
-The version of GCC shipped by Apple typically includes a number of
-extensions not available in a standard GCC release. These extensions
-are generally for backwards compatibility and best avoided.
+This version of GCC requires at least cctools-590.36. The
+cctools-590.36 package referenced from
+@uref{http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html} will not work
+on systems older than 10.3.9 (aka darwin7.9.0).
@html
<hr />
single bug. It has been fixed on the 2.15 branch in the CVS repository.
You can obtain a working version by checking out the binutils-2_15-branch
from the CVS repository or applying the patch
-@uref{http://sources.redhat.com/ml/binutils-cvs/2004-09/msg00036.html} to the
+@uref{http://sourceware.org/ml/binutils-cvs/2004-09/msg00036.html} to the
release.
We recommend using GNU binutils 2.16 or later in conjunction with GCC 4.x,
To work around this problem, compile with @option{-gstabs+} instead of
plain @option{-g}.
-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:
+When configuring the GNU Multiple Precision Library (GMP) or the MPFR
+library on a Solaris 7 or later system, the canonical target triplet
+must be specified as the @command{build} parameter on the configure
+line. This triplet can be obtained by invoking ./config.guess in
+the toplevel source directory of GCC (and not that of GMP or MPFR).
+For example on a Solaris 7 system:
@smallexample
-./configure --build=sparc-sun-solaris2.7 --prefix=xxx --enable-mpfr
+ % ./configure --build=sparc-sun-solaris2.7 --prefix=xxx
@end smallexample
@html
@end html
@heading @anchor{sparc64-x-solaris2}sparc64-*-solaris2*
+When configuring the GNU Multiple Precision Library (GMP) or the
+MPFR library, the canonical target triplet must be specified as
+the @command{build} parameter on the configure line. For example
+on a Solaris 7 system:
+
+@smallexample
+ % ./configure --build=sparc64-sun-solaris2.7 --prefix=xxx
+@end smallexample
+
The following compiler flags must be specified in the configure
step in order to bootstrap this target with the Sun compiler:
@smallexample
- % CC="cc -xildoff -xarch=v9" @var{srcdir}/configure [@var{options}] [@var{target}]
+ % CC="cc -xarch=v9 -xildoff" @var{srcdir}/configure [@var{options}] [@var{target}]
@end smallexample
-@option{-xildoff} turns off the incremental linker, and @option{-xarch=v9}
-specifies the SPARC-V9 architecture to the Sun linker and assembler.
+@option{-xarch=v9} specifies the SPARC-V9 architecture to the Sun toolchain
+and @option{-xildoff} turns off the incremental linker.
@html
<hr />
For some systems, old versions of GNU binutils may also be useful,
and are available from @file{pub/binutils/old-releases} on
-@uref{http://sources.redhat.com/mirrors.html,,sources.redhat.com mirror sites}.
+@uref{http://sourceware.org/mirrors.html,,sourceware.org mirror sites}.
Some of the information on specific systems above relates to
such older systems, but much of the information