@settitle Installing GCC: GNU Free Documentation License
@end ifset
-@c Copyright (C) 1988-2013 Free Software Foundation, Inc.
+@c Copyright (C) 1988-2014 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 2 Summary Description and Copyright
@copying
-Copyright @copyright{} 1988-2013 Free Software Foundation, Inc.
+Copyright @copyright{} 1988-2014 Free Software Foundation, Inc.
@sp 1
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
bootstrapping the compiler with such earlier compilers is strongly
discouraged.
+@item C standard library and headers
+
+In order to build GCC, the C standard library and headers must be present
+for all target variants for which target libraries will be built (and not
+only the variant of the host C++ compiler).
+
+This affects the popular @samp{x86_64-unknown-linux-gnu} platform (among
+other multilib targets), for which 64-bit (@samp{x86_64}) and 32-bit
+(@samp{i386}) libc headers are usually packaged separately. If you do a
+build of a native compiler on @samp{x86_64-unknown-linux-gnu}, make sure you
+either have the 32-bit libc developer package properly installed (the exact
+name of the package depends on your distro) or you must build GCC as a
+64-bit only compiler by configuring with the option
+@option{--disable-multilib}. Otherwise, you may encounter an error such as
+@samp{fatal error: gnu/stubs-32.h: No such file}
+
@item GNAT
In order to build the Ada compiler (GNAT) you must already have GNAT
@option{--with-mpc} configure option should be used. See also
@option{--with-mpc-lib} and @option{--with-mpc-include}.
-@item ISL Library version 0.11.1
+@item ISL Library version 0.12.2
Necessary to build GCC with the Graphite loop optimizations.
It can be downloaded from @uref{ftp://gcc.gnu.org/pub/gcc/infrastructure/}
-as @file{isl-0.11.1.tar.bz2}.
+as @file{isl-0.12.2.tar.bz2}. If an ISL source distribution is found
+in a subdirectory of your GCC sources named @file{isl}, it will be
+built together with GCC. Alternatively, the @option{--with-isl} configure
+option should be used if ISL is not installed in your default library
+search path.
-The @option{--with-isl} configure option should be used if ISL is not
-installed in your default library search path.
-
-@item CLooG 0.18.0
+@item CLooG 0.18.1
Necessary to build GCC with the Graphite loop optimizations. It can be
downloaded from @uref{ftp://gcc.gnu.org/pub/gcc/infrastructure/} as
-@file{cloog-0.18.0.tar.gz}. The @option{--with-cloog} configure option should
-be used if CLooG is not installed in your default library search path.
-CLooG needs to be built against ISL 0.11.1. Use @option{--with-isl=system}
-to direct CLooG to pick up an already installed ISL, otherwise it will use
-ISL 0.11.1 as bundled with CLooG. CLooG needs to be configured to use GMP
-internally, use @option{--with-bits=gmp} to direct it to do that.
+@file{cloog-0.18.1.tar.gz}. If a CLooG source distribution is found
+in a subdirectory of your GCC sources named @file{cloog}, it will be
+built together with GCC. Alternatively, the @option{--with-cloog} configure
+option should be used if CLooG is not installed in your default library search
+path.
+
+If you want to install CLooG separately it needs to be built against
+ISL 0.12.2 by using the @option{--with-isl=system} to direct CLooG to pick
+up an already installed ISL. Using the ISL library as bundled with CLooG
+is not supported.
@end table
details. Tcl 8.6 has a known regression in RE pattern handling that
make parts of the testsuite fail. See
@uref{http://core.tcl.tk/tcl/tktview/267b7e2334ee2e9de34c4b00d6e72e2f1997085f}
-for more information.
+for more information. This bug has been fixed in 8.6.1.
@item autogen version 5.5.4 (or later) and
@itemx guile version 1.4.1 (or later)
@option{--with-gxx-include-dir=@var{dirname}}. Using this option is
particularly useful if you intend to use several versions of GCC in
parallel. This is currently supported by @samp{libgfortran},
-@samp{libjava}, @samp{libmudflap}, @samp{libstdc++}, and @samp{libobjc}.
+@samp{libjava}, @samp{libstdc++}, and @samp{libobjc}.
@item --enable-languages=@var{lang1},@var{lang2},@dots{}
Specify that only a particular subset of compilers and
@itemx --disable-gnu-unique-object
Tells GCC to use the gnu_unique_object relocation for C++ template
static data members and inline function local statics. Enabled by
-default for a native toolchain with an assembler that accepts it and
+default for a toolchain with an assembler that accepts it and
GLIBC 2.11 or above, otherwise disabled.
@item --enable-lto
Enable support for link-time optimization (LTO). This is enabled by
default, and may be disabled using @option{--disable-lto}.
+@item --enable-linker-plugin-configure-flags=FLAGS
+@itemx --enable-linker-plugin-flags=FLAGS
+By default, linker plugins (such as the LTO plugin) are built for the
+host system architecture. For the case that the linker has a
+different (but run-time compatible) architecture, these flags can be
+specified to build plugins that are compatible to the linker. For
+example, if you are building GCC for a 64-bit x86_64
+(@samp{x86_64-unknown-linux-gnu}) host system, but have a 32-bit x86
+GNU/Linux (@samp{i686-pc-linux-gnu}) linker executable (which is
+executable on the former system), you can configure GCC as follows for
+getting compatible linker plugins:
+
+@smallexample
+% @var{srcdir}/configure \
+ --host=x86_64-unknown-linux-gnu \
+ --enable-linker-plugin-configure-flags=--host=i686-pc-linux-gnu \
+ --enable-linker-plugin-flags='CC=gcc\ -m32\ -Wl,-rpath,[...]/i686-pc-linux-gnu/lib'
+@end smallexample
+
@item --with-plugin-ld=@var{pathname}
Enable an alternate linker to be used at link-time optimization (LTO)
link time when @option{-fuse-linker-plugin} is enabled.
files, but these changed header paths may conflict with some compilation
environments. Enabled by default, and may be disabled using
@option{--disable-canonical-system-headers}.
+
+@item --with-glibc-version=@var{major}.@var{minor}
+Tell GCC that when the GNU C Library (glibc) is used on the target it
+will be version @var{major}.@var{minor} or later. Normally this can
+be detected from the C library's header files, but this option may be
+needed when bootstrapping a cross toolchain without the header files
+available for building the initial bootstrap compiler.
+
+If GCC is configured with some multilibs that use glibc and some that
+do not, this option applies only to the multilibs that use glibc.
+However, such configurations may not work well as not all the relevant
+configuration in GCC is on a per-multilib basis.
@end table
@subheading Cross-Compiler-Specific Options
RTEMS configurations, which currently use newlib. The option is
supported since version 4.7.2 and is the default in 4.8.0 and newer.
+@item --with-nds32-lib=@var{library}
+Specifies that @var{library} setting is used for building @file{libgcc.a}.
+Currently, the valid @var{library} is @samp{newlib} or @samp{mculib}.
+This option is only supported for the NDS32 target.
+
@item --with-build-time-tools=@var{dir}
Specifies where to find the set of target tools (assembler, linker, etc.)
that will be used while building GCC itself. This option can be useful
Unlike standard bootstrap, several additional restrictions apply. The
compiler used to build @code{stage1} needs to support a 64-bit integral type.
-It is recommended to only use GCC for this. Also parallel make is currently
-not supported since collisions in profile collecting may occur.
+It is recommended to only use GCC for this.
@html
<hr />
@item
Solaris 2 (SPARC, Intel):
@itemize
-@item
-@uref{http://www.sunfreeware.com/,,Sunfreeware}
-
-@item
-@uref{http://www.blastwave.org/,,Blastwave}
-
@item
@uref{http://www.opencsw.org/,,OpenCSW}
@item
@uref{#ix86-x-linux,,i?86-*-linux*}
@item
-@uref{#ix86-x-solaris289,,i?86-*-solaris2.9}
-@item
@uref{#ix86-x-solaris210,,i?86-*-solaris2.10}
@item
@uref{#ia64-x-linux,,ia64-*-linux}
@item
@uref{#mips-sgi-irix6,,mips-sgi-irix6}
@item
+@uref{#nds32le-x-elf,,nds32le-*-elf}
+@item
+@uref{#nds32be-x-elf,,nds32be-*-elf}
+@item
@uref{#powerpc-x-x,,powerpc*-*-*}
@item
@uref{#powerpc-x-darwin,,powerpc-*-darwin*}
@item
@uref{#tilegx-x-linux,,tilegx-*-linux*}
@item
+@uref{#tilegxbe-x-linux,,tilegxbe-*-linux*}
+@item
@uref{#tilepro-x-linux,,tilepro-*-linux*}
@item
@uref{#x-x-vxworks,,*-*-vxworks*}
possible you have a hardware problem. Further information on this can be
found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}.
-@html
-<hr />
-@end html
-@anchor{ix86-x-solaris29}
-@heading i?86-*-solaris2.9
-The Sun assembler in Solaris 9 has several bugs and limitations.
-While GCC works around them, several features are missing, so it is
-@c FIXME: which ones?
-recommended to use the GNU assembler instead. There is no bundled
-version, but the current version, from GNU binutils 2.22, is known to
-work.
-
-Solaris@tie{}2/x86 doesn't support the execution of SSE/SSE2 instructions
-before Solaris@tie{}9 4/04, even if the CPU supports them. Programs will
-receive @code{SIGILL} if they try. The fix is available both in
-Solaris@tie{}9 Update@tie{}6 and kernel patch 112234-12 or newer. To
-avoid this problem,
-@option{-march} defaults to @samp{pentiumpro} on Solaris 9. If
-you have the patch installed, you can configure GCC with an appropriate
-@option{--with-arch} option, but need GNU @command{as} for SSE2 support.
-
@html
<hr />
@end html
For gcc 3.4.3 and later, @option{--enable-libunwind-exceptions} is
removed and the system libunwind library will always be used.
+@html
+<hr />
+@end html
+@anchor{aarch64-x-x}
+@heading aarch64*-*-*
+Binutils pre 2.24 does not have support for selecting @option{-mabi} and
+does not support ILP32. If it is used to build GCC 4.9 or later, GCC will
+not support option @option{-mabi=ilp32}.
+
@html
<hr />
<!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
TI MSP430 processor.
This configuration is intended for embedded systems.
+@html
+<hr />
+@end html
+@anchor{nds32le-x-elf}
+@heading nds32le-*-elf
+Andes NDS32 target in little endian mode.
+
+@html
+<hr />
+@end html
+@anchor{nds32be-x-elf}
+@heading nds32be-*-elf
+Andes NDS32 target in big endian mode.
+
@html
<hr />
@end html
@c alone is too unspecific and must be avoided.
@anchor{x-x-solaris2}
@heading *-*-solaris2*
-Support for Solaris 9 has been obsoleted in GCC 4.9, but can still be
-enabled by configuring with @option{--enable-obsolete}. Support will be
-removed in GCC 4.10. Support for Solaris 8 has removed in GCC 4.8.
-Support for Solaris 7 has been removed in GCC 4.6.
+Support for Solaris 9 has been removed in GCC 4.10. Support for Solaris
+8 has been removed in GCC 4.8. Support for Solaris 7 has been removed
+in GCC 4.6.
Sun does not ship a C compiler with Solaris 2 before Solaris 10, though
you can download the Sun Studio compilers for free. In Solaris 10 and
causes the @command{expect} program to miss anticipated output, extra
testsuite failures appear.
-There are patches for Solaris 9 (117171-11 or newer for
-SPARC, 117172-11 or newer for Intel) that address this problem.
-
-Thread-local storage (TLS) is supported in Solaris@tie{}9, but requires
-some patches. The @samp{libthread} patches provide the
-@code{__tls_get_addr} (SPARC, 64-bit x86) resp.@ @code{___tls_get_addr}
-(32-bit x86) functions. On Solaris@tie{}9, the necessary support
-on SPARC is present since FCS, while 114432-05 or newer is required on
-Intel. Additionally, on Solaris@tie{}9/x86, patch 113986-02 or newer is
-required for the Sun @command{ld} and runtime linker (@command{ld.so.1})
-support, while Solaris@tie{}9/SPARC works since FCS. The linker
-patches must be installed even if GNU @command{ld} is used. Sun
-@command{as} in Solaris@tie{}9 doesn't support the necessary
-relocations, so GNU @command{as} must be used. The @command{configure}
-script checks for those prerequisites and automatically enables TLS
-support if they are met. Although those minimal patch versions should
-work, it is recommended to use the latest patch versions which include
-additional bug fixes.
-
@html
<hr />
@end html
@end html
@anchor{tilegx-*-linux}
@heading tilegx-*-linux*
-The TILE-Gx processor running GNU/Linux. This port requires
-binutils-2.22 or newer.
+The TILE-Gx processor in little endian mode, running GNU/Linux. This
+port requires binutils-2.22 or newer.
+
+@html
+<hr />
+@end html
+@anchor{tilegxbe-*-linux}
+@heading tilegxbe-*-linux*
+The TILE-Gx processor in big endian mode, running GNU/Linux. This
+port requires binutils-2.23 or newer.
@html
<hr />