gccinstall: Specific

1 
1 9 Host/target specific installation notes for GCC
1 *************************************************
1 
1 Please read this document carefully _before_ installing the GNU Compiler
1 Collection on your machine.
1 
1    Note that this list of install notes is _not_ a list of supported
1 hosts or targets.  Not all supported hosts and targets are listed here,
1 only the ones that require host-specific or target-specific information
1 have to.
1 
1 aarch64*-*-*
1 ============
1 
1 Binutils pre 2.24 does not have support for selecting '-mabi' and does
1 not support ILP32.  If it is used to build GCC 4.9 or later, GCC will
1 not support option '-mabi=ilp32'.
1 
1    To enable a workaround for the Cortex-A53 erratum number 835769 by
1 default (for all CPUs regardless of -mcpu option given) at configure
1 time use the '--enable-fix-cortex-a53-835769' option.  This will enable
1 the fix by default and can be explicitly disabled during compilation by
1 passing the '-mno-fix-cortex-a53-835769' option.  Conversely,
1 '--disable-fix-cortex-a53-835769' will disable the workaround by
1 default.  The workaround is disabled by default if neither of
1 '--enable-fix-cortex-a53-835769' or '--disable-fix-cortex-a53-835769' is
1 given at configure time.
1 
1    To enable a workaround for the Cortex-A53 erratum number 843419 by
1 default (for all CPUs regardless of -mcpu option given) at configure
1 time use the '--enable-fix-cortex-a53-843419' option.  This workaround
1 is applied at link time.  Enabling the workaround will cause GCC to pass
1 the relevant option to the linker.  It can be explicitly disabled during
1 compilation by passing the '-mno-fix-cortex-a53-843419' option.
1 Conversely, '--disable-fix-cortex-a53-843419' will disable the
1 workaround by default.  The workaround is disabled by default if neither
1 of '--enable-fix-cortex-a53-843419' or '--disable-fix-cortex-a53-843419'
1 is given at configure time.
1 
1 alpha*-*-*
1 ==========
1 
1 This section contains general configuration information for all
1 Alpha-based platforms using ELF.  In addition to reading this section,
1 please read all other sections that match your target.
1 
1    We require binutils 2.11.2 or newer.  Previous binutils releases had
1 a number of problems with DWARF 2 debugging information, not the least
1 of which is incorrect linking of shared libraries.
1 
1 amd64-*-solaris2.1[0-9]*
1 ========================
1 
1 This is a synonym for 'x86_64-*-solaris2.1[0-9]*'.
1 
1 arc-*-elf32
1 ===========
1 
1 Use 'configure --target=arc-elf32 --with-cpu=CPU
1 --enable-languages="c,c++"' to configure GCC, with CPU being one of
1 'arc600', 'arc601', or 'arc700'.
1 
1 arc-linux-uclibc
1 ================
1 
1 Use 'configure --target=arc-linux-uclibc --with-cpu=arc700
1 --enable-languages="c,c++"' to configure GCC.
1 
1 arm-*-eabi
1 ==========
1 
1 ARM-family processors.
1 
1    Building the Ada frontend commonly fails (an infinite loop executing
1 'xsinfo') if the host compiler is GNAT 4.8.  Host compilers built from
1 the GNAT 4.6, 4.9 or 5 release branches are known to succeed.
1 
1 avr
1 ===
1 
1 ATMEL AVR-family micro controllers.  These are used in embedded
11 applications.  There are no standard Unix configurations.  ⇒AVR
 Options (gcc)AVR Options, for the list of supported MCU types.
1 
1    Use 'configure --target=avr --enable-languages="c"' to configure GCC.
1 
1    Further installation notes and other useful information about AVR
1 tools can also be obtained from:
1 
1    * http://www.nongnu.org/avr/
1    * http://www.amelek.gda.pl/avr/
1 
1    The following error:
1      Error: register required
1 
1    indicates that you should upgrade to a newer version of the binutils.
1 
1 Blackfin
1 ========
1 
11 The Blackfin processor, an Analog Devices DSP. ⇒Blackfin Options
 (gcc)Blackfin Options,
1 
1    More information, and a version of binutils with support for this
1 processor, is available at <https://blackfin.uclinux.org>
1 
1 CR16
1 ====
1 
1 The CR16 CompactRISC architecture is a 16-bit architecture.  This
1 architecture is used in embedded applications.
1 
1    ⇒CR16 Options (gcc)CR16 Options,
1 
1    Use 'configure --target=cr16-elf --enable-languages=c,c++' to
1 configure GCC for building a CR16 elf cross-compiler.
1 
1    Use 'configure --target=cr16-uclinux --enable-languages=c,c++' to
1 configure GCC for building a CR16 uclinux cross-compiler.
1 
1 CRIS
1 ====
1 
1 CRIS is the CPU architecture in Axis Communications ETRAX
1 system-on-a-chip series.  These are used in embedded applications.
1 
1    ⇒CRIS Options (gcc)CRIS Options, for a list of CRIS-specific
1 options.
1 
1    There are a few different CRIS targets:
1 'cris-axis-elf'
1      Mainly for monolithic embedded systems.  Includes a multilib for
1      the 'v10' core used in 'ETRAX 100 LX'.
1 'cris-axis-linux-gnu'
1      A GNU/Linux port for the CRIS architecture, currently targeting
1      'ETRAX 100 LX' by default.
1 
1    Pre-packaged tools can be obtained from
1 <ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/>.  More
1 information about this platform is available at
1 <http://developer.axis.com/>.
1 
1 DOS
1 ===
1 
1 Please have a look at the binaries page.
1 
1    You cannot install GCC by itself on MSDOS; it will not compile under
1 any MSDOS compiler except itself.  You need to get the complete
1 compilation package DJGPP, which includes binaries as well as sources,
1 and includes all the necessary compilation tools and libraries.
1 
1 epiphany-*-elf
1 ==============
1 
1 Adapteva Epiphany.  This configuration is intended for embedded systems.
1 
1 *-*-freebsd*
1 ============
1 
1 Support for FreeBSD 1 was discontinued in GCC 3.2.  Support for FreeBSD
1 2 (and any mutant a.out variants of FreeBSD 3) was discontinued in GCC
1 4.0.
1 
1    In order to better utilize FreeBSD base system functionality and
1 match the configuration of the system compiler, GCC 4.5 and above as
1 well as GCC 4.4 past 2010-06-20 leverage SSP support in libc (which is
1 present on FreeBSD 7 or later) and the use of '__cxa_atexit' by default
1 (on FreeBSD 6 or later).  The use of 'dl_iterate_phdr' inside
1 'libgcc_s.so.1' and boehm-gc (on FreeBSD 7 or later) is enabled by GCC
1 4.5 and above.
1 
1    We support FreeBSD using the ELF file format with DWARF 2 debugging
1 for all CPU architectures.  You may use '-gstabs' instead of '-g', if
1 you really want the old debugging format.  There are no known issues
1 with mixing object files and libraries with different debugging formats.
1 Otherwise, this release of GCC should now match more of the
1 configuration used in the stock FreeBSD configuration of GCC.  In
1 particular, '--enable-threads' is now configured by default.  However,
1 as a general user, do not attempt to replace the system compiler with
1 this release.  Known to bootstrap and check with good results on FreeBSD
1 7.2-STABLE.  In the past, known to bootstrap and check with good results
1 on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4, 4.5, 4.8, 4.9 and 5-CURRENT.
1 
1    The version of binutils installed in '/usr/bin' probably works with
1 this release of GCC.  Bootstrapping against the latest GNU binutils
1 and/or the version found in '/usr/ports/devel/binutils' has been known
1 to enable additional features and improve overall testsuite results.
1 However, it is currently known that boehm-gc may not configure properly
1 on FreeBSD prior to the FreeBSD 7.0 release with GNU binutils after
1 2.16.1.
1 
1 ft32-*-elf
1 ==========
1 
1 The FT32 processor.  This configuration is intended for embedded
1 systems.
1 
1 h8300-hms
1 =========
1 
1 Renesas H8/300 series of processors.
1 
1    Please have a look at the binaries page.
1 
1    The calling convention and structure layout has changed in release
1 2.6.  All code must be recompiled.  The calling convention now passes
1 the first three arguments in function calls in registers.  Structures
1 are no longer a multiple of 2 bytes.
1 
1 hppa*-hp-hpux*
1 ==============
1 
1 Support for HP-UX version 9 and older was discontinued in GCC 3.4.
1 
1    We require using gas/binutils on all hppa platforms.  Version 2.19 or
1 later is recommended.
1 
1    It may be helpful to configure GCC with the '--with-gnu-as' and
1 '--with-as=...' options to ensure that GCC can find GAS.
1 
1    The HP assembler should not be used with GCC. It is rarely tested and
1 may not work.  It shouldn't be used with any languages other than C due
1 to its many limitations.
1 
1    Specifically, '-g' does not work (HP-UX uses a peculiar debugging
1 format which GCC does not know about).  It also inserts timestamps into
1 each object file it creates, causing the 3-stage comparison test to fail
1 during a bootstrap.  You should be able to continue by saying 'make
1 all-host all-target' after getting the failure from 'make'.
1 
1    Various GCC features are not supported.  For example, it does not
1 support weak symbols or alias definitions.  As a result, explicit
1 template instantiations are required when using C++.  This makes it
1 difficult if not impossible to build many C++ applications.
1 
1    There are two default scheduling models for instructions.  These are
1 PROCESSOR_7100LC and PROCESSOR_8000.  They are selected from the pa-risc
1 architecture specified for the target machine when configuring.
1 PROCESSOR_8000 is the default.  PROCESSOR_7100LC is selected when the
1 target is a 'hppa1*' machine.
1 
1    The PROCESSOR_8000 model is not well suited to older processors.
1 Thus, it is important to completely specify the machine architecture
1 when configuring if you want a model other than PROCESSOR_8000.  The
1 macro TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different
1 default scheduling model is desired.
1 
1    As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10 through
1 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later.  This
1 namespace change might cause problems when bootstrapping with an earlier
1 version of GCC or the HP compiler as essentially the same namespace is
1 required for an entire build.  This problem can be avoided in a number
1 of ways.  With HP cc, 'UNIX_STD' can be set to '95' or '98'.  Another
1 way is to add an appropriate set of predefines to 'CC'.  The description
1 for the 'munix=' option contains a list of the predefines used with each
1 standard.
1 
1    More specific information to 'hppa*-hp-hpux*' targets follows.
1 
1 hppa*-hp-hpux10
1 ===============
1 
1 For hpux10.20, we _highly_ recommend you pick up the latest sed patch
1 'PHCO_19798' from HP.
1 
1    The C++ ABI has changed incompatibly in GCC 4.0.  COMDAT subspaces
1 are used for one-only code and data.  This resolves many of the previous
1 problems in using C++ on this target.  However, the ABI is not
1 compatible with the one implemented under HP-UX 11 using secondary
1 definitions.
1 
1 hppa*-hp-hpux11
1 ===============
1 
1 GCC 3.0 and up support HP-UX 11.  GCC 2.95.x is not supported and cannot
1 be used to compile GCC 3.0 and up.
1 
1    The libffi library haven't been ported to 64-bit HP-UX and doesn't
1 build.
1 
1    Refer to binaries for information about obtaining precompiled GCC
1 binaries for HP-UX.  Precompiled binaries must be obtained to build the
1 Ada language as it cannot be bootstrapped using C.  Ada is only
1 available for the 32-bit PA-RISC runtime.
1 
1    Starting with GCC 3.4 an ISO C compiler is required to bootstrap.
1 The bundled compiler supports only traditional C; you will need either
1 HP's unbundled compiler, or a binary distribution of GCC.
1 
1    It is possible to build GCC 3.3 starting with the bundled HP
1 compiler, but the process requires several steps.  GCC 3.3 can then be
1 used to build later versions.
1 
1    There are several possible approaches to building the distribution.
1 Binutils can be built first using the HP tools.  Then, the GCC
1 distribution can be built.  The second approach is to build GCC first
1 using the HP tools, then build binutils, then rebuild GCC.  There have
1 been problems with various binary distributions, so it is best not to
1 start from a binary distribution.
1 
1    On 64-bit capable systems, there are two distinct targets.  Different
1 installation prefixes must be used if both are to be installed on the
1 same system.  The 'hppa[1-2]*-hp-hpux11*' target generates code for the
1 32-bit PA-RISC runtime architecture and uses the HP linker.  The
1 'hppa64-hp-hpux11*' target generates 64-bit code for the PA-RISC 2.0
1 architecture.
1 
1    The script config.guess now selects the target type based on the
1 compiler detected during configuration.  You must define 'PATH' or 'CC'
1 so that configure finds an appropriate compiler for the initial
1 bootstrap.  When 'CC' is used, the definition should contain the options
1 that are needed whenever 'CC' is used.
1 
1    Specifically, options that determine the runtime architecture must be
1 in 'CC' to correctly select the target for the build.  It is also
1 convenient to place many other compiler options in 'CC'.  For example,
1 'CC="cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE"' can be
1 used to bootstrap the GCC 3.3 branch with the HP compiler in 64-bit
1 K&R/bundled mode.  The '+DA2.0W' option will result in the automatic
1 selection of the 'hppa64-hp-hpux11*' target.  The macro definition table
1 of cpp needs to be increased for a successful build with the HP
1 compiler.  _CLASSIC_TYPES and _HPUX_SOURCE need to be defined when
1 building with the bundled compiler, or when using the '-Ac' option.
1 These defines aren't necessary with '-Ae'.
1 
1    It is best to explicitly configure the 'hppa64-hp-hpux11*' target
1 with the '--with-ld=...' option.  This overrides the standard search for
1 ld.  The two linkers supported on this target require different
1 commands.  The default linker is determined during configuration.  As a
1 result, it's not possible to switch linkers in the middle of a GCC
1 build.  This has been reported to sometimes occur in unified builds of
1 binutils and GCC.
1 
1    A recent linker patch must be installed for the correct operation of
1 GCC 3.3 and later.  'PHSS_26559' and 'PHSS_24304' are the oldest linker
1 patches that are known to work.  They are for HP-UX 11.00 and 11.11,
1 respectively.  'PHSS_24303', the companion to 'PHSS_24304', might be
1 usable but it hasn't been tested.  These patches have been superseded.
1 Consult the HP patch database to obtain the currently recommended linker
1 patch for your system.
1 
1    The patches are necessary for the support of weak symbols on the
1 32-bit port, and for the running of initializers and finalizers.  Weak
1 symbols are implemented using SOM secondary definition symbols.  Prior
1 to HP-UX 11, there are bugs in the linker support for secondary symbols.
1 The patches correct a problem of linker core dumps creating shared
1 libraries containing secondary symbols, as well as various other linking
1 issues involving secondary symbols.
1 
1    GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to
1 run initializers and finalizers on the 64-bit port.  The 32-bit port
1 uses the linker '+init' and '+fini' options for the same purpose.  The
1 patches correct various problems with the +init/+fini options, including
1 program core dumps.  Binutils 2.14 corrects a problem on the 64-bit port
1 resulting from HP's non-standard use of the .init and .fini sections for
1 array initializers and finalizers.
1 
1    Although the HP and GNU linkers are both supported for the
1 'hppa64-hp-hpux11*' target, it is strongly recommended that the HP
1 linker be used for link editing on this target.
1 
1    At this time, the GNU linker does not support the creation of long
1 branch stubs.  As a result, it cannot successfully link binaries
1 containing branch offsets larger than 8 megabytes.  In addition, there
1 are problems linking shared libraries, linking executables with
1 '-static', and with dwarf2 unwind and exception support.  It also
1 doesn't provide stubs for internal calls to global functions in shared
1 libraries, so these calls cannot be overloaded.
1 
1    The HP dynamic loader does not support GNU symbol versioning, so
1 symbol versioning is not supported.  It may be necessary to disable
1 symbol versioning with '--disable-symvers' when using GNU ld.
1 
1    POSIX threads are the default.  The optional DCE thread library is
1 not supported, so '--enable-threads=dce' does not work.
1 
1 *-*-linux-gnu
1 =============
1 
1 Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
1 in glibc 2.2.5 and later.  More information is available in the
1 libstdc++-v3 documentation.
1 
1 i?86-*-linux*
1 =============
1 
1 As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
1 See bug 10877 for more information.
1 
1    If you receive Signal 11 errors when building on GNU/Linux, then it
1 is possible you have a hardware problem.  Further information on this
1 can be found on www.bitwizard.nl.
1 
1 i?86-*-solaris2.10
1 ==================
1 
1 Use this for Solaris 10 or later on x86 and x86-64 systems.  Starting
1 with GCC 4.7, there is also a 64-bit 'amd64-*-solaris2.1[0-9]*' or
1 'x86_64-*-solaris2.1[0-9]*' configuration that corresponds to
1 'sparcv9-sun-solaris2*'.
1 
1    It is recommended that you configure GCC to use the GNU assembler.
1 The versions included in Solaris 10, from GNU binutils 2.15 (in
1 '/usr/sfw/bin/gas'), and Solaris 11, from GNU binutils 2.19 or newer
1 (also available as '/usr/bin/gas' and '/usr/gnu/bin/as'), work fine.
1 The current version, from GNU binutils 2.29, is known to work, but the
1 version from GNU binutils 2.26 must be avoided.  Recent versions of the
1 Solaris assembler in '/usr/ccs/bin/as' work almost as well, though.
1 
1    For linking, the Solaris linker, is preferred.  If you want to use
1 the GNU linker instead, note that due to a packaging bug the version in
1 Solaris 10, from GNU binutils 2.15 (in '/usr/sfw/bin/gld'), cannot be
1 used, while the version in Solaris 11, from GNU binutils 2.19 or newer
1 (also in '/usr/gnu/bin/ld' and '/usr/bin/gld'), works, as does the
1 latest version, from GNU binutils 2.29.
1 
1    To use GNU 'as', configure with the options '--with-gnu-as
1 --with-as=/usr/sfw/bin/gas'.  It may be necessary to configure with
1 '--without-gnu-ld --with-ld=/usr/ccs/bin/ld' to guarantee use of Sun
1 'ld'.
1 
1 ia64-*-linux
1 ============
1 
1 IA-64 processor (also known as IPF, or Itanium Processor Family) running
1 GNU/Linux.
1 
1    If you are using the installed system libunwind library with
1 '--with-system-libunwind', then you must use libunwind 0.98 or later.
1 
1    None of the following versions of GCC has an ABI that is compatible
1 with any of the other versions in this list, with the exception that Red
1 Hat 2.96 and Trillian 000171 are compatible with each other: 3.1, 3.0.2,
1 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717.  This primarily affects
1 C++ programs and programs that create shared libraries.  GCC 3.1 or
1 later is recommended for compiling linux, the kernel.  As of version 3.1
1 GCC is believed to be fully ABI compliant, and hence no more major ABI
1 changes are expected.
1 
1 ia64-*-hpux*
1 ============
1 
1 Building GCC on this target requires the GNU Assembler.  The bundled HP
1 assembler will not work.  To prevent GCC from using the wrong assembler,
1 the option '--with-gnu-as' may be necessary.
1 
1    The GCC libunwind library has not been ported to HPUX.  This means
1 that for GCC versions 3.2.3 and earlier, '--enable-libunwind-exceptions'
1 is required to build GCC.  For GCC 3.3 and later, this is the default.
1 For gcc 3.4.3 and later, '--enable-libunwind-exceptions' is removed and
1 the system libunwind library will always be used.
1 
1 *-ibm-aix*
1 ==========
1 
1 Support for AIX version 3 and older was discontinued in GCC 3.4.
1 Support for AIX version 4.2 and older was discontinued in GCC 4.5.
1 
1    "out of memory" bootstrap failures may indicate a problem with
1 process resource limits (ulimit).  Hard limits are configured in the
1 '/etc/security/limits' system configuration file.
1 
1    GCC 4.9 and above require a C++ compiler for bootstrap.  IBM VAC++ /
1 xlC cannot bootstrap GCC. xlc can bootstrap an older version of GCC and
1 G++ can bootstrap recent releases of GCC.
1 
1    GCC can bootstrap with recent versions of IBM XLC, but bootstrapping
1 with an earlier release of GCC is recommended.  Bootstrapping with XLC
1 requires a larger data segment, which can be enabled through the
1 LDR_CNTRL environment variable, e.g.,
1 
1      % LDR_CNTRL=MAXDATA=0x50000000
1      % export LDR_CNTRL
1 
1    One can start with a pre-compiled version of GCC to build from
1 sources.  One may delete GCC's "fixed" header files when starting with a
1 version of GCC built for an earlier release of AIX.
1 
1    To speed up the configuration phases of bootstrapping and installing
1 GCC, one may use GNU Bash instead of AIX '/bin/sh', e.g.,
1 
1      % CONFIG_SHELL=/opt/freeware/bin/bash
1      % export CONFIG_SHELL
1 
1    and then proceed as described in the build instructions, where we
1 strongly recommend specifying an absolute path to invoke
1 SRCDIR/configure.
1 
1    Because GCC on AIX is built as a 32-bit executable by default,
1 (although it can generate 64-bit programs) the GMP and MPFR libraries
1 required by gfortran must be 32-bit libraries.  Building GMP and MPFR as
1 static archive libraries works better than shared libraries.
1 
1    Errors involving 'alloca' when building GCC generally are due to an
1 incorrect definition of 'CC' in the Makefile or mixing files compiled
1 with the native C compiler and GCC.  During the stage1 phase of the
1 build, the native AIX compiler *must* be invoked as 'cc' (not 'xlc').
1 Once 'configure' has been informed of 'xlc', one needs to use 'make
1 distclean' to remove the configure cache files and ensure that 'CC'
1 environment variable does not provide a definition that will confuse
1 'configure'.  If this error occurs during stage2 or later, then the
1 problem most likely is the version of Make (see above).
1 
1    The native 'as' and 'ld' are recommended for bootstrapping on AIX.
1 The GNU Assembler, GNU Linker, and GNU Binutils version 2.20 is the
1 minimum level that supports bootstrap on AIX 5.  The GNU Assembler has
1 not been updated to support AIX 6 or AIX 7.  The native AIX tools do
1 interoperate with GCC.
1 
1    AIX 7.1 added partial support for DWARF debugging, but full support
1 requires AIX 7.1 TL03 SP7 that supports additional DWARF sections and
1 fixes a bug in the assembler.  AIX 7.1 TL03 SP5 distributed a version of
1 libm.a missing important symbols; a fix for IV77796 will be included in
1 SP6.
1 
1    AIX 5.3 TL10, AIX 6.1 TL05 and AIX 7.1 TL00 introduced an AIX
1 assembler change that sometimes produces corrupt assembly files causing
1 AIX linker errors.  The bug breaks GCC bootstrap on AIX and can cause
1 compilation failures with existing GCC installations.  An AIX iFix for
1 AIX 5.3 is available (APAR IZ98385 for AIX 5.3 TL10, APAR IZ98477 for
1 AIX 5.3 TL11 and IZ98134 for AIX 5.3 TL12).  AIX 5.3 TL11 SP8, AIX 5.3
1 TL12 SP5, AIX 6.1 TL04 SP11, AIX 6.1 TL05 SP7, AIX 6.1 TL06 SP6, AIX 6.1
1 TL07 and AIX 7.1 TL01 should include the fix.
1 
1    Building 'libstdc++.a' requires a fix for an AIX Assembler bug APAR
1 IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1).  It also requires a fix for
1 another AIX Assembler bug and a co-dependent AIX Archiver fix referenced
1 as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
1 
1    'libstdc++' in GCC 3.4 increments the major version number of the
1 shared object and GCC installation places the 'libstdc++.a' shared
1 library in a common location which will overwrite the and GCC 3.3
1 version of the shared library.  Applications either need to be re-linked
1 against the new shared library or the GCC 3.1 and GCC 3.3 versions of
1 the 'libstdc++' shared object needs to be available to the AIX runtime
1 loader.  The GCC 3.1 'libstdc++.so.4', if present, and GCC 3.3
1 'libstdc++.so.5' shared objects can be installed for runtime dynamic
1 loading using the following steps to set the 'F_LOADONLY' flag in the
1 shared object for _each_ multilib 'libstdc++.a' installed:
1 
1    Extract the shared objects from the currently installed 'libstdc++.a'
1 archive:
1      % ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
1 
1    Enable the 'F_LOADONLY' flag so that the shared object will be
1 available for runtime dynamic loading, but not linking:
1      % strip -e libstdc++.so.4 libstdc++.so.5
1 
1    Archive the runtime-only shared object in the GCC 3.4 'libstdc++.a'
1 archive:
1      % ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
1 
1    Eventually, the '--with-aix-soname=svr4' configure option may drop
1 the need for this procedure for libraries that support it.
1 
1    Linking executables and shared libraries may produce warnings of
1 duplicate symbols.  The assembly files generated by GCC for AIX always
1 have included multiple symbol definitions for certain global variable
1 and function declarations in the original program.  The warnings should
1 not prevent the linker from producing a correct library or runnable
1 executable.
1 
1    AIX 4.3 utilizes a "large format" archive to support both 32-bit and
1 64-bit object modules.  The routines provided in AIX 4.3.0 and AIX 4.3.1
1 to parse archive libraries did not handle the new format correctly.
1 These routines are used by GCC and result in error messages during
1 linking such as "not a COFF file".  The version of the routines shipped
1 with AIX 4.3.1 should work for a 32-bit environment.  The '-g' option of
1 the archive command may be used to create archives of 32-bit objects
1 using the original "small format".  A correct version of the routines is
1 shipped with AIX 4.3.2 and above.
1 
1    Some versions of the AIX binder (linker) can fail with a relocation
1 overflow severe error when the '-bbigtoc' option is used to link
1 GCC-produced object files into an executable that overflows the TOC.  A
1 fix for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC)
1 is available from IBM Customer Support and from its
1 techsupport.services.ibm.com website as PTF U455193.
1 
1    The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump
1 core with a segmentation fault when invoked by any version of GCC.  A
1 fix for APAR IX87327 is available from IBM Customer Support and from its
1 techsupport.services.ibm.com website as PTF U461879.  This fix is
1 incorporated in AIX 4.3.3 and above.
1 
1    The initial assembler shipped with AIX 4.3.0 generates incorrect
1 object files.  A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM
1 COMPILER FAILS TO ASSEMBLE/BIND) is available from IBM Customer Support
1 and from its techsupport.services.ibm.com website as PTF U453956.  This
1 fix is incorporated in AIX 4.3.1 and above.
1 
1    AIX provides National Language Support (NLS).  Compilers and
1 assemblers use NLS to support locale-specific representations of various
1 data formats including floating-point numbers (e.g., '.' vs ',' for
1 separating decimal fractions).  There have been problems reported where
1 GCC does not produce the same floating-point formats that the assembler
1 expects.  If one encounters this problem, set the 'LANG' environment
1 variable to 'C' or 'En_US'.
1 
1    A default can be specified with the '-mcpu=CPU_TYPE' switch and using
1 the configure option '--with-cpu-CPU_TYPE'.
1 
1 iq2000-*-elf
1 ============
1 
1 Vitesse IQ2000 processors.  These are used in embedded applications.
1 There are no standard Unix configurations.
1 
1 lm32-*-elf
1 ==========
1 
1 Lattice Mico32 processor.  This configuration is intended for embedded
1 systems.
1 
1 lm32-*-uclinux
1 ==============
1 
1 Lattice Mico32 processor.  This configuration is intended for embedded
1 systems running uClinux.
1 
1 m32c-*-elf
1 ==========
1 
1 Renesas M32C processor.  This configuration is intended for embedded
1 systems.
1 
1 m32r-*-elf
1 ==========
1 
1 Renesas M32R processor.  This configuration is intended for embedded
1 systems.
1 
1 m68k-*-*
1 ========
1 
1 By default, 'm68k-*-elf*', 'm68k-*-rtems', 'm68k-*-uclinux' and
1 'm68k-*-linux' build libraries for both M680x0 and ColdFire processors.
1 If you only need the M680x0 libraries, you can omit the ColdFire ones by
1 passing '--with-arch=m68k' to 'configure'.  Alternatively, you can omit
1 the M680x0 libraries by passing '--with-arch=cf' to 'configure'.  These
1 targets default to 5206 or 5475 code as appropriate for the target
1 system when configured with '--with-arch=cf' and 68020 code otherwise.
1 
1    The 'm68k-*-netbsd' and 'm68k-*-openbsd' targets also support the
1 '--with-arch' option.  They will generate ColdFire CFV4e code when
1 configured with '--with-arch=cf' and 68020 code otherwise.
1 
1    You can override the default processors listed above by configuring
1 with '--with-cpu=TARGET'.  This TARGET can either be a '-mcpu' argument
1 or one of the following values: 'm68000', 'm68010', 'm68020', 'm68030',
1 'm68040', 'm68060', 'm68020-40' and 'm68020-60'.
1 
1    GCC requires at least binutils version 2.17 on these targets.
1 
1 m68k-*-uclinux
1 ==============
1 
1 GCC 4.3 changed the uClinux configuration so that it uses the
1 'm68k-linux-gnu' ABI rather than the 'm68k-elf' ABI. It also added
1 improved support for C++ and flat shared libraries, both of which were
1 ABI changes.
1 
1 microblaze-*-elf
1 ================
1 
1 Xilinx MicroBlaze processor.  This configuration is intended for
1 embedded systems.
1 
1 mips-*-*
1 ========
1 
1 If on a MIPS system you get an error message saying "does not have gp
1 sections for all it's [sic] sectons [sic]", don't worry about it.  This
1 happens whenever you use GAS with the MIPS linker, but there is not
1 really anything wrong, and it is okay to use the output file.  You can
1 stop such warnings by installing the GNU linker.
1 
1    It would be nice to extend GAS to produce the gp tables, but they are
1 optional, and there should not be a warning about their absence.
1 
1    The libstdc++ atomic locking routines for MIPS targets requires MIPS
1 II and later.  A patch went in just after the GCC 3.3 release to make
1 'mips*-*-*' use the generic implementation instead.  You can also
1 configure for 'mipsel-elf' as a workaround.  The 'mips*-*-linux*' target
1 continues to use the MIPS II routines.  More work on this is expected in
1 future releases.
1 
1    The built-in '__sync_*' functions are available on MIPS II and later
1 systems and others that support the 'll', 'sc' and 'sync' instructions.
1 This can be overridden by passing '--with-llsc' or '--without-llsc' when
1 configuring GCC. Since the Linux kernel emulates these instructions if
1 they are missing, the default for 'mips*-*-linux*' targets is
1 '--with-llsc'.  The '--with-llsc' and '--without-llsc' configure options
1 may be overridden at compile time by passing the '-mllsc' or '-mno-llsc'
1 options to the compiler.
1 
1    MIPS systems check for division by zero (unless
1 '-mno-check-zero-division' is passed to the compiler) by generating
1 either a conditional trap or a break instruction.  Using trap results in
1 smaller code, but is only supported on MIPS II and later.  Also, some
1 versions of the Linux kernel have a bug that prevents trap from
1 generating the proper signal ('SIGFPE').  To enable the use of break,
1 use the '--with-divide=breaks' 'configure' option when configuring GCC.
1 The default is to use traps on systems that support them.
1 
1 moxie-*-elf
1 ===========
1 
1 The moxie processor.
1 
1 msp430-*-elf
1 ============
1 
1 TI MSP430 processor.  This configuration is intended for embedded
1 systems.
1 
1 nds32le-*-elf
1 =============
1 
1 Andes NDS32 target in little endian mode.
1 
1 nds32be-*-elf
1 =============
1 
1 Andes NDS32 target in big endian mode.
1 
1 nvptx-*-none
1 ============
1 
1 Nvidia PTX target.
1 
1    Instead of GNU binutils, you will need to install nvptx-tools.  Tell
1 GCC where to find it:
1 '--with-build-time-tools=[install-nvptx-tools]/nvptx-none/bin'.
1 
1    You will need newlib 3.0 git revision
1 cd31fbb2aea25f94d7ecedc9db16dfc87ab0c316 or later.  It can be
1 automatically built together with GCC.  For this, add a symbolic link to
1 nvptx-newlib's 'newlib' directory to the directory containing the GCC
1 sources.
1 
1    Use the '--disable-sjlj-exceptions' and
1 '--enable-newlib-io-long-long' options when configuring.
1 
1 powerpc-*-*
1 ===========
1 
1 You can specify a default version for the '-mcpu=CPU_TYPE' switch by
1 using the configure option '--with-cpu-CPU_TYPE'.
1 
1    You will need GNU binutils 2.15 or newer.
1 
1 powerpc-*-darwin*
1 =================
1 
1 PowerPC running Darwin (Mac OS X kernel).
1 
1    Pre-installed versions of Mac OS X may not include any developer
1 tools, meaning that you will not be able to build GCC from source.  Tool
1 binaries are available at <https://opensource.apple.com>.
1 
1    This version of GCC requires at least cctools-590.36.  The
1 cctools-590.36 package referenced from
1 <http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html> will not work on
1 systems older than 10.3.9 (aka darwin7.9.0).
1 
1 powerpc-*-elf
1 =============
1 
1 PowerPC system in big endian mode, running System V.4.
1 
1 powerpc*-*-linux-gnu*
1 =====================
1 
1 PowerPC system in big endian mode running Linux.
1 
1 powerpc-*-netbsd*
1 =================
1 
1 PowerPC system in big endian mode running NetBSD.
1 
1 powerpc-*-eabisim
1 =================
1 
1 Embedded PowerPC system in big endian mode for use in running under the
1 PSIM simulator.
1 
1 powerpc-*-eabi
1 ==============
1 
1 Embedded PowerPC system in big endian mode.
1 
1 powerpcle-*-elf
1 ===============
1 
1 PowerPC system in little endian mode, running System V.4.
1 
1 powerpcle-*-eabisim
1 ===================
1 
1 Embedded PowerPC system in little endian mode for use in running under
1 the PSIM simulator.
1 
1 powerpcle-*-eabi
1 ================
1 
1 Embedded PowerPC system in little endian mode.
1 
1 rl78-*-elf
1 ==========
1 
1 The Renesas RL78 processor.  This configuration is intended for embedded
1 systems.
1 
1 riscv32-*-elf
1 =============
1 
1 The RISC-V RV32 instruction set.  This configuration is intended for
1 embedded systems.  This (and all other RISC-V) targets are supported
1 upstream as of the binutils 2.28 release.
1 
1 riscv32-*-linux
1 ===============
1 
1 The RISC-V RV32 instruction set running GNU/Linux.  This (and all other
1 RISC-V) targets are supported upstream as of the binutils 2.28 release.
1 
1 riscv64-*-elf
1 =============
1 
1 The RISC-V RV64 instruction set.  This configuration is intended for
1 embedded systems.  This (and all other RISC-V) targets are supported
1 upstream as of the binutils 2.28 release.
1 
1 riscv64-*-linux
1 ===============
1 
1 The RISC-V RV64 instruction set running GNU/Linux.  This (and all other
1 RISC-V) targets are supported upstream as of the binutils 2.28 release.
1 
1 rx-*-elf
1 ========
1 
1 The Renesas RX processor.
1 
1 s390-*-linux*
1 =============
1 
1 S/390 system running GNU/Linux for S/390.
1 
1 s390x-*-linux*
1 ==============
1 
1 zSeries system (64-bit) running GNU/Linux for zSeries.
1 
1 s390x-ibm-tpf*
1 ==============
1 
1 zSeries system (64-bit) running TPF.  This platform is supported as
1 cross-compilation target only.
1 
1 *-*-solaris2*
1 =============
1 
1 Support for Solaris 9 has been removed in GCC 5.  Support for Solaris 8
1 has been removed in GCC 4.8.  Support for Solaris 7 has been removed in
1 GCC 4.6.
1 
1    Sun does not ship a C compiler with Solaris 2 before Solaris 10,
1 though you can download the Sun Studio compilers for free.  In Solaris
1 10 and 11, GCC 3.4.3 is available as '/usr/sfw/bin/gcc'.  Solaris 11
1 also provides GCC 4.5.2, 4.7.3, and 4.8.2 as '/usr/gcc/4.5/bin/gcc' or
1 similar.  Alternatively, you can install a pre-built GCC to bootstrap
1 and install GCC. See the binaries page for details.
1 
1    The Solaris 2 '/bin/sh' will often fail to configure 'libstdc++-v3'or
1 'boehm-gc'.  We therefore recommend using the following initial sequence
1 of commands
1 
1      % CONFIG_SHELL=/bin/ksh
1      % export CONFIG_SHELL
1 
1 and proceed as described in the configure instructions.  In addition we
1 strongly recommend specifying an absolute path to invoke
1 'SRCDIR/configure'.
1 
1    Solaris 10 comes with a number of optional OS packages.  Some of
1 these are needed to use GCC fully, namely 'SUNWarc', 'SUNWbtool',
1 'SUNWesu', 'SUNWhea', 'SUNWlibm', 'SUNWsprot', and 'SUNWtoo'.  If you
1 did not install all optional packages when installing Solaris 10, you
1 will need to verify that the packages that GCC needs are installed.  To
1 check whether an optional package is installed, use the 'pkginfo'
1 command.  To add an optional package, use the 'pkgadd' command.  For
1 further details, see the Solaris 10 documentation.
1 
1    Starting with Solaris 11, the package management has changed, so you
1 need to check for 'system/header', 'system/linker', and
1 'developer/assembler' packages.  Checking for and installing packages is
1 done with the 'pkg' command now.
1 
1    Trying to use the linker and other tools in '/usr/ucb' to install GCC
1 has been observed to cause trouble.  For example, the linker may hang
1 indefinitely.  The fix is to remove '/usr/ucb' from your 'PATH'.
1 
1    The build process works more smoothly with the legacy Sun tools so,
1 if you have '/usr/xpg4/bin' in your 'PATH', we recommend that you place
1 '/usr/bin' before '/usr/xpg4/bin' for the duration of the build.
1 
1    We recommend the use of the Solaris assembler or the GNU assembler,
1 in conjunction with the Solaris linker.  The GNU 'as' versions included
1 in Solaris 10, from GNU binutils 2.15 (in '/usr/sfw/bin/gas'), and
1 Solaris 11, from GNU binutils 2.19 or newer (also in '/usr/bin/gas' and
1 '/usr/gnu/bin/as'), are known to work.  The current version, from GNU
1 binutils 2.29, is known to work as well.  Note that your mileage may
1 vary if you use a combination of the GNU tools and the Solaris tools:
1 while the combination GNU 'as' + Sun 'ld' should reasonably work, the
1 reverse combination Sun 'as' + GNU 'ld' may fail to build or cause
1 memory corruption at runtime in some cases for C++ programs.  GNU 'ld'
1 usually works as well, although the version included in Solaris 10
1 cannot be used due to several bugs.  Again, the current version (2.29)
1 is known to work, but generally lacks platform specific features, so
1 better stay with Solaris 'ld'.  To use the LTO linker plugin
1 ('-fuse-linker-plugin') with GNU 'ld', GNU binutils _must_ be configured
1 with '--enable-largefile'.
1 
1    To enable symbol versioning in 'libstdc++' with the Solaris linker,
1 you need to have any version of GNU 'c++filt', which is part of GNU
1 binutils.  'libstdc++' symbol versioning will be disabled if no
1 appropriate version is found.  Solaris 'c++filt' from the Solaris Studio
1 compilers does _not_ work.
1 
1    Sun bug 4927647 sometimes causes random spurious testsuite failures
1 related to missing diagnostic output.  This bug doesn't affect GCC
1 itself, rather it is a kernel bug triggered by the 'expect' program
1 which is used only by the GCC testsuite driver.  When the bug causes the
1 'expect' program to miss anticipated output, extra testsuite failures
1 appear.
1 
1 sparc*-*-*
1 ==========
1 
1 This section contains general configuration information for all
1 SPARC-based platforms.  In addition to reading this section, please read
1 all other sections that match your target.
1 
1    Newer versions of the GNU Multiple Precision Library (GMP), the MPFR
1 library and the MPC library are known to be miscompiled by earlier
1 versions of GCC on these platforms.  We therefore recommend the use of
1 the exact versions of these libraries listed as minimal versions in the
1 prerequisites.
1 
1 sparc-sun-solaris2*
1 ===================
1 
1 When GCC is configured to use GNU binutils 2.14 or later, the binaries
1 produced are smaller than the ones produced using Sun's native tools;
1 this difference is quite significant for binaries containing debugging
1 information.
1 
1    Starting with Solaris 7, the operating system is capable of executing
1 64-bit SPARC V9 binaries.  GCC 3.1 and later properly supports this; the
1 '-m64' option enables 64-bit code generation.  However, if all you want
1 is code tuned for the UltraSPARC CPU, you should try the
1 '-mtune=ultrasparc' option instead, which produces code that, unlike
1 full 64-bit code, can still run on non-UltraSPARC machines.
1 
1    When configuring the GNU Multiple Precision Library (GMP), the MPFR
1 library or the MPC library on a Solaris 7 or later system, the canonical
1 target triplet must be specified as the 'build' parameter on the
1 configure line.  This target triplet can be obtained by invoking
1 './config.guess' in the toplevel source directory of GCC (and not that
1 of GMP or MPFR or MPC). For example on a Solaris 9 system:
1 
1      % ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
1 
1 sparc-sun-solaris2.10
1 =====================
1 
1 There is a bug in older versions of the Sun assembler which breaks
1 thread-local storage (TLS). A typical error message is
1 
1      ld: fatal: relocation error: R_SPARC_TLS_LE_HIX22: file /var/tmp//ccamPA1v.o:
1        symbol <unknown>: bad symbol type SECT: symbol type must be TLS
1 
1 This bug is fixed in Sun patch 118683-03 or later.
1 
1 sparc-*-linux*
1 ==============
1 
1 sparc64-*-solaris2*
1 ===================
1 
1 When configuring the GNU Multiple Precision Library (GMP), the MPFR
1 library or the MPC library, the canonical target triplet must be
1 specified as the 'build' parameter on the configure line.  For example
1 on a Solaris 9 system:
1 
1      % ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
1 
1 sparcv9-*-solaris2*
1 ===================
1 
1 This is a synonym for 'sparc64-*-solaris2*'.
1 
1 c6x-*-*
1 =======
1 
1 The C6X family of processors.  This port requires binutils-2.22 or
1 newer.
1 
1 tilegx-*-linux*
1 ===============
1 
1 The TILE-Gx processor in little endian mode, running GNU/Linux.  This
1 port requires binutils-2.22 or newer.
1 
1 tilegxbe-*-linux*
1 =================
1 
1 The TILE-Gx processor in big endian mode, running GNU/Linux.  This port
1 requires binutils-2.23 or newer.
1 
1 tilepro-*-linux*
1 ================
1 
1 The TILEPro processor running GNU/Linux.  This port requires
1 binutils-2.22 or newer.
1 
1 visium-*-elf
1 ============
1 
1 CDS VISIUMcore processor.  This configuration is intended for embedded
1 systems.
1 
1 *-*-vxworks*
1 ============
1 
1 Support for VxWorks is in flux.  At present GCC supports _only_ the very
1 recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC.  We
1 welcome patches for other architectures supported by VxWorks 5.5.
1 Support for VxWorks AE would also be welcome; we believe this is merely
1 a matter of writing an appropriate "configlette" (see below).  We are
1 not interested in supporting older, a.out or COFF-based, versions of
1 VxWorks in GCC 3.
1 
1    VxWorks comes with an older version of GCC installed in
1 '$WIND_BASE/host'; we recommend you do not overwrite it.  Choose an
1 installation PREFIX entirely outside $WIND_BASE.  Before running
1 'configure', create the directories 'PREFIX' and 'PREFIX/bin'.  Link or
1 copy the appropriate assembler, linker, etc. into 'PREFIX/bin', and set
1 your PATH to include that directory while running both 'configure' and
1 'make'.
1 
1    You must give 'configure' the '--with-headers=$WIND_BASE/target/h'
1 switch so that it can find the VxWorks system headers.  Since VxWorks is
1 a cross compilation target only, you must also specify
1 '--target=TARGET'.  'configure' will attempt to create the directory
1 'PREFIX/TARGET/sys-include' and copy files into it; make sure the user
1 running 'configure' has sufficient privilege to do so.
1 
1    GCC's exception handling runtime requires a special "configlette"
1 module, 'contrib/gthr_supp_vxw_5x.c'.  Follow the instructions in that
1 file to add the module to your kernel build.  (Future versions of
1 VxWorks will incorporate this module.)
1 
1 x86_64-*-*, amd64-*-*
1 =====================
1 
1 GCC supports the x86-64 architecture implemented by the AMD64 processor
1 (amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
1 On GNU/Linux the default is a bi-arch compiler which is able to generate
1 both 64-bit x86-64 and 32-bit x86 code (via the '-m32' switch).
1 
1 x86_64-*-solaris2.1[0-9]*
1 =========================
1 
1 GCC also supports the x86-64 architecture implemented by the AMD64
1 processor ('amd64-*-*' is an alias for 'x86_64-*-*') on Solaris 10 or
1 later.  Unlike other systems, without special options a bi-arch compiler
1 is built which generates 32-bit code by default, but can generate 64-bit
1 x86-64 code with the '-m64' switch.  Since GCC 4.7, there is also a
1 configuration that defaults to 64-bit code, but can generate 32-bit code
1 with '-m32'.  To configure and build this way, you have to provide all
1 support libraries like 'libgmp' as 64-bit code, configure with
1 '--target=x86_64-pc-solaris2.1x' and 'CC=gcc -m64'.
1 
1 xtensa*-*-elf
1 =============
1 
1 This target is intended for embedded Xtensa systems using the 'newlib' C
1 library.  It uses ELF but does not support shared objects.
1 Designed-defined instructions specified via the Tensilica Instruction
1 Extension (TIE) language are only supported through inline assembly.
1 
1    The Xtensa configuration information must be specified prior to
1 building GCC.  The 'include/xtensa-config.h' header file contains the
1 configuration information.  If you created your own Xtensa configuration
1 with the Xtensa Processor Generator, the downloaded files include a
1 customized copy of this header file, which you can use to replace the
1 default header file.
1 
1 xtensa*-*-linux*
1 ================
1 
1 This target is for Xtensa systems running GNU/Linux.  It supports ELF
1 shared objects and the GNU C library (glibc).  It also generates
1 position-independent code (PIC) regardless of whether the '-fpic' or
1 '-fPIC' options are used.  In other respects, this target is the same as
1 the 'xtensa*-*-elf' target.
1 
1 Microsoft Windows
1 =================
1 
1 Intel 16-bit versions
1 ---------------------
1 
1 The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
1 supported.
1 
1    However, the 32-bit port has limited support for Microsoft Windows
1 3.11 in the Win32s environment, as a target only.  See below.
1 
1 Intel 32-bit versions
1 ---------------------
1 
1 The 32-bit versions of Windows, including Windows 95, Windows NT,
1 Windows XP, and Windows Vista, are supported by several different target
1 platforms.  These targets differ in which Windows subsystem they target
1 and which C libraries are used.
1 
1    * Cygwin *-*-cygwin: Cygwin provides a user-space Linux API emulation
1      layer in the Win32 subsystem.
1    * MinGW *-*-mingw32: MinGW is a native GCC port for the Win32
1      subsystem that provides a subset of POSIX.
1    * MKS i386-pc-mks: NuTCracker from MKS. See
1      <https://www.mkssoftware.com> for more information.
1 
1 Intel 64-bit versions
1 ---------------------
1 
1 GCC contains support for x86-64 using the mingw-w64 runtime library,
1 available from <http://mingw-w64.org/doku.php>.  This library should be
1 used with the target triple x86_64-pc-mingw32.
1 
1    Presently Windows for Itanium is not supported.
1 
1 Windows CE
1 ----------
1 
1 Windows CE is supported as a target only on Hitachi SuperH
1 (sh-wince-pe), and MIPS (mips-wince-pe).
1 
1 Other Windows Platforms
1 -----------------------
1 
1 GCC no longer supports Windows NT on the Alpha or PowerPC.
1 
1    GCC no longer supports the Windows POSIX subsystem.  However, it does
1 support the Interix subsystem.  See above.
1 
1    Old target names including *-*-winnt and *-*-windowsnt are no longer
1 used.
1 
1    PW32 (i386-pc-pw32) support was never completed, and the project
1 seems to be inactive.  See <http://pw32.sourceforge.net/> for more
1 information.
1 
1    UWIN support has been removed due to a lack of maintenance.
1 
1 *-*-cygwin
1 ==========
1 
1 Ports of GCC are included with the Cygwin environment.
1 
1    GCC will build under Cygwin without modification; it does not build
1 with Microsoft's C++ compiler and there are no plans to make it do so.
1 
1    The Cygwin native compiler can be configured to target any 32-bit x86
1 cpu architecture desired; the default is i686-pc-cygwin.  It should be
1 used with as up-to-date a version of binutils as possible; use either
1 the latest official GNU binutils release in the Cygwin distribution, or
1 version 2.20 or above if building your own.
1 
1 *-*-mingw32
1 ===========
1 
1 GCC will build with and support only MinGW runtime 3.12 and later.
1 Earlier versions of headers are incompatible with the new default
1 semantics of 'extern inline' in '-std=c99' and '-std=gnu99' modes.
1 
1 Older systems
1 =============
1 
1 GCC contains support files for many older (1980s and early 1990s) Unix
1 variants.  For the most part, support for these systems has not been
1 deliberately removed, but it has not been maintained for several years
1 and may suffer from bitrot.
1 
1    Starting with GCC 3.1, each release has a list of "obsoleted"
1 systems.  Support for these systems is still present in that release,
1 but 'configure' will fail unless the '--enable-obsolete' option is
1 given.  Unless a maintainer steps forward, support for these systems
1 will be removed from the next release of GCC.
1 
1    Support for old systems as hosts for GCC can cause problems if the
1 workarounds for compiler, library and operating system bugs affect the
1 cleanliness or maintainability of the rest of GCC.  In some cases, to
1 bring GCC up on such a system, if still possible with current GCC, may
1 require first installing an old version of GCC which did work on that
1 system, and using it to compile a more recent GCC, to avoid bugs in the
1 vendor compiler.  Old releases of GCC 1 and GCC 2 are available in the
1 'old-releases' directory on the GCC mirror sites.  Header bugs may
1 generally be avoided using 'fixincludes', but bugs or deficiencies in
1 libraries and the operating system may still cause problems.
1 
1    Support for older systems as targets for cross-compilation is less
1 problematic than support for them as hosts for GCC; if an enthusiast
1 wishes to make such a target work again (including resurrecting any of
1 the targets that never worked with GCC 2, starting from the last version
1 before they were removed), patches following the usual requirements
1 would be likely to be accepted, since they should not affect the support
1 for more modern targets.
1 
1    For some systems, old versions of GNU binutils may also be useful,
1 and are available from 'pub/binutils/old-releases' on sourceware.org
1 mirror sites.
1 
1    Some of the information on specific systems above relates to such
1 older systems, but much of the information about GCC on such systems
1 (which may no longer be applicable to current GCC) is to be found in the
1 GCC texinfo manual.
1 
1 all ELF targets (SVR4, Solaris 2, etc.)
1 =======================================
1 
1 C++ support is significantly better on ELF targets if you use the GNU
1 linker; duplicate copies of inlines, vtables and template instantiations
1 will be discarded automatically.
1