@end ifset
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-@c 2010 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+@c 2010, 2011 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
Necessary when targetting Darwin, building @samp{libstdc++},
and not using @option{--disable-symvers}.
Necessary when targetting Solaris 2 with Sun @command{ld} and not using
-@option{--disable-symvers}. A helper
-script needs @samp{Glob.pm}, which is missing from @command{perl} 5.005
-included in Solaris@tie{}8. The bundled @command{perl} in Solaris@tie{}9 and up
-works.
+@option{--disable-symvers}. The bundled @command{perl} in Solaris@tie{}8
+and up works.
Necessary when regenerating @file{Makefile} dependencies in libiberty.
Necessary when regenerating @file{libiberty/functions.texi}.
Used by various scripts to generate some files included in SVN (mainly
Unicode-related and rarely changing) from source tables.
+@item @command{jar}, or InfoZIP (@command{zip} and @command{unzip})
+
+Necessary to build libgcj, the GCJ runtime.
+
+@end table
+
+Several support libraries are necessary to build GCC, some are required,
+others optional. While any sufficiently new version of required tools
+usually work, library requirements are generally stricter. Newer
+versions may work in some cases, but it's safer to use the exact
+versions documented. We appreciate bug reports about problems with
+newer versions, though.
+
+@table @asis
@item GNU Multiple Precision Library (GMP) version 4.3.2 (or later)
Necessary to build GCC@. If you do not have it installed in your
In both cases @option{--with-cloog} configure option should be used
if CLooG is not installed in your default library search path.
-@item @command{jar}, or InfoZIP (@command{zip} and @command{unzip})
-
-Necessary to build libgcj, the GCJ runtime.
-
@end table
@heading Tools/packages necessary for modifying GCC
@item @TeX{} (any working version)
-Necessary for running @command{texi2dvi} and @command{texi2pdf}, which
+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.
on other configuration options, and differs between cross and native
configurations.
+@item --with-specs=@var{specs}
+Specify additional command line driver SPECS.
+This can be useful if you need to turn on a non-standard feature by
+default without modifying the compiler's source code, for instance
+@option{--with-specs=%@{!fcommon:%@{!fno-common:-fno-common@}@}}.
+@ifnothtml
+@xref{Spec Files,, Specifying subprocesses and the switches to pass to them,
+gcc, Using the GNU Compiler Collection (GCC)},
+@end ifnothtml
+@ifhtml
+See ``Spec Files'' in the main manual
+@end ifhtml
+
@end table
@item --program-prefix=@var{prefix}
workable alternative. This requires gas and gdb, as the normal SVR4
tools can not generate or interpret stabs.
+@item --with-tls=@var{dialect}
+Specify the default TLS dialect, for systems were there is a choice.
+For ARM targets, possible values for @var{dialect} are @code{gnu} or
+@code{gnu2}, which select between the original GNU dialect and the GNU TLS
+descriptor-based dialect.
+
@item --disable-multilib
Specify that multiple target
libraries to support different target variants, calling
Some targets provide finer-grained control over which multilibs are built
(e.g., @option{--disable-softfloat}):
@table @code
-@item arc-*-elf*
-biendian.
-
@item arm-*-*
fpu, 26bit, underscore, interwork, biendian, nofmult.
AIX thread support.
@item dce
DCE thread support.
-@item gnat
-Ada tasking support. For non-Ada programs, this setting is equivalent
-to @samp{single}. When used in conjunction with the Ada run time, it
-causes GCC to use the same thread primitives as Ada uses. This option
-is necessary when using both Ada and the back end exception handling,
-which is the default for most Ada targets.
-@item mach
-Generic MACH thread support, known to work on NeXTSTEP@. (Please note
-that the file needed to support this configuration, @file{gthr-mach.h}, is
-missing and thus this setting will cause a known bootstrap failure.)
+@item lynx
+LynxOS thread support.
+@item mipssde
+MIPS SDE thread support.
+@item nks
+Novell Kernel Services thread support.
@item no
This is an alias for @samp{single}.
@item posix
RTEMS thread support.
@item single
Disable thread support, should work for all platforms.
-@item solaris
-Sun Solaris 2/Unix International thread support. Only use this if you
-really need to use this legacy API instead of the default, @samp{posix}.
+@item tpf
+TPF thread support.
@item vxworks
VxWorks thread support.
@item win32
Microsoft Win32 API thread support.
-@item nks
-Novell Kernel Services thread support.
@end table
@item --enable-tls
On MIPS targets, make @option{-msynci} the default when no
@option{-mno-synci} option is passed.
-@item --without-synci
+@item --without-synci
On MIPS targets, make @option{-mno-synci} the default when no
@option{-msynci} option is passed. This is the default.
support @option{--build-id} option, a warning is issued and the
@option{--enable-linker-build-id} option is ignored. The default is off.
+@item --with-linker-hash-style=@var{choice}
+Tells GCC to pass @option{--hash-style=@var{choice}} option to the
+linker for all final links. @var{choice} can be one of
+@samp{sysv}, @samp{gnu}, and @samp{both} where @samp{sysv} is the default.
+
@item --enable-gnu-unique-object
@itemx --disable-gnu-unique-object
Tells GCC to use the gnu_unique_object relocation for C++ template
only useful when you are already using @option{--with-sysroot}. You
can use @option{--with-build-sysroot} when you are configuring with
@option{--prefix} set to a directory that is different from the one in
-which you are installing GCC and your target libraries.
+which you are installing GCC and your target libraries.
This option affects the system root for the compiler used to build
target libraries (which runs on the build system); it does not affect
be specified.
@item --with-arch-directory=ARCH
-Specifies the name to use for the @file{jre/lib/ARCH} directory in the SDK
-environment created when --enable-java-home is passed. Typical names for this
+Specifies the name to use for the @file{jre/lib/ARCH} directory in the SDK
+environment created when --enable-java-home is passed. Typical names for this
directory include i386, amd64, ia64, etc.
@item --with-os-directory=DIR
java-1.5.0-gcj.
@item --with-arch-suffix=SUFFIX
-Specifies the suffix for the sdk directory. Defaults to the empty string.
+Specifies the suffix for the sdk directory. Defaults to the empty string.
Examples include '.x86_64' in 'java-1.5.0-gcj-1.5.0.0.x86_64'.
@item --with-jvm-root-dir=DIR
@item --with-python-dir=DIR
Specifies where to install the Python modules used for aot-compile. DIR should
not include the prefix used in installation. For example, if the Python modules
-are to be installed in /usr/lib/python2.5/site-packages, then
+are to be installed in /usr/lib/python2.5/site-packages, then
--with-python-dir=/lib/python2.5/site-packages should be passed. If this is
not specified, then the Python modules are installed in $(prefix)/share/python.
GNU Make 3.80 and above, which is necessary to build GCC, support
building in parallel. To activate this, you can use @samp{make -j 2}
-instead of @samp{make}. You can also specify a bigger number, and
+instead of @samp{make}. You can also specify a bigger number, and
in most cases using a value greater than the number of processors in
your machine will result in fewer and shorter I/O latency hits, thus
improving overall throughput; this is especially true for slow drives
@item
@uref{#alpha-dec-osf51,,alpha*-dec-osf5.1}
@item
-@uref{#arc-x-elf,,arc-*-elf}
-@item
@uref{#arm-x-elf,,arm-*-elf}
@item
@uref{#avr,,avr}
@item
@uref{#m32r-x-elf,,m32r-*-elf}
@item
-@uref{#m6811-elf,,m6811-elf}
-@item
-@uref{#m6812-elf,,m6812-elf}
-@item
@uref{#m68k-x-x,,m68k-*-*}
@item
@uref{#m68k-uclinux,,m68k-uclinux}
are running the DEC/Compaq/HP Unix (DEC OSF/1, Digital UNIX, or Compaq/HP
Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
-As of GCC 3.2, versions before @code{alpha*-dec-osf4} are no longer
-supported. (These are the versions which identify themselves as DEC
-OSF/1.) As of GCC 4.6, support for Tru64 UNIX V4.0 and V5.0 has been
-removed.
+Support for Tru64 UNIX V5.1 has been obsoleted in GCC 4.7, but can still
+be enabled by configuring with @option{--enable-obsolete}. Support will
+be removed in GCC 4.8. As of GCC 4.6, support for Tru64 UNIX V4.0 and
+V5.0 has been removed. As of GCC 3.2, versions before
+@code{alpha*-dec-osf4} are no longer supported. (These are the versions
+which identify themselves as DEC OSF/1.)
On Tru64 UNIX, virtual memory exhausted bootstrap failures
may be fixed by reconfiguring Kernel Virtual Memory and Swap parameters
are supported on Tru64 UNIX, so you must not configure GCC with
@option{--with-gnu-as} or @option{--with-gnu-ld}.
+Cross-compilers for the Tru64 UNIX target currently do not work because
+the auxiliary programs @command{mips-tdump} and @command{mips-tfile} can't
+be compiled on anything but Tru64 UNIX.
+
GCC writes a @samp{.verstamp} directive to the assembler output file
unless it is built as a cross-compiler. It gets the version to use from
the system header file @file{/usr/include/stamp.h}. If you install a
@html
<hr />
@end html
-@heading @anchor{arc-x-elf}arc-*-elf
-Argonaut ARC processor.
-This configuration is intended for embedded systems.
-
-@html
-<hr />
-@end html
@heading @anchor{arm-x-elf}arm-*-elf
ARM-family processors. Subtargets that use the ELF object format
require GNU binutils 2.13 or newer. Such subtargets include:
@html
<hr />
@end html
-@heading @anchor{crx}CRX
-
-The CRX CompactRISC architecture is a low-power 32-bit architecture with
-fast context switching and architectural extensibility features.
-
-@ifnothtml
-@xref{CRX Options,, CRX Options, gcc, Using and Porting the GNU Compiler
-Collection (GCC)},
-@end ifnothtml
-
-@ifhtml
-See ``CRX Options'' in the main manual for a list of CRX-specific options.
-@end ifhtml
-
-Use @samp{configure --target=crx-elf --enable-languages=c,c++} to configure
-GCC@ for building a CRX cross-compiler. The option @samp{--target=crx-elf}
-is also used to build the @samp{newlib} C library for CRX.
-
-It is also possible to build libstdc++-v3 for the CRX architecture. This
-needs to be done in a separate step with the following configure settings:
-
-@smallexample
-gcc/libstdc++-v3/configure --host=crx-elf --with-newlib \
- --enable-sjlj-exceptions --enable-cxx-flags='-fexceptions -frtti'
-@end smallexample
-
-@html
-<hr />
-@end html
@heading @anchor{dos}DOS
Please have a look at the @uref{binaries.html,,binaries page}.
@html
<hr />
@end html
-@heading @anchor{m6811-elf}m6811-elf
-Motorola 68HC11 family micro controllers. These are used in embedded
-applications. There are no standard Unix configurations.
-
-@html
-<hr />
-@end html
-@heading @anchor{m6812-elf}m6812-elf
-Motorola 68HC12 family micro controllers. These are used in embedded
-applications. There are no standard Unix configurations.
-
-@html
-<hr />
-@end html
@heading @anchor{m68k-x-x}m68k-*-*
By default,
@samp{m68k-*-elf*}, @samp{m68k-*-rtems}, @samp{m68k-*-uclinux} and
@samp{m68000}, @samp{m68010}, @samp{m68020}, @samp{m68030},
@samp{m68040}, @samp{m68060}, @samp{m68020-40} and @samp{m68020-60}.
+GCC requires at least binutils version 2.17 on these targets.
+
@html
<hr />
@end html
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}.
+both of which were ABI changes.
@html
@command{configure} option when configuring GCC@. The default is to
use traps on systems that support them.
-Cross-compilers for the MIPS as target using the MIPS assembler
-currently do not work, because the auxiliary programs
-@file{mips-tdump.c} and @file{mips-tfile.c} can't be compiled on
-anything but a MIPS@. It does work to cross compile for a MIPS
-if you use the GNU assembler and linker.
-
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
@end html
@heading @anchor{mips-sgi-irix6}mips-sgi-irix6
-Support for IRIX 6 releases before 6.5 has been removed in GCC 4.6, as
-well as support for
-the O32 ABI. It is @emph{strongly} recommended to upgrade to at least
-IRIX 6.5.18. This release introduced full ISO C99 support, though for
-the N32 and N64 ABIs only.
+Support for IRIX 6.5 has been obsoleted in GCC 4.7, but can still be
+enabled by configuring with @option{--enable-obsolete}. Support will be
+removed in GCC 4.8. Support for IRIX 6 releases before 6.5 has been
+removed in GCC 4.6, as well as support for the O32 ABI. It is
+@emph{strongly} recommended to upgrade to at least IRIX 6.5.18. This
+release introduced full ISO C99 support, though for the N32 and N64 ABIs
+only.
To build and use GCC on IRIX 6.5, you need the IRIX Development Foundation
(IDF) and IRIX Development Libraries (IDL). They are included with the
@c alone is too unspecific and must be avoided.
@heading @anchor{x-x-solaris2}*-*-solaris2*
-Support for Solaris 7 has been removed in GCC 4.6.
+Support for Solaris 8 has been obsoleted in GCC 4.7, but can still be
+enabled by configuring with @option{--enable-obsolete}. Support will be
+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, though you can download
the Sun Studio compilers for free. Alternatively,
@heading @anchor{windows}Microsoft Windows
@subheading Intel 16-bit versions
-The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
+The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
supported.
-However, the 32-bit port has limited support for Microsoft
+However, the 32-bit port has limited support for Microsoft
Windows 3.11 in the Win32s environment, as a target only. See below.
@subheading Intel 32-bit versions
-The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
-XP, and Windows Vista, are supported by several different target
-platforms. These targets differ in which Windows subsystem they target
+The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
+XP, and Windows Vista, are supported by several different target
+platforms. These targets differ in which Windows subsystem they target
and which C libraries are used.
@itemize
-@item Cygwin @uref{#x-x-cygwin,,*-*-cygwin}: Cygwin provides a user-space
+@item Cygwin @uref{#x-x-cygwin,,*-*-cygwin}: Cygwin provides a user-space
Linux API emulation layer in the Win32 subsystem.
-@item Interix @uref{#x-x-interix,,*-*-interix}: The Interix subsystem
+@item Interix @uref{#x-x-interix,,*-*-interix}: The Interix subsystem
provides native support for POSIX.
-@item MinGW @uref{#x-x-mingw32,,*-*-mingw32}: MinGW is a native GCC port for
+@item MinGW @uref{#x-x-mingw32,,*-*-mingw32}: MinGW is a native GCC port for
the Win32 subsystem that provides a subset of POSIX.
-@item MKS i386-pc-mks: NuTCracker from MKS. See
+@item MKS i386-pc-mks: NuTCracker from MKS. See
@uref{http://www.mkssoftware.com/} for more information.
@end itemize
@subheading Windows CE
-Windows CE is supported as a target only on ARM (arm-wince-pe), Hitachi
+Windows CE is supported as a target only on ARM (arm-wince-pe), Hitachi
SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
@subheading Other Windows Platforms
GCC no longer supports Windows NT on the Alpha or PowerPC.
-GCC no longer supports the Windows POSIX subsystem. However, it does
+GCC no longer supports the Windows POSIX subsystem. However, it does
support the Interix subsystem. See above.
Old target names including *-*-winnt and *-*-windowsnt are no longer used.
-PW32 (i386-pc-pw32) support was never completed, and the project seems to
+PW32 (i386-pc-pw32) support was never completed, and the project seems to
be inactive. See @uref{http://pw32.sourceforge.net/} for more information.
UWIN support has been removed due to a lack of maintenance.
@end html
@heading @anchor{x-x-interix}*-*-interix
-The Interix target is used by OpenNT, Interix, Services For UNIX (SFU),
-and Subsystem for UNIX-based Applications (SUA). Applications compiled
-with this target run in the Interix subsystem, which is separate from
+The Interix target is used by OpenNT, Interix, Services For UNIX (SFU),
+and Subsystem for UNIX-based Applications (SUA). Applications compiled
+with this target run in the Interix subsystem, which is separate from
the Win32 subsystem. This target was last known to work in GCC 3.3.
@html