1This is gccinstall.info, produced by makeinfo version 5.1 from
2install.texi.
3
4Copyright (C) 1988-2020 Free Software Foundation, Inc.
5
6   Permission is granted to copy, distribute and/or modify this document
7under the terms of the GNU Free Documentation License, Version 1.3 or
8any later version published by the Free Software Foundation; with no
9Invariant Sections, the Front-Cover texts being (a) (see below), and
10with the Back-Cover Texts being (b) (see below).  A copy of the license
11is included in the section entitled "GNU Free Documentation License".
12
13   (a) The FSF's Front-Cover Text is:
14
15   A GNU Manual
16
17   (b) The FSF's Back-Cover Text is:
18
19   You have freedom to copy and modify this GNU Manual, like GNU
20software.  Copies published by the Free Software Foundation raise funds
21for GNU development.
22INFO-DIR-SECTION Software development
23START-INFO-DIR-ENTRY
24* gccinstall: (gccinstall).    Installing the GNU Compiler Collection.
25END-INFO-DIR-ENTRY
26
27   Copyright (C) 1988-2020 Free Software Foundation, Inc.
28
29   Permission is granted to copy, distribute and/or modify this document
30under the terms of the GNU Free Documentation License, Version 1.3 or
31any later version published by the Free Software Foundation; with no
32Invariant Sections, the Front-Cover texts being (a) (see below), and
33with the Back-Cover Texts being (b) (see below).  A copy of the license
34is included in the section entitled "GNU Free Documentation License".
35
36   (a) The FSF's Front-Cover Text is:
37
38   A GNU Manual
39
40   (b) The FSF's Back-Cover Text is:
41
42   You have freedom to copy and modify this GNU Manual, like GNU
43software.  Copies published by the Free Software Foundation raise funds
44for GNU development.
45
46
47File: gccinstall.info,  Node: Top,  Up: (dir)
48
49* Menu:
50
51* Installing GCC::  This document describes the generic installation
52                    procedure for GCC as well as detailing some target
53                    specific installation instructions.
54
55* Specific::        Host/target specific installation notes for GCC.
56* Binaries::        Where to get pre-compiled binaries.
57
58* Old::             Old installation documentation.
59
60* GNU Free Documentation License:: How you can copy and share this manual.
61* Concept Index::   This index has two entries.
62
63
64File: gccinstall.info,  Node: Installing GCC,  Next: Binaries,  Up: Top
65
661 Installing GCC
67****************
68
69The latest version of this document is always available at
70http://gcc.gnu.org/install/.  It refers to the current development
71sources, instructions for specific released versions are included with
72the sources.
73
74   This document describes the generic installation procedure for GCC as
75well as detailing some target specific installation instructions.
76
77   GCC includes several components that previously were separate
78distributions with their own installation instructions.  This document
79supersedes all package-specific installation instructions.
80
81   _Before_ starting the build/install procedure please check the *note
82host/target specific installation notes: Specific.  We recommend you
83browse the entire generic installation instructions before you proceed.
84
85   Lists of successful builds for released versions of GCC are available
86at <http://gcc.gnu.org/buildstat.html>.  These lists are updated as new
87information becomes available.
88
89   The installation procedure itself is broken into five steps.
90
91* Menu:
92
93* Prerequisites::
94* Downloading the source::
95* Configuration::
96* Building::
97* Testing:: (optional)
98* Final install::
99
100   Please note that GCC does not support 'make uninstall' and probably
101won't do so in the near future as this would open a can of worms.
102Instead, we suggest that you install GCC into a directory of its own and
103simply remove that directory when you do not need that specific version
104of GCC any longer, and, if shared libraries are installed there as well,
105no more binaries exist that use them.
106
107
108File: gccinstall.info,  Node: Prerequisites,  Next: Downloading the source,  Up: Installing GCC
109
1102 Prerequisites
111***************
112
113GCC requires that various tools and packages be available for use in the
114build procedure.  Modifying GCC sources requires additional tools
115described below.
116
117Tools/packages necessary for building GCC
118=========================================
119
120ISO C++98 compiler
121     Necessary to bootstrap GCC, although versions of GCC prior to 4.8
122     also allow bootstrapping with a ISO C89 compiler and versions of
123     GCC prior to 3.4 also allow bootstrapping with a traditional (K&R)
124     C compiler.
125
126     To build all languages in a cross-compiler or other configuration
127     where 3-stage bootstrap is not performed, you need to start with an
128     existing GCC binary (version 3.4 or later) because source code for
129     language frontends other than C might use GCC extensions.
130
131     Note that to bootstrap GCC with versions of GCC earlier than 3.4,
132     you may need to use '--disable-stage1-checking', though
133     bootstrapping the compiler with such earlier compilers is strongly
134     discouraged.
135
136C standard library and headers
137
138     In order to build GCC, the C standard library and headers must be
139     present for all target variants for which target libraries will be
140     built (and not only the variant of the host C++ compiler).
141
142     This affects the popular 'x86_64-pc-linux-gnu' platform (among
143     other multilib targets), for which 64-bit ('x86_64') and 32-bit
144     ('i386') libc headers are usually packaged separately.  If you do a
145     build of a native compiler on 'x86_64-pc-linux-gnu', make sure you
146     either have the 32-bit libc developer package properly installed
147     (the exact name of the package depends on your distro) or you must
148     build GCC as a 64-bit only compiler by configuring with the option
149     '--disable-multilib'.  Otherwise, you may encounter an error such
150     as 'fatal error: gnu/stubs-32.h: No such file'
151
152GNAT
153
154     In order to build GNAT, the Ada compiler, you need a working GNAT
155     compiler (GCC version 4.7 or later).
156
157     This includes GNAT tools such as 'gnatmake' and 'gnatlink', since
158     the Ada front end is written in Ada and uses some GNAT-specific
159     extensions.
160
161     In order to build a cross compiler, it is strongly recommended to
162     install the new compiler as native first, and then use it to build
163     the cross compiler.  Other native compiler versions may work but
164     this is not guaranteed and will typically fail with hard to
165     understand compilation errors during the build.
166
167     Similarly, it is strongly recommended to use an older version of
168     GNAT to build GNAT. More recent versions of GNAT than the version
169     built are not guaranteed to work and will often fail during the
170     build with compilation errors.
171
172     Note that 'configure' does not test whether the GNAT installation
173     works and has a sufficiently recent version; if too old a GNAT
174     version is installed and '--enable-languages=ada' is used, the
175     build will fail.
176
177     'ADA_INCLUDE_PATH' and 'ADA_OBJECT_PATH' environment variables must
178     not be set when building the Ada compiler, the Ada tools, or the
179     Ada runtime libraries.  You can check that your build environment
180     is clean by verifying that 'gnatls -v' lists only one explicit path
181     in each section.
182
183A "working" POSIX compatible shell, or GNU bash
184
185     Necessary when running 'configure' because some '/bin/sh' shells
186     have bugs and may crash when configuring the target libraries.  In
187     other cases, '/bin/sh' or 'ksh' have disastrous corner-case
188     performance problems.  This can cause target 'configure' runs to
189     literally take days to complete in some cases.
190
191     So on some platforms '/bin/ksh' is sufficient, on others it isn't.
192     See the host/target specific instructions for your platform, or use
193     'bash' to be sure.  Then set 'CONFIG_SHELL' in your environment to
194     your "good" shell prior to running 'configure'/'make'.
195
196     'zsh' is not a fully compliant POSIX shell and will not work when
197     configuring GCC.
198
199A POSIX or SVR4 awk
200
201     Necessary for creating some of the generated source files for GCC.
202     If in doubt, use a recent GNU awk version, as some of the older
203     ones are broken.  GNU awk version 3.1.5 is known to work.
204
205GNU binutils
206
207     Necessary in some circumstances, optional in others.  See the
208     host/target specific instructions for your platform for the exact
209     requirements.
210
211gzip version 1.2.4 (or later) or
212bzip2 version 1.0.2 (or later)
213
214     Necessary to uncompress GCC 'tar' files when source code is
215     obtained via HTTPS mirror sites.
216
217GNU make version 3.80 (or later)
218
219     You must have GNU make installed to build GCC.
220
221GNU tar version 1.14 (or later)
222
223     Necessary (only on some platforms) to untar the source code.  Many
224     systems' 'tar' programs will also work, only try GNU 'tar' if you
225     have problems.
226
227Perl version between 5.6.1 and 5.6.24
228
229     Necessary when targeting Darwin, building 'libstdc++', and not
230     using '--disable-symvers'.  Necessary when targeting Solaris 2 with
231     Solaris 'ld' and not using '--disable-symvers'.
232
233     Necessary when regenerating 'Makefile' dependencies in libiberty.
234     Necessary when regenerating 'libiberty/functions.texi'.  Necessary
235     when generating manpages from Texinfo manuals.  Used by various
236     scripts to generate some files included in the source repository
237     (mainly Unicode-related and rarely changing) from source tables.
238
239     Used by 'automake'.
240
241   Several support libraries are necessary to build GCC, some are
242required, others optional.  While any sufficiently new version of
243required tools usually work, library requirements are generally
244stricter.  Newer versions may work in some cases, but it's safer to use
245the exact versions documented.  We appreciate bug reports about problems
246with newer versions, though.  If your OS vendor provides packages for
247the support libraries then using those packages may be the simplest way
248to install the libraries.
249
250GNU Multiple Precision Library (GMP) version 4.3.2 (or later)
251
252     Necessary to build GCC.  If a GMP source distribution is found in a
253     subdirectory of your GCC sources named 'gmp', it will be built
254     together with GCC. Alternatively, if GMP is already installed but
255     it is not in your library search path, you will have to configure
256     with the '--with-gmp' configure option.  See also '--with-gmp-lib'
257     and '--with-gmp-include'.  The in-tree build is only supported with
258     the GMP version that download_prerequisites installs.
259
260MPFR Library version 3.1.0 (or later)
261
262     Necessary to build GCC.  It can be downloaded from
263     <https://www.mpfr.org>.  If an MPFR source distribution is found in
264     a subdirectory of your GCC sources named 'mpfr', it will be built
265     together with GCC. Alternatively, if MPFR is already installed but
266     it is not in your default library search path, the '--with-mpfr'
267     configure option should be used.  See also '--with-mpfr-lib' and
268     '--with-mpfr-include'.  The in-tree build is only supported with
269     the MPFR version that download_prerequisites installs.
270
271MPC Library version 1.0.1 (or later)
272
273     Necessary to build GCC.  It can be downloaded from
274     <http://www.multiprecision.org/mpc/>.  If an MPC source
275     distribution is found in a subdirectory of your GCC sources named
276     'mpc', it will be built together with GCC. Alternatively, if MPC is
277     already installed but it is not in your default library search
278     path, the '--with-mpc' configure option should be used.  See also
279     '--with-mpc-lib' and '--with-mpc-include'.  The in-tree build is
280     only supported with the MPC version that download_prerequisites
281     installs.
282
283isl Library version 0.15 or later.
284
285     Necessary to build GCC with the Graphite loop optimizations.  It
286     can be downloaded from
287     <https://gcc.gnu.org/pub/gcc/infrastructure/>.  If an isl source
288     distribution is found in a subdirectory of your GCC sources named
289     'isl', it will be built together with GCC. Alternatively, the
290     '--with-isl' configure option should be used if isl is not
291     installed in your default library search path.
292
293zstd Library.
294
295     Necessary to build GCC with zstd compression used for LTO bytecode.
296     The library is searched in your default library patch search.
297     Alternatively, the '--with-zstd' configure option should be used.
298
299Tools/packages necessary for modifying GCC
300==========================================
301
302autoconf version 2.69
303GNU m4 version 1.4.6 (or later)
304
305     Necessary when modifying 'configure.ac', 'aclocal.m4', etc. to
306     regenerate 'configure' and 'config.in' files.
307
308automake version 1.15.1
309
310     Necessary when modifying a 'Makefile.am' file to regenerate its
311     associated 'Makefile.in'.
312
313     Much of GCC does not use automake, so directly edit the
314     'Makefile.in' file.  Specifically this applies to the 'gcc',
315     'intl', 'libcpp', 'libiberty', 'libobjc' directories as well as any
316     of their subdirectories.
317
318     For directories that use automake, GCC requires the latest release
319     in the 1.15 series, which is currently 1.15.1.  When regenerating a
320     directory to a newer version, please update all the directories
321     using an older 1.15 to the latest released version.
322
323gettext version 0.14.5 (or later)
324
325     Needed to regenerate 'gcc.pot'.
326
327gperf version 2.7.2 (or later)
328
329     Necessary when modifying 'gperf' input files, e.g.
330     'gcc/cp/cfns.gperf' to regenerate its associated header file, e.g.
331     'gcc/cp/cfns.h'.
332
333DejaGnu 1.4.4
334Expect
335Tcl
336
337     Necessary to run the GCC testsuite; see the section on testing for
338     details.
339
340autogen version 5.5.4 (or later) and
341guile version 1.4.1 (or later)
342
343     Necessary to regenerate 'fixinc/fixincl.x' from
344     'fixinc/inclhack.def' and 'fixinc/*.tpl'.
345
346     Necessary to run 'make check' for 'fixinc'.
347
348     Necessary to regenerate the top level 'Makefile.in' file from
349     'Makefile.tpl' and 'Makefile.def'.
350
351Flex version 2.5.4 (or later)
352
353     Necessary when modifying '*.l' files.
354
355     Necessary to build GCC during development because the generated
356     output files are not included in the version-controlled source
357     repository.  They are included in releases.
358
359Texinfo version 4.7 (or later)
360
361     Necessary for running 'makeinfo' when modifying '*.texi' files to
362     test your changes.
363
364     Necessary for running 'make dvi' or 'make pdf' to create printable
365     documentation in DVI or PDF format.  Texinfo version 4.8 or later
366     is required for 'make pdf'.
367
368     Necessary to build GCC documentation during development because the
369     generated output files are not included in the repository.  They
370     are included in releases.
371
372TeX (any working version)
373
374     Necessary for running 'texi2dvi' and 'texi2pdf', which are used
375     when running 'make dvi' or 'make pdf' to create DVI or PDF files,
376     respectively.
377
378Sphinx version 1.0 (or later)
379
380     Necessary to regenerate 'jit/docs/_build/texinfo' from the '.rst'
381     files in the directories below 'jit/docs'.
382
383git (any version)
384SSH (any version)
385
386     Necessary to access the source repository.  Public releases and
387     weekly snapshots of the development sources are also available via
388     HTTPS.
389
390GNU diffutils version 2.7 (or later)
391
392     Useful when submitting patches for the GCC source code.
393
394patch version 2.5.4 (or later)
395
396     Necessary when applying patches, created with 'diff', to one's own
397     sources.
398
399
400File: gccinstall.info,  Node: Downloading the source,  Next: Configuration,  Prev: Prerequisites,  Up: Installing GCC
401
4023 Downloading GCC
403*****************
404
405GCC is distributed via git and via HTTPS as tarballs compressed with
406'gzip' or 'bzip2'.
407
408   Please refer to the releases web page for information on how to
409obtain GCC.
410
411   The source distribution includes the C, C++, Objective-C, Fortran,
412and Ada (in the case of GCC 3.1 and later) compilers, as well as runtime
413libraries for C++, Objective-C, and Fortran.  For previous versions
414these were downloadable as separate components such as the core GCC
415distribution, which included the C language front end and shared
416components, and language-specific distributions including the language
417front end and the language runtime (where appropriate).
418
419   If you also intend to build binutils (either to upgrade an existing
420installation or for use in place of the corresponding tools of your OS),
421unpack the binutils distribution either in the same directory or a
422separate one.  In the latter case, add symbolic links to any components
423of the binutils you intend to build alongside the compiler ('bfd',
424'binutils', 'gas', 'gprof', 'ld', 'opcodes', ...) to the directory
425containing the GCC sources.
426
427   Likewise the GMP, MPFR and MPC libraries can be automatically built
428together with GCC. You may simply run the
429'contrib/download_prerequisites' script in the GCC source directory to
430set up everything.  Otherwise unpack the GMP, MPFR and/or MPC source
431distributions in the directory containing the GCC sources and rename
432their directories to 'gmp', 'mpfr' and 'mpc', respectively (or use
433symbolic links with the same name).
434
435
436File: gccinstall.info,  Node: Configuration,  Next: Building,  Prev: Downloading the source,  Up: Installing GCC
437
4384 Installing GCC: Configuration
439*******************************
440
441Like most GNU software, GCC must be configured before it can be built.
442This document describes the recommended configuration procedure for both
443native and cross targets.
444
445   We use SRCDIR to refer to the toplevel source directory for GCC; we
446use OBJDIR to refer to the toplevel build/object directory.
447
448   If you obtained the sources by cloning the repository, SRCDIR must
449refer to the top 'gcc' directory, the one where the 'MAINTAINERS' file
450can be found, and not its 'gcc' subdirectory, otherwise the build will
451fail.
452
453   If either SRCDIR or OBJDIR is located on an automounted NFS file
454system, the shell's built-in 'pwd' command will return temporary
455pathnames.  Using these can lead to various sorts of build problems.  To
456avoid this issue, set the 'PWDCMD' environment variable to an
457automounter-aware 'pwd' command, e.g., 'pawd' or 'amq -w', during the
458configuration and build phases.
459
460   First, we *highly* recommend that GCC be built into a separate
461directory from the sources which does *not* reside within the source
462tree.  This is how we generally build GCC; building where SRCDIR ==
463OBJDIR should still work, but doesn't get extensive testing; building
464where OBJDIR is a subdirectory of SRCDIR is unsupported.
465
466   If you have previously built GCC in the same directory for a
467different target machine, do 'make distclean' to delete all files that
468might be invalid.  One of the files this deletes is 'Makefile'; if 'make
469distclean' complains that 'Makefile' does not exist or issues a message
470like "don't know how to make distclean" it probably means that the
471directory is already suitably clean.  However, with the recommended
472method of building in a separate OBJDIR, you should simply use a
473different OBJDIR for each target.
474
475   Second, when configuring a native system, either 'cc' or 'gcc' must
476be in your path or you must set 'CC' in your environment before running
477configure.  Otherwise the configuration scripts may fail.
478
479   To configure GCC:
480
481     % mkdir OBJDIR
482     % cd OBJDIR
483     % SRCDIR/configure [OPTIONS] [TARGET]
484
485Distributor options
486===================
487
488If you will be distributing binary versions of GCC, with modifications
489to the source code, you should use the options described in this section
490to make clear that your version contains modifications.
491
492'--with-pkgversion=VERSION'
493     Specify a string that identifies your package.  You may wish to
494     include a build number or build date.  This version string will be
495     included in the output of 'gcc --version'.  This suffix does not
496     replace the default version string, only the 'GCC' part.
497
498     The default value is 'GCC'.
499
500'--with-bugurl=URL'
501     Specify the URL that users should visit if they wish to report a
502     bug.  You are of course welcome to forward bugs reported to you to
503     the FSF, if you determine that they are not bugs in your
504     modifications.
505
506     The default value refers to the FSF's GCC bug tracker.
507
508'--with-documentation-root-url=URL'
509     Specify the URL root that contains GCC option documentation.  The
510     URL should end with a '/' character.
511
512     The default value is https://gcc.gnu.org/onlinedocs/.
513
514'--with-changes-root-url=URL'
515     Specify the URL root that contains information about changes in GCC
516     releases like 'gcc-VERSION/changes.html'.  The URL should end with
517     a '/' character.
518
519     The default value is https://gcc.gnu.org/.
520
521Target specification
522====================
523
524   * GCC has code to correctly determine the correct value for TARGET
525     for nearly all native systems.  Therefore, we highly recommend you
526     do not provide a configure target when configuring a native
527     compiler.
528
529   * TARGET must be specified as '--target=TARGET' when configuring a
530     cross compiler; examples of valid targets would be m68k-elf,
531     sh-elf, etc.
532
533   * Specifying just TARGET instead of '--target=TARGET' implies that
534     the host defaults to TARGET.
535
536Options specification
537=====================
538
539Use OPTIONS to override several configure time options for GCC.  A list
540of supported OPTIONS follows; 'configure --help' may list other options,
541but those not listed below may not work and should not normally be used.
542
543   Note that each '--enable' option has a corresponding '--disable'
544option and that each '--with' option has a corresponding '--without'
545option.
546
547'--prefix=DIRNAME'
548     Specify the toplevel installation directory.  This is the
549     recommended way to install the tools into a directory other than
550     the default.  The toplevel installation directory defaults to
551     '/usr/local'.
552
553     We *highly* recommend against DIRNAME being the same or a
554     subdirectory of OBJDIR or vice versa.  If specifying a directory
555     beneath a user's home directory tree, some shells will not expand
556     DIRNAME correctly if it contains the '~' metacharacter; use '$HOME'
557     instead.
558
559     The following standard 'autoconf' options are supported.  Normally
560     you should not need to use these options.
561     '--exec-prefix=DIRNAME'
562          Specify the toplevel installation directory for
563          architecture-dependent files.  The default is 'PREFIX'.
564
565     '--bindir=DIRNAME'
566          Specify the installation directory for the executables called
567          by users (such as 'gcc' and 'g++').  The default is
568          'EXEC-PREFIX/bin'.
569
570     '--libdir=DIRNAME'
571          Specify the installation directory for object code libraries
572          and internal data files of GCC.  The default is
573          'EXEC-PREFIX/lib'.
574
575     '--libexecdir=DIRNAME'
576          Specify the installation directory for internal executables of
577          GCC.  The default is 'EXEC-PREFIX/libexec'.
578
579     '--with-slibdir=DIRNAME'
580          Specify the installation directory for the shared libgcc
581          library.  The default is 'LIBDIR'.
582
583     '--datarootdir=DIRNAME'
584          Specify the root of the directory tree for read-only
585          architecture-independent data files referenced by GCC.  The
586          default is 'PREFIX/share'.
587
588     '--infodir=DIRNAME'
589          Specify the installation directory for documentation in info
590          format.  The default is 'DATAROOTDIR/info'.
591
592     '--datadir=DIRNAME'
593          Specify the installation directory for some
594          architecture-independent data files referenced by GCC.  The
595          default is 'DATAROOTDIR'.
596
597     '--docdir=DIRNAME'
598          Specify the installation directory for documentation files
599          (other than Info) for GCC.  The default is 'DATAROOTDIR/doc'.
600
601     '--htmldir=DIRNAME'
602          Specify the installation directory for HTML documentation
603          files.  The default is 'DOCDIR'.
604
605     '--pdfdir=DIRNAME'
606          Specify the installation directory for PDF documentation
607          files.  The default is 'DOCDIR'.
608
609     '--mandir=DIRNAME'
610          Specify the installation directory for manual pages.  The
611          default is 'DATAROOTDIR/man'.  (Note that the manual pages are
612          only extracts from the full GCC manuals, which are provided in
613          Texinfo format.  The manpages are derived by an automatic
614          conversion process from parts of the full manual.)
615
616     '--with-gxx-include-dir=DIRNAME'
617          Specify the installation directory for G++ header files.  The
618          default depends on other configuration options, and differs
619          between cross and native configurations.
620
621     '--with-specs=SPECS'
622          Specify additional command line driver SPECS. This can be
623          useful if you need to turn on a non-standard feature by
624          default without modifying the compiler's source code, for
625          instance
626          '--with-specs=%{!fcommon:%{!fno-common:-fno-common}}'.  *Note
627          Specifying subprocesses and the switches to pass to them:
628          (gcc)Spec Files,
629
630'--program-prefix=PREFIX'
631     GCC supports some transformations of the names of its programs when
632     installing them.  This option prepends PREFIX to the names of
633     programs to install in BINDIR (see above).  For example, specifying
634     '--program-prefix=foo-' would result in 'gcc' being installed as
635     '/usr/local/bin/foo-gcc'.
636
637'--program-suffix=SUFFIX'
638     Appends SUFFIX to the names of programs to install in BINDIR (see
639     above).  For example, specifying '--program-suffix=-3.1' would
640     result in 'gcc' being installed as '/usr/local/bin/gcc-3.1'.
641
642'--program-transform-name=PATTERN'
643     Applies the 'sed' script PATTERN to be applied to the names of
644     programs to install in BINDIR (see above).  PATTERN has to consist
645     of one or more basic 'sed' editing commands, separated by
646     semicolons.  For example, if you want the 'gcc' program name to be
647     transformed to the installed program '/usr/local/bin/myowngcc' and
648     the 'g++' program name to be transformed to
649     '/usr/local/bin/gspecial++' without changing other program names,
650     you could use the pattern
651     '--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/''
652     to achieve this effect.
653
654     All three options can be combined and used together, resulting in
655     more complex conversion patterns.  As a basic rule, PREFIX (and
656     SUFFIX) are prepended (appended) before further transformations can
657     happen with a special transformation script PATTERN.
658
659     As currently implemented, this option only takes effect for native
660     builds; cross compiler binaries' names are not transformed even
661     when a transformation is explicitly asked for by one of these
662     options.
663
664     For native builds, some of the installed programs are also
665     installed with the target alias in front of their name, as in
666     'i686-pc-linux-gnu-gcc'.  All of the above transformations happen
667     before the target alias is prepended to the name--so, specifying
668     '--program-prefix=foo-' and 'program-suffix=-3.1', the resulting
669     binary would be installed as
670     '/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1'.
671
672     As a last shortcoming, none of the installed Ada programs are
673     transformed yet, which will be fixed in some time.
674
675'--with-local-prefix=DIRNAME'
676     Specify the installation directory for local include files.  The
677     default is '/usr/local'.  Specify this option if you want the
678     compiler to search directory 'DIRNAME/include' for locally
679     installed header files _instead_ of '/usr/local/include'.
680
681     You should specify '--with-local-prefix' *only* if your site has a
682     different convention (not '/usr/local') for where to put
683     site-specific files.
684
685     The default value for '--with-local-prefix' is '/usr/local'
686     regardless of the value of '--prefix'.  Specifying '--prefix' has
687     no effect on which directory GCC searches for local header files.
688     This may seem counterintuitive, but actually it is logical.
689
690     The purpose of '--prefix' is to specify where to _install GCC_. The
691     local header files in '/usr/local/include'--if you put any in that
692     directory--are not part of GCC.  They are part of other
693     programs--perhaps many others.  (GCC installs its own header files
694     in another directory which is based on the '--prefix' value.)
695
696     Both the local-prefix include directory and the GCC-prefix include
697     directory are part of GCC's "system include" directories.  Although
698     these two directories are not fixed, they need to be searched in
699     the proper order for the correct processing of the include_next
700     directive.  The local-prefix include directory is searched before
701     the GCC-prefix include directory.  Another characteristic of system
702     include directories is that pedantic warnings are turned off for
703     headers in these directories.
704
705     Some autoconf macros add '-I DIRECTORY' options to the compiler
706     command line, to ensure that directories containing installed
707     packages' headers are searched.  When DIRECTORY is one of GCC's
708     system include directories, GCC will ignore the option so that
709     system directories continue to be processed in the correct order.
710     This may result in a search order different from what was specified
711     but the directory will still be searched.
712
713     GCC automatically searches for ordinary libraries using
714     'GCC_EXEC_PREFIX'.  Thus, when the same installation prefix is used
715     for both GCC and packages, GCC will automatically search for both
716     headers and libraries.  This provides a configuration that is easy
717     to use.  GCC behaves in a manner similar to that when it is
718     installed as a system compiler in '/usr'.
719
720     Sites that need to install multiple versions of GCC may not want to
721     use the above simple configuration.  It is possible to use the
722     '--program-prefix', '--program-suffix' and
723     '--program-transform-name' options to install multiple versions
724     into a single directory, but it may be simpler to use different
725     prefixes and the '--with-local-prefix' option to specify the
726     location of the site-specific files for each version.  It will then
727     be necessary for users to specify explicitly the location of local
728     site libraries (e.g., with 'LIBRARY_PATH').
729
730     The same value can be used for both '--with-local-prefix' and
731     '--prefix' provided it is not '/usr'.  This can be used to avoid
732     the default search of '/usr/local/include'.
733
734     *Do not* specify '/usr' as the '--with-local-prefix'!  The
735     directory you use for '--with-local-prefix' *must not* contain any
736     of the system's standard header files.  If it did contain them,
737     certain programs would be miscompiled (including GNU Emacs, on
738     certain targets), because this would override and nullify the
739     header file corrections made by the 'fixincludes' script.
740
741     Indications are that people who use this option use it based on
742     mistaken ideas of what it is for.  People use it as if it specified
743     where to install part of GCC.  Perhaps they make this assumption
744     because installing GCC creates the directory.
745
746'--with-gcc-major-version-only'
747     Specifies that GCC should use only the major number rather than
748     MAJOR.MINOR.PATCHLEVEL in filesystem paths.
749
750'--with-native-system-header-dir=DIRNAME'
751     Specifies that DIRNAME is the directory that contains native system
752     header files, rather than '/usr/include'.  This option is most
753     useful if you are creating a compiler that should be isolated from
754     the system as much as possible.  It is most commonly used with the
755     '--with-sysroot' option and will cause GCC to search DIRNAME inside
756     the system root specified by that option.
757
758'--enable-shared[=PACKAGE[,...]]'
759     Build shared versions of libraries, if shared libraries are
760     supported on the target platform.  Unlike GCC 2.95.x and earlier,
761     shared libraries are enabled by default on all platforms that
762     support shared libraries.
763
764     If a list of packages is given as an argument, build shared
765     libraries only for the listed packages.  For other packages, only
766     static libraries will be built.  Package names currently recognized
767     in the GCC tree are 'libgcc' (also known as 'gcc'), 'libstdc++'
768     (not 'libstdc++-v3'), 'libffi', 'zlib', 'boehm-gc', 'ada',
769     'libada', 'libgo', 'libobjc', and 'libphobos'.  Note 'libiberty'
770     does not support shared libraries at all.
771
772     Use '--disable-shared' to build only static libraries.  Note that
773     '--disable-shared' does not accept a list of package names as
774     argument, only '--enable-shared' does.
775
776     Contrast with '--enable-host-shared', which affects _host_ code.
777
778'--enable-host-shared'
779     Specify that the _host_ code should be built into
780     position-independent machine code (with -fPIC), allowing it to be
781     used within shared libraries, but yielding a slightly slower
782     compiler.
783
784     This option is required when building the libgccjit.so library.
785
786     Contrast with '--enable-shared', which affects _target_ libraries.
787
788'--with-gnu-as'
789     Specify that the compiler should assume that the assembler it finds
790     is the GNU assembler.  However, this does not modify the rules to
791     find an assembler and will result in confusion if the assembler
792     found is not actually the GNU assembler.  (Confusion may also
793     result if the compiler finds the GNU assembler but has not been
794     configured with '--with-gnu-as'.)  If you have more than one
795     assembler installed on your system, you may want to use this option
796     in connection with '--with-as=PATHNAME' or
797     '--with-build-time-tools=PATHNAME'.
798
799     The following systems are the only ones where it makes a difference
800     whether you use the GNU assembler.  On any other system,
801     '--with-gnu-as' has no effect.
802
803        * 'hppa1.0-ANY-ANY'
804        * 'hppa1.1-ANY-ANY'
805        * 'sparc-sun-solaris2.ANY'
806        * 'sparc64-ANY-solaris2.ANY'
807
808'--with-as=PATHNAME'
809     Specify that the compiler should use the assembler pointed to by
810     PATHNAME, rather than the one found by the standard rules to find
811     an assembler, which are:
812        * Unless GCC is being built with a cross compiler, check the
813          'LIBEXEC/gcc/TARGET/VERSION' directory.  LIBEXEC defaults to
814          'EXEC-PREFIX/libexec'; EXEC-PREFIX defaults to PREFIX, which
815          defaults to '/usr/local' unless overridden by the
816          '--prefix=PATHNAME' switch described above.  TARGET is the
817          target system triple, such as 'sparc-sun-solaris2.7', and
818          VERSION denotes the GCC version, such as 3.0.
819
820        * If the target system is the same that you are building on,
821          check operating system specific directories (e.g.
822          '/usr/ccs/bin' on Solaris 2).
823
824        * Check in the 'PATH' for a tool whose name is prefixed by the
825          target system triple.
826
827        * Check in the 'PATH' for a tool whose name is not prefixed by
828          the target system triple, if the host and target system triple
829          are the same (in other words, we use a host tool if it can be
830          used for the target as well).
831
832     You may want to use '--with-as' if no assembler is installed in the
833     directories listed above, or if you have multiple assemblers
834     installed and want to choose one that is not found by the above
835     rules.
836
837'--with-gnu-ld'
838     Same as '--with-gnu-as' but for the linker.
839
840'--with-ld=PATHNAME'
841     Same as '--with-as' but for the linker.
842
843'--with-stabs'
844     Specify that stabs debugging information should be used instead of
845     whatever format the host normally uses.  Normally GCC uses the same
846     debug format as the host system.
847
848'--with-tls=DIALECT'
849     Specify the default TLS dialect, for systems were there is a
850     choice.  For ARM targets, possible values for DIALECT are 'gnu' or
851     'gnu2', which select between the original GNU dialect and the GNU
852     TLS descriptor-based dialect.
853
854'--enable-multiarch'
855     Specify whether to enable or disable multiarch support.  The
856     default is to check for glibc start files in a multiarch location,
857     and enable it if the files are found.  The auto detection is
858     enabled for native builds, and for cross builds configured with
859     '--with-sysroot', and without '--with-native-system-header-dir'.
860     More documentation about multiarch can be found at
861     <https://wiki.debian.org/Multiarch>.
862
863'--enable-sjlj-exceptions'
864     Force use of the 'setjmp'/'longjmp'-based scheme for exceptions.
865     'configure' ordinarily picks the correct value based on the
866     platform.  Only use this option if you are sure you need a
867     different setting.
868
869'--enable-vtable-verify'
870     Specify whether to enable or disable the vtable verification
871     feature.  Enabling this feature causes libstdc++ to be built with
872     its virtual calls in verifiable mode.  This means that, when linked
873     with libvtv, every virtual call in libstdc++ will verify the vtable
874     pointer through which the call will be made before actually making
875     the call.  If not linked with libvtv, the verifier will call stub
876     functions (in libstdc++ itself) and do nothing.  If vtable
877     verification is disabled, then libstdc++ is not built with its
878     virtual calls in verifiable mode at all.  However the libvtv
879     library will still be built (see '--disable-libvtv' to turn off
880     building libvtv).  '--disable-vtable-verify' is the default.
881
882'--disable-gcov'
883     Specify that the run-time library used for coverage analysis and
884     associated host tools should not be built.
885
886'--disable-multilib'
887     Specify that multiple target libraries to support different target
888     variants, calling conventions, etc. should not be built.  The
889     default is to build a predefined set of them.
890
891     Some targets provide finer-grained control over which multilibs are
892     built (e.g., '--disable-softfloat'):
893     'arm-*-*'
894          fpu, 26bit, underscore, interwork, biendian, nofmult.
895
896     'm68*-*-*'
897          softfloat, m68881, m68000, m68020.
898
899     'mips*-*-*'
900          single-float, biendian, softfloat.
901
902     'msp430-*-*'
903          no-exceptions
904
905     'powerpc*-*-*, rs6000*-*-*'
906          aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos,
907          biendian, sysv, aix.
908
909'--with-multilib-list=LIST'
910'--without-multilib-list'
911     Specify what multilibs to build.  LIST is a comma separated list of
912     values, possibly consisting of a single value.  Currently only
913     implemented for aarch64*-*-*, arm*-*-*, riscv*-*-*, sh*-*-* and
914     x86-64-*-linux*.  The accepted values and meaning for each target
915     is given below.
916
917     'aarch64*-*-*'
918          LIST is a comma separated list of 'ilp32', and 'lp64' to
919          enable ILP32 and LP64 run-time libraries, respectively.  If
920          LIST is empty, then there will be no multilibs and only the
921          default run-time library will be built.  If LIST is 'default'
922          or -with-multilib-list= is not specified, then the default set
923          of libraries is selected based on the value of '--target'.
924
925     'arm*-*-*'
926          LIST is a comma separated list of 'aprofile' and 'rmprofile'
927          to build multilibs for A or R and M architecture profiles
928          respectively.  Note that, due to some limitation of the
929          current multilib framework, using the combined
930          'aprofile,rmprofile' multilibs selects in some cases a less
931          optimal multilib than when using the multilib profile for the
932          architecture targetted.  The special value 'default' is also
933          accepted and is equivalent to omitting the option, i.e., only
934          the default run-time library will be enabled.
935
936          LIST may instead contain '@name', to use the multilib
937          configuration Makefile fragment 'name' in 'gcc/config/arm' in
938          the source tree (it is part of the corresponding sources,
939          after all).  It is recommended, but not required, that files
940          used for this purpose to be named starting with 't-ml-', to
941          make their intended purpose self-evident, in line with GCC
942          conventions.  Such files enable custom, user-chosen multilib
943          lists to be configured.  Whether multiple such files can be
944          used together depends on the contents of the supplied files.
945          See 'gcc/config/arm/t-multilib' and its supplementary
946          'gcc/config/arm/t-*profile' files for an example of what such
947          Makefile fragments might look like for this version of GCC.
948          The macros expected to be defined in these fragments are not
949          stable across GCC releases, so make sure they define the
950          'MULTILIB'-related macros expected by the version of GCC you
951          are building.  *Note Target Makefile Fragments: (gccint)Target
952          Fragment.
953
954          The table below gives the combination of ISAs, architectures,
955          FPUs and floating-point ABIs for which multilibs are built for
956          each predefined profile.  The union of these options is
957          considered when specifying both 'aprofile' and 'rmprofile'.
958
959          Option      aprofile             rmprofile
960          ISAs        '-marm' and          '-mthumb'
961                      '-mthumb'
962          Architecturesdefault             default architecture
963                      architecture         '-march=armv6s-m'
964                      '-march=armv7-a'     '-march=armv7-m'
965                      '-march=armv7ve'     '-march=armv7e-m'
966                      '-march=armv8-a'     '-march=armv8-m.base'
967                                           '-march=armv8-m.main'
968                                           '-march=armv7'
969          FPUs        none                 none
970                      '-mfpu=vfpv3-d16'    '-mfpu=vfpv3-d16'
971                      '-mfpu=neon'         '-mfpu=fpv4-sp-d16'
972                      '-mfpu=vfpv4-d16'    '-mfpu=fpv5-sp-d16'
973                      '-mfpu=neon-vfpv4'   '-mfpu=fpv5-d16'
974                      '-mfpu=neon-fp-armv8'
975          floating-point'-mfloat-abi=soft' '-mfloat-abi=soft'
976          ABIs        '-mfloat-abi=softfp' '-mfloat-abi=softfp'
977                      '-mfloat-abi=hard'   '-mfloat-abi=hard'
978
979     'riscv*-*-*'
980          LIST is a single ABI name.  The target architecture must be
981          either 'rv32gc' or 'rv64gc'.  This will build a single
982          multilib for the specified architecture and ABI pair.  If
983          '--with-multilib-list' is not given, then a default set of
984          multilibs is selected based on the value of '--target'.  This
985          is usually a large set of multilibs.
986
987     'sh*-*-*'
988          LIST is a comma separated list of CPU names.  These must be of
989          the form 'sh*' or 'm*' (in which case they match the compiler
990          option for that processor).  The list should not contain any
991          endian options - these are handled by '--with-endian'.
992
993          If LIST is empty, then there will be no multilibs for extra
994          processors.  The multilib for the secondary endian remains
995          enabled.
996
997          As a special case, if an entry in the list starts with a '!'
998          (exclamation point), then it is added to the list of excluded
999          multilibs.  Entries of this sort should be compatible with
1000          'MULTILIB_EXCLUDES' (once the leading '!' has been stripped).
1001
1002          If '--with-multilib-list' is not given, then a default set of
1003          multilibs is selected based on the value of '--target'.  This
1004          is usually the complete set of libraries, but some targets
1005          imply a more specialized subset.
1006
1007          Example 1: to configure a compiler for SH4A only, but
1008          supporting both endians, with little endian being the default:
1009               --with-cpu=sh4a --with-endian=little,big --with-multilib-list=
1010
1011          Example 2: to configure a compiler for both SH4A and
1012          SH4AL-DSP, but with only little endian SH4AL:
1013               --with-cpu=sh4a --with-endian=little,big \
1014               --with-multilib-list=sh4al,!mb/m4al
1015
1016     'x86-64-*-linux*'
1017          LIST is a comma separated list of 'm32', 'm64' and 'mx32' to
1018          enable 32-bit, 64-bit and x32 run-time libraries,
1019          respectively.  If LIST is empty, then there will be no
1020          multilibs and only the default run-time library will be
1021          enabled.
1022
1023          If '--with-multilib-list' is not given, then only 32-bit and
1024          64-bit run-time libraries will be enabled.
1025
1026'--with-endian=ENDIANS'
1027     Specify what endians to use.  Currently only implemented for
1028     sh*-*-*.
1029
1030     ENDIANS may be one of the following:
1031     'big'
1032          Use big endian exclusively.
1033     'little'
1034          Use little endian exclusively.
1035     'big,little'
1036          Use big endian by default.  Provide a multilib for little
1037          endian.
1038     'little,big'
1039          Use little endian by default.  Provide a multilib for big
1040          endian.
1041
1042'--enable-threads'
1043     Specify that the target supports threads.  This affects the
1044     Objective-C compiler and runtime library, and exception handling
1045     for other languages like C++.  On some systems, this is the
1046     default.
1047
1048     In general, the best (and, in many cases, the only known) threading
1049     model available will be configured for use.  Beware that on some
1050     systems, GCC has not been taught what threading models are
1051     generally available for the system.  In this case,
1052     '--enable-threads' is an alias for '--enable-threads=single'.
1053
1054'--disable-threads'
1055     Specify that threading support should be disabled for the system.
1056     This is an alias for '--enable-threads=single'.
1057
1058'--enable-threads=LIB'
1059     Specify that LIB is the thread support library.  This affects the
1060     Objective-C compiler and runtime library, and exception handling
1061     for other languages like C++.  The possibilities for LIB are:
1062
1063     'aix'
1064          AIX thread support.
1065     'dce'
1066          DCE thread support.
1067     'lynx'
1068          LynxOS thread support.
1069     'mipssde'
1070          MIPS SDE thread support.
1071     'no'
1072          This is an alias for 'single'.
1073     'posix'
1074          Generic POSIX/Unix98 thread support.
1075     'rtems'
1076          RTEMS thread support.
1077     'single'
1078          Disable thread support, should work for all platforms.
1079     'tpf'
1080          TPF thread support.
1081     'vxworks'
1082          VxWorks thread support.
1083     'win32'
1084          Microsoft Win32 API thread support.
1085
1086'--enable-tls'
1087     Specify that the target supports TLS (Thread Local Storage).
1088     Usually configure can correctly determine if TLS is supported.  In
1089     cases where it guesses incorrectly, TLS can be explicitly enabled
1090     or disabled with '--enable-tls' or '--disable-tls'.  This can
1091     happen if the assembler supports TLS but the C library does not, or
1092     if the assumptions made by the configure test are incorrect.
1093
1094'--disable-tls'
1095     Specify that the target does not support TLS. This is an alias for
1096     '--enable-tls=no'.
1097
1098'--disable-tm-clone-registry'
1099     Disable TM clone registry in libgcc.  It is enabled in libgcc by
1100     default.  This option helps to reduce code size for embedded
1101     targets which do not use transactional memory.
1102
1103'--with-cpu=CPU'
1104'--with-cpu-32=CPU'
1105'--with-cpu-64=CPU'
1106     Specify which cpu variant the compiler should generate code for by
1107     default.  CPU will be used as the default value of the '-mcpu='
1108     switch.  This option is only supported on some targets, including
1109     ARC, ARM, i386, M68k, PowerPC, and SPARC.  It is mandatory for ARC.
1110     The '--with-cpu-32' and '--with-cpu-64' options specify separate
1111     default CPUs for 32-bit and 64-bit modes; these options are only
1112     supported for aarch64, i386, x86-64, PowerPC, and SPARC.
1113
1114'--with-schedule=CPU'
1115'--with-arch=CPU'
1116'--with-arch-32=CPU'
1117'--with-arch-64=CPU'
1118'--with-tune=CPU'
1119'--with-tune-32=CPU'
1120'--with-tune-64=CPU'
1121'--with-abi=ABI'
1122'--with-fpu=TYPE'
1123'--with-float=TYPE'
1124     These configure options provide default values for the
1125     '-mschedule=', '-march=', '-mtune=', '-mabi=', and '-mfpu=' options
1126     and for '-mhard-float' or '-msoft-float'.  As with '--with-cpu',
1127     which switches will be accepted and acceptable values of the
1128     arguments depend on the target.
1129
1130'--with-mode=MODE'
1131     Specify if the compiler should default to '-marm' or '-mthumb'.
1132     This option is only supported on ARM targets.
1133
1134'--with-stack-offset=NUM'
1135     This option sets the default for the -mstack-offset=NUM option, and
1136     will thus generally also control the setting of this option for
1137     libraries.  This option is only supported on Epiphany targets.
1138
1139'--with-fpmath=ISA'
1140     This options sets '-mfpmath=sse' by default and specifies the
1141     default ISA for floating-point arithmetics.  You can select either
1142     'sse' which enables '-msse2' or 'avx' which enables '-mavx' by
1143     default.  This option is only supported on i386 and x86-64 targets.
1144
1145'--with-fp-32=MODE'
1146     On MIPS targets, set the default value for the '-mfp' option when
1147     using the o32 ABI. The possibilities for MODE are:
1148     '32'
1149          Use the o32 FP32 ABI extension, as with the '-mfp32'
1150          command-line option.
1151     'xx'
1152          Use the o32 FPXX ABI extension, as with the '-mfpxx'
1153          command-line option.
1154     '64'
1155          Use the o32 FP64 ABI extension, as with the '-mfp64'
1156          command-line option.
1157     In the absence of this configuration option the default is to use
1158     the o32 FP32 ABI extension.
1159
1160'--with-odd-spreg-32'
1161     On MIPS targets, set the '-modd-spreg' option by default when using
1162     the o32 ABI.
1163
1164'--without-odd-spreg-32'
1165     On MIPS targets, set the '-mno-odd-spreg' option by default when
1166     using the o32 ABI. This is normally used in conjunction with
1167     '--with-fp-32=64' in order to target the o32 FP64A ABI extension.
1168
1169'--with-nan=ENCODING'
1170     On MIPS targets, set the default encoding convention to use for the
1171     special not-a-number (NaN) IEEE 754 floating-point data.  The
1172     possibilities for ENCODING are:
1173     'legacy'
1174          Use the legacy encoding, as with the '-mnan=legacy'
1175          command-line option.
1176     '2008'
1177          Use the 754-2008 encoding, as with the '-mnan=2008'
1178          command-line option.
1179     To use this configuration option you must have an assembler version
1180     installed that supports the '-mnan=' command-line option too.  In
1181     the absence of this configuration option the default convention is
1182     the legacy encoding, as when neither of the '-mnan=2008' and
1183     '-mnan=legacy' command-line options has been used.
1184
1185'--with-divide=TYPE'
1186     Specify how the compiler should generate code for checking for
1187     division by zero.  This option is only supported on the MIPS
1188     target.  The possibilities for TYPE are:
1189     'traps'
1190          Division by zero checks use conditional traps (this is the
1191          default on systems that support conditional traps).
1192     'breaks'
1193          Division by zero checks use the break instruction.
1194
1195'--with-llsc'
1196     On MIPS targets, make '-mllsc' the default when no '-mno-llsc'
1197     option is passed.  This is the default for Linux-based targets, as
1198     the kernel will emulate them if the ISA does not provide them.
1199
1200'--without-llsc'
1201     On MIPS targets, make '-mno-llsc' the default when no '-mllsc'
1202     option is passed.
1203
1204'--with-synci'
1205     On MIPS targets, make '-msynci' the default when no '-mno-synci'
1206     option is passed.
1207
1208'--without-synci'
1209     On MIPS targets, make '-mno-synci' the default when no '-msynci'
1210     option is passed.  This is the default.
1211
1212'--with-lxc1-sxc1'
1213     On MIPS targets, make '-mlxc1-sxc1' the default when no
1214     '-mno-lxc1-sxc1' option is passed.  This is the default.
1215
1216'--without-lxc1-sxc1'
1217     On MIPS targets, make '-mno-lxc1-sxc1' the default when no
1218     '-mlxc1-sxc1' option is passed.  The indexed load/store
1219     instructions are not directly a problem but can lead to unexpected
1220     behaviour when deployed in an application intended for a 32-bit
1221     address space but run on a 64-bit processor.  The issue is seen
1222     because all known MIPS 64-bit Linux kernels execute o32 and n32
1223     applications with 64-bit addressing enabled which affects the
1224     overflow behaviour of the indexed addressing mode.  GCC will assume
1225     that ordinary 32-bit arithmetic overflow behaviour is the same
1226     whether performed as an 'addu' instruction or as part of the
1227     address calculation in 'lwxc1' type instructions.  This assumption
1228     holds true in a pure 32-bit environment and can hold true in a
1229     64-bit environment if the address space is accurately set to be
1230     32-bit for o32 and n32.
1231
1232'--with-madd4'
1233     On MIPS targets, make '-mmadd4' the default when no '-mno-madd4'
1234     option is passed.  This is the default.
1235
1236'--without-madd4'
1237     On MIPS targets, make '-mno-madd4' the default when no '-mmadd4'
1238     option is passed.  The 'madd4' instruction family can be
1239     problematic when targeting a combination of cores that implement
1240     these instructions differently.  There are two known cores that
1241     implement these as fused operations instead of unfused (where
1242     unfused is normally expected).  Disabling these instructions is the
1243     only way to ensure compatible code is generated; this will incur a
1244     performance penalty.
1245
1246'--with-mips-plt'
1247     On MIPS targets, make use of copy relocations and PLTs.  These
1248     features are extensions to the traditional SVR4-based MIPS ABIs and
1249     require support from GNU binutils and the runtime C library.
1250
1251'--with-stack-clash-protection-guard-size=SIZE'
1252     On certain targets this option sets the default stack clash
1253     protection guard size as a power of two in bytes.  On AArch64 SIZE
1254     is required to be either 12 (4KB) or 16 (64KB).
1255
1256'--enable-__cxa_atexit'
1257     Define if you want to use __cxa_atexit, rather than atexit, to
1258     register C++ destructors for local statics and global objects.
1259     This is essential for fully standards-compliant handling of
1260     destructors, but requires __cxa_atexit in libc.  This option is
1261     currently only available on systems with GNU libc.  When enabled,
1262     this will cause '-fuse-cxa-atexit' to be passed by default.
1263
1264'--enable-gnu-indirect-function'
1265     Define if you want to enable the 'ifunc' attribute.  This option is
1266     currently only available on systems with GNU libc on certain
1267     targets.
1268
1269'--enable-target-optspace'
1270     Specify that target libraries should be optimized for code space
1271     instead of code speed.  This is the default for the m32r platform.
1272
1273'--with-cpp-install-dir=DIRNAME'
1274     Specify that the user visible 'cpp' program should be installed in
1275     'PREFIX/DIRNAME/cpp', in addition to BINDIR.
1276
1277'--enable-comdat'
1278     Enable COMDAT group support.  This is primarily used to override
1279     the automatically detected value.
1280
1281'--enable-initfini-array'
1282     Force the use of sections '.init_array' and '.fini_array' (instead
1283     of '.init' and '.fini') for constructors and destructors.  Option
1284     '--disable-initfini-array' has the opposite effect.  If neither
1285     option is specified, the configure script will try to guess whether
1286     the '.init_array' and '.fini_array' sections are supported and, if
1287     they are, use them.
1288
1289'--enable-link-mutex'
1290     When building GCC, use a mutex to avoid linking the compilers for
1291     multiple languages at the same time, to avoid thrashing on build
1292     systems with limited free memory.  The default is not to use such a
1293     mutex.
1294
1295'--enable-maintainer-mode'
1296     The build rules that regenerate the Autoconf and Automake output
1297     files as well as the GCC master message catalog 'gcc.pot' are
1298     normally disabled.  This is because it can only be rebuilt if the
1299     complete source tree is present.  If you have changed the sources
1300     and want to rebuild the catalog, configuring with
1301     '--enable-maintainer-mode' will enable this.  Note that you need a
1302     recent version of the 'gettext' tools to do so.
1303
1304'--disable-bootstrap'
1305     For a native build, the default configuration is to perform a
1306     3-stage bootstrap of the compiler when 'make' is invoked, testing
1307     that GCC can compile itself correctly.  If you want to disable this
1308     process, you can configure with '--disable-bootstrap'.
1309
1310'--enable-bootstrap'
1311     In special cases, you may want to perform a 3-stage build even if
1312     the target and host triplets are different.  This is possible when
1313     the host can run code compiled for the target (e.g. host is
1314     i686-linux, target is i486-linux).  Starting from GCC 4.2, to do
1315     this you have to configure explicitly with '--enable-bootstrap'.
1316
1317'--enable-generated-files-in-srcdir'
1318     Neither the .c and .h files that are generated from Bison and flex
1319     nor the info manuals and man pages that are built from the .texi
1320     files are present in the repository development tree.  When
1321     building GCC from that development tree, or from one of our
1322     snapshots, those generated files are placed in your build
1323     directory, which allows for the source to be in a readonly
1324     directory.
1325
1326     If you configure with '--enable-generated-files-in-srcdir' then
1327     those generated files will go into the source directory.  This is
1328     mainly intended for generating release or prerelease tarballs of
1329     the GCC sources, since it is not a requirement that the users of
1330     source releases to have flex, Bison, or makeinfo.
1331
1332'--enable-version-specific-runtime-libs'
1333     Specify that runtime libraries should be installed in the compiler
1334     specific subdirectory ('LIBDIR/gcc') rather than the usual places.
1335     In addition, 'libstdc++''s include files will be installed into
1336     'LIBDIR' unless you overruled it by using
1337     '--with-gxx-include-dir=DIRNAME'.  Using this option is
1338     particularly useful if you intend to use several versions of GCC in
1339     parallel.  The default is 'yes' for 'libada', and 'no' for the
1340     remaining libraries.
1341
1342'--with-aix-soname='aix', 'svr4' or 'both''
1343     Traditional AIX shared library versioning (versioned 'Shared
1344     Object' files as members of unversioned 'Archive Library' files
1345     named 'lib.a') causes numerous headaches for package managers.
1346     However, 'Import Files' as members of 'Archive Library' files allow
1347     for *filename-based versioning* of shared libraries as seen on
1348     Linux/SVR4, where this is called the "SONAME". But as they prevent
1349     static linking, 'Import Files' may be used with 'Runtime Linking'
1350     only, where the linker does search for 'libNAME.so' before
1351     'libNAME.a' library filenames with the '-lNAME' linker flag.
1352
1353     For detailed information please refer to the AIX ld Command
1354     reference.
1355
1356     As long as shared library creation is enabled, upon:
1357     '--with-aix-soname=aix'
1358     '--with-aix-soname=both'
1359          A (traditional AIX) 'Shared Archive Library' file is created:
1360             * using the 'libNAME.a' filename scheme
1361             * with the 'Shared Object' file as archive member named
1362               'libNAME.so.V' (except for 'libgcc_s', where the 'Shared
1363               Object' file is named 'shr.o' for backwards
1364               compatibility), which
1365                  - is used for runtime loading from inside the
1366                    'libNAME.a' file
1367                  - is used for dynamic loading via
1368                    'dlopen("libNAME.a(libNAME.so.V)", RTLD_MEMBER)'
1369                  - is used for shared linking
1370                  - is used for static linking, so no separate 'Static
1371                    Archive Library' file is needed
1372     '--with-aix-soname=both'
1373     '--with-aix-soname=svr4'
1374          A (second) 'Shared Archive Library' file is created:
1375             * using the 'libNAME.so.V' filename scheme
1376             * with the 'Shared Object' file as archive member named
1377               'shr.o', which
1378                  - is created with the '-G linker flag'
1379                  - has the 'F_LOADONLY' flag set
1380                  - is used for runtime loading from inside the
1381                    'libNAME.so.V' file
1382                  - is used for dynamic loading via
1383                    'dlopen("libNAME.so.V(shr.o)", RTLD_MEMBER)'
1384             * with the 'Import File' as archive member named 'shr.imp',
1385               which
1386                  - refers to 'libNAME.so.V(shr.o)' as the "SONAME", to
1387                    be recorded in the 'Loader Section' of subsequent
1388                    binaries
1389                  - indicates whether 'libNAME.so.V(shr.o)' is 32 or 64
1390                    bit
1391                  - lists all the public symbols exported by
1392                    'lib.so.V(shr.o)', eventually decorated with the
1393                    ''weak' Keyword'
1394                  - is necessary for shared linking against
1395                    'lib.so.V(shr.o)'
1396          A symbolic link using the 'libNAME.so' filename scheme is
1397          created:
1398             * pointing to the 'libNAME.so.V' 'Shared Archive Library'
1399               file
1400             * to permit the 'ld Command' to find 'lib.so.V(shr.imp)'
1401               via the '-lNAME' argument (requires 'Runtime Linking' to
1402               be enabled)
1403             * to permit dynamic loading of 'lib.so.V(shr.o)' without
1404               the need to specify the version number via
1405               'dlopen("libNAME.so(shr.o)", RTLD_MEMBER)'
1406
1407     As long as static library creation is enabled, upon:
1408     '--with-aix-soname=svr4'
1409          A 'Static Archive Library' is created:
1410             * using the 'libNAME.a' filename scheme
1411             * with all the 'Static Object' files as archive members,
1412               which
1413                  - are used for static linking
1414
1415     While the aix-soname='svr4' option does not create 'Shared Object'
1416     files as members of unversioned 'Archive Library' files any more,
1417     package managers still are responsible to transfer 'Shared Object'
1418     files found as member of a previously installed unversioned
1419     'Archive Library' file into the newly installed 'Archive Library'
1420     file with the same filename.
1421
1422     _WARNING:_ Creating 'Shared Object' files with 'Runtime Linking'
1423     enabled may bloat the TOC, eventually leading to 'TOC overflow'
1424     errors, requiring the use of either the '-Wl,-bbigtoc' linker flag
1425     (seen to break with the 'GDB' debugger) or some of the TOC-related
1426     compiler flags, *Note RS/6000 and PowerPC Options: (gcc)RS/6000 and
1427     PowerPC Options.
1428
1429     '--with-aix-soname' is currently supported by 'libgcc_s' only, so
1430     this option is still experimental and not for normal use yet.
1431
1432     Default is the traditional behavior '--with-aix-soname='aix''.
1433
1434'--enable-languages=LANG1,LANG2,...'
1435     Specify that only a particular subset of compilers and their
1436     runtime libraries should be built.  For a list of valid values for
1437     LANGN you can issue the following command in the 'gcc' directory of
1438     your GCC source tree:
1439          grep ^language= */config-lang.in
1440     Currently, you can use any of the following: 'all', 'default',
1441     'ada', 'c', 'c++', 'd', 'fortran', 'go', 'jit', 'lto', 'objc',
1442     'obj-c++'.  Building the Ada compiler has special requirements, see
1443     below.  If you do not pass this flag, or specify the option
1444     'default', then the default languages available in the 'gcc'
1445     sub-tree will be configured.  Ada, D, Go, Jit, and Objective-C++
1446     are not default languages.  LTO is not a default language, but is
1447     built by default because '--enable-lto' is enabled by default.  The
1448     other languages are default languages.  If 'all' is specified, then
1449     all available languages are built.  An exception is 'jit' language,
1450     which requires '--enable-host-shared' to be included with 'all'.
1451
1452'--enable-stage1-languages=LANG1,LANG2,...'
1453     Specify that a particular subset of compilers and their runtime
1454     libraries should be built with the system C compiler during stage 1
1455     of the bootstrap process, rather than only in later stages with the
1456     bootstrapped C compiler.  The list of valid values is the same as
1457     for '--enable-languages', and the option 'all' will select all of
1458     the languages enabled by '--enable-languages'.  This option is
1459     primarily useful for GCC development; for instance, when a
1460     development version of the compiler cannot bootstrap due to
1461     compiler bugs, or when one is debugging front ends other than the C
1462     front end.  When this option is used, one can then build the target
1463     libraries for the specified languages with the stage-1 compiler by
1464     using 'make stage1-bubble all-target', or run the testsuite on the
1465     stage-1 compiler for the specified languages using 'make
1466     stage1-start check-gcc'.
1467
1468'--disable-libada'
1469     Specify that the run-time libraries and tools used by GNAT should
1470     not be built.  This can be useful for debugging, or for
1471     compatibility with previous Ada build procedures, when it was
1472     required to explicitly do a 'make -C gcc gnatlib_and_tools'.
1473
1474'--disable-libsanitizer'
1475     Specify that the run-time libraries for the various sanitizers
1476     should not be built.
1477
1478'--disable-libssp'
1479     Specify that the run-time libraries for stack smashing protection
1480     should not be built or linked against.  On many targets library
1481     support is provided by the C library instead.
1482
1483'--disable-libquadmath'
1484     Specify that the GCC quad-precision math library should not be
1485     built.  On some systems, the library is required to be linkable
1486     when building the Fortran front end, unless
1487     '--disable-libquadmath-support' is used.
1488
1489'--disable-libquadmath-support'
1490     Specify that the Fortran front end and 'libgfortran' do not add
1491     support for 'libquadmath' on systems supporting it.
1492
1493'--disable-libgomp'
1494     Specify that the GNU Offloading and Multi Processing Runtime
1495     Library should not be built.
1496
1497'--disable-libvtv'
1498     Specify that the run-time libraries used by vtable verification
1499     should not be built.
1500
1501'--with-dwarf2'
1502     Specify that the compiler should use DWARF 2 debugging information
1503     as the default.
1504
1505'--with-advance-toolchain=AT'
1506     On 64-bit PowerPC Linux systems, configure the compiler to use the
1507     header files, library files, and the dynamic linker from the
1508     Advance Toolchain release AT instead of the default versions that
1509     are provided by the Linux distribution.  In general, this option is
1510     intended for the developers of GCC, and it is not intended for
1511     general use.
1512
1513'--enable-targets=all'
1514'--enable-targets=TARGET_LIST'
1515     Some GCC targets, e.g. powerpc64-linux, build bi-arch compilers.
1516     These are compilers that are able to generate either 64-bit or
1517     32-bit code.  Typically, the corresponding 32-bit target, e.g.
1518     powerpc-linux for powerpc64-linux, only generates 32-bit code.
1519     This option enables the 32-bit target to be a bi-arch compiler,
1520     which is useful when you want a bi-arch compiler that defaults to
1521     32-bit, and you are building a bi-arch or multi-arch binutils in a
1522     combined tree.  On mips-linux, this will build a tri-arch compiler
1523     (ABI o32/n32/64), defaulted to o32.  Currently, this option only
1524     affects sparc-linux, powerpc-linux, x86-linux, mips-linux and
1525     s390-linux.
1526
1527'--enable-default-pie'
1528     Turn on '-fPIE' and '-pie' by default.
1529
1530'--enable-secureplt'
1531     This option enables '-msecure-plt' by default for powerpc-linux.
1532     *Note RS/6000 and PowerPC Options: (gcc)RS/6000 and PowerPC
1533     Options,
1534
1535'--enable-default-ssp'
1536     Turn on '-fstack-protector-strong' by default.
1537
1538'--enable-cld'
1539     This option enables '-mcld' by default for 32-bit x86 targets.
1540     *Note i386 and x86-64 Options: (gcc)i386 and x86-64 Options,
1541
1542'--enable-large-address-aware'
1543     The '--enable-large-address-aware' option arranges for MinGW
1544     executables to be linked using the '--large-address-aware' option,
1545     that enables the use of more than 2GB of memory.  If GCC is
1546     configured with this option, its effects can be reversed by passing
1547     the '-Wl,--disable-large-address-aware' option to the so-configured
1548     compiler driver.
1549
1550'--enable-win32-registry'
1551'--enable-win32-registry=KEY'
1552'--disable-win32-registry'
1553     The '--enable-win32-registry' option enables Microsoft
1554     Windows-hosted GCC to look up installations paths in the registry
1555     using the following key:
1556
1557          HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\KEY
1558
1559     KEY defaults to GCC version number, and can be overridden by the
1560     '--enable-win32-registry=KEY' option.  Vendors and distributors who
1561     use custom installers are encouraged to provide a different key,
1562     perhaps one comprised of vendor name and GCC version number, to
1563     avoid conflict with existing installations.  This feature is
1564     enabled by default, and can be disabled by
1565     '--disable-win32-registry' option.  This option has no effect on
1566     the other hosts.
1567
1568'--nfp'
1569     Specify that the machine does not have a floating point unit.  This
1570     option only applies to 'm68k-sun-sunosN'.  On any other system,
1571     '--nfp' has no effect.
1572
1573'--enable-werror'
1574'--disable-werror'
1575'--enable-werror=yes'
1576'--enable-werror=no'
1577     When you specify this option, it controls whether certain files in
1578     the compiler are built with '-Werror' in bootstrap stage2 and
1579     later.  If you don't specify it, '-Werror' is turned on for the
1580     main development trunk.  However it defaults to off for release
1581     branches and final releases.  The specific files which get
1582     '-Werror' are controlled by the Makefiles.
1583
1584'--enable-checking'
1585'--disable-checking'
1586'--enable-checking=LIST'
1587     This option controls performing internal consistency checks in the
1588     compiler.  It does not change the generated code, but adds error
1589     checking of the requested complexity.  This slows down the compiler
1590     and may only work properly if you are building the compiler with
1591     GCC.
1592
1593     When the option is not specified, the active set of checks depends
1594     on context.  Namely, bootstrap stage 1 defaults to
1595     '--enable-checking=yes', builds from release branches or release
1596     archives default to '--enable-checking=release', and otherwise
1597     '--enable-checking=yes,extra' is used.  When the option is
1598     specified without a LIST, the result is the same as
1599     '--enable-checking=yes'.  Likewise, '--disable-checking' is
1600     equivalent to '--enable-checking=no'.
1601
1602     The categories of checks available in LIST are 'yes' (most common
1603     checks 'assert,misc,gc,gimple,rtlflag,runtime,tree,types'), 'no'
1604     (no checks at all), 'all' (all but 'valgrind'), 'release' (cheapest
1605     checks 'assert,runtime') or 'none' (same as 'no').  'release'
1606     checks are always on and to disable them '--disable-checking' or
1607     '--enable-checking=no[,<other checks>]' must be explicitly
1608     requested.  Disabling assertions makes the compiler and runtime
1609     slightly faster but increases the risk of undetected internal
1610     errors causing wrong code to be generated.
1611
1612     Individual checks can be enabled with these flags: 'assert', 'df',
1613     'extra', 'fold', 'gc', 'gcac', 'gimple', 'misc', 'rtl', 'rtlflag',
1614     'runtime', 'tree', 'types' and 'valgrind'.  'extra' extends 'misc'
1615     checking with extra checks that might affect code generation and
1616     should therefore not differ between stage1 and later stages in
1617     bootstrap.
1618
1619     The 'valgrind' check requires the external 'valgrind' simulator,
1620     available from <http://valgrind.org/>.  The 'rtl' checks are
1621     expensive and the 'df', 'gcac' and 'valgrind' checks are very
1622     expensive.
1623
1624'--disable-stage1-checking'
1625'--enable-stage1-checking'
1626'--enable-stage1-checking=LIST'
1627     This option affects only bootstrap build.  If no
1628     '--enable-checking' option is specified the stage1 compiler is
1629     built with 'yes' checking enabled, otherwise the stage1 checking
1630     flags are the same as specified by '--enable-checking'.  To build
1631     the stage1 compiler with different checking options use
1632     '--enable-stage1-checking'.  The list of checking options is the
1633     same as for '--enable-checking'.  If your system is too slow or too
1634     small to bootstrap a released compiler with checking for stage1
1635     enabled, you can use '--disable-stage1-checking' to disable
1636     checking for the stage1 compiler.
1637
1638'--enable-coverage'
1639'--enable-coverage=LEVEL'
1640     With this option, the compiler is built to collect self coverage
1641     information, every time it is run.  This is for internal
1642     development purposes, and only works when the compiler is being
1643     built with gcc.  The LEVEL argument controls whether the compiler
1644     is built optimized or not, values are 'opt' and 'noopt'.  For
1645     coverage analysis you want to disable optimization, for performance
1646     analysis you want to enable optimization.  When coverage is
1647     enabled, the default level is without optimization.
1648
1649'--enable-gather-detailed-mem-stats'
1650     When this option is specified more detailed information on memory
1651     allocation is gathered.  This information is printed when using
1652     '-fmem-report'.
1653
1654'--enable-valgrind-annotations'
1655     Mark selected memory related operations in the compiler when run
1656     under valgrind to suppress false positives.
1657
1658'--enable-nls'
1659'--disable-nls'
1660     The '--enable-nls' option enables Native Language Support (NLS),
1661     which lets GCC output diagnostics in languages other than American
1662     English.  Native Language Support is enabled by default if not
1663     doing a canadian cross build.  The '--disable-nls' option disables
1664     NLS.
1665
1666'--with-included-gettext'
1667     If NLS is enabled, the '--with-included-gettext' option causes the
1668     build procedure to prefer its copy of GNU 'gettext'.
1669
1670'--with-catgets'
1671     If NLS is enabled, and if the host lacks 'gettext' but has the
1672     inferior 'catgets' interface, the GCC build procedure normally
1673     ignores 'catgets' and instead uses GCC's copy of the GNU 'gettext'
1674     library.  The '--with-catgets' option causes the build procedure to
1675     use the host's 'catgets' in this situation.
1676
1677'--with-libiconv-prefix=DIR'
1678     Search for libiconv header files in 'DIR/include' and libiconv
1679     library files in 'DIR/lib'.
1680
1681'--enable-obsolete'
1682     Enable configuration for an obsoleted system.  If you attempt to
1683     configure GCC for a system (build, host, or target) which has been
1684     obsoleted, and you do not specify this flag, configure will halt
1685     with an error message.
1686
1687     All support for systems which have been obsoleted in one release of
1688     GCC is removed entirely in the next major release, unless someone
1689     steps forward to maintain the port.
1690
1691'--enable-decimal-float'
1692'--enable-decimal-float=yes'
1693'--enable-decimal-float=no'
1694'--enable-decimal-float=bid'
1695'--enable-decimal-float=dpd'
1696'--disable-decimal-float'
1697     Enable (or disable) support for the C decimal floating point
1698     extension that is in the IEEE 754-2008 standard.  This is enabled
1699     by default only on PowerPC, i386, and x86_64 GNU/Linux systems.
1700     Other systems may also support it, but require the user to
1701     specifically enable it.  You can optionally control which decimal
1702     floating point format is used (either 'bid' or 'dpd').  The 'bid'
1703     (binary integer decimal) format is default on i386 and x86_64
1704     systems, and the 'dpd' (densely packed decimal) format is default
1705     on PowerPC systems.
1706
1707'--enable-fixed-point'
1708'--disable-fixed-point'
1709     Enable (or disable) support for C fixed-point arithmetic.  This
1710     option is enabled by default for some targets (such as MIPS) which
1711     have hardware-support for fixed-point operations.  On other
1712     targets, you may enable this option manually.
1713
1714'--with-long-double-128'
1715     Specify if 'long double' type should be 128-bit by default on
1716     selected GNU/Linux architectures.  If using
1717     '--without-long-double-128', 'long double' will be by default
1718     64-bit, the same as 'double' type.  When neither of these configure
1719     options are used, the default will be 128-bit 'long double' when
1720     built against GNU C Library 2.4 and later, 64-bit 'long double'
1721     otherwise.
1722
1723'--with-long-double-format=ibm'
1724'--with-long-double-format=ieee'
1725     Specify whether 'long double' uses the IBM extended double format
1726     or the IEEE 128-bit floating point format on PowerPC Linux systems.
1727     This configuration switch will only work on little endian PowerPC
1728     Linux systems and on big endian 64-bit systems where the default
1729     cpu is at least power7 (i.e. '--with-cpu=power7',
1730     '--with-cpu=power8', or '--with-cpu=power9' is used).
1731
1732     If you use the '--with-long-double-64' configuration option, the
1733     '--with-long-double-format=ibm' and
1734     '--with-long-double-format=ieee' options are ignored.
1735
1736     The default 'long double' format is to use IBM extended double.
1737     Until all of the libraries are converted to use IEEE 128-bit
1738     floating point, it is not recommended to use
1739     '--with-long-double-format=ieee'.
1740
1741     On little endian PowerPC Linux systems, if you explicitly set the
1742     'long double' type, it will build multilibs to allow you to select
1743     either 'long double' format, unless you disable multilibs with the
1744     '--disable-multilib' option.  At present, 'long double' multilibs
1745     are not built on big endian PowerPC Linux systems.  If you are
1746     building multilibs, you will need to configure the compiler using
1747     the '--with-system-zlib' option.
1748
1749     If you do not set the 'long double' type explicitly, no multilibs
1750     will be generated.
1751
1752'--enable-fdpic'
1753     On SH Linux systems, generate ELF FDPIC code.
1754
1755'--with-gmp=PATHNAME'
1756'--with-gmp-include=PATHNAME'
1757'--with-gmp-lib=PATHNAME'
1758'--with-mpfr=PATHNAME'
1759'--with-mpfr-include=PATHNAME'
1760'--with-mpfr-lib=PATHNAME'
1761'--with-mpc=PATHNAME'
1762'--with-mpc-include=PATHNAME'
1763'--with-mpc-lib=PATHNAME'
1764     If you want to build GCC but do not have the GMP library, the MPFR
1765     library and/or the MPC library installed in a standard location and
1766     do not have their sources present in the GCC source tree then you
1767     can explicitly specify the directory where they are installed
1768     ('--with-gmp=GMPINSTALLDIR', '--with-mpfr=MPFRINSTALLDIR',
1769     '--with-mpc=MPCINSTALLDIR').  The '--with-gmp=GMPINSTALLDIR' option
1770     is shorthand for '--with-gmp-lib=GMPINSTALLDIR/lib' and
1771     '--with-gmp-include=GMPINSTALLDIR/include'.  Likewise the
1772     '--with-mpfr=MPFRINSTALLDIR' option is shorthand for
1773     '--with-mpfr-lib=MPFRINSTALLDIR/lib' and
1774     '--with-mpfr-include=MPFRINSTALLDIR/include', also the
1775     '--with-mpc=MPCINSTALLDIR' option is shorthand for
1776     '--with-mpc-lib=MPCINSTALLDIR/lib' and
1777     '--with-mpc-include=MPCINSTALLDIR/include'.  If these shorthand
1778     assumptions are not correct, you can use the explicit include and
1779     lib options directly.  You might also need to ensure the shared
1780     libraries can be found by the dynamic linker when building and
1781     using GCC, for example by setting the runtime shared library path
1782     variable ('LD_LIBRARY_PATH' on GNU/Linux and Solaris systems).
1783
1784     These flags are applicable to the host platform only.  When
1785     building a cross compiler, they will not be used to configure
1786     target libraries.
1787
1788'--with-isl=PATHNAME'
1789'--with-isl-include=PATHNAME'
1790'--with-isl-lib=PATHNAME'
1791     If you do not have the isl library installed in a standard location
1792     and you want to build GCC, you can explicitly specify the directory
1793     where it is installed ('--with-isl=ISLINSTALLDIR').  The
1794     '--with-isl=ISLINSTALLDIR' option is shorthand for
1795     '--with-isl-lib=ISLINSTALLDIR/lib' and
1796     '--with-isl-include=ISLINSTALLDIR/include'.  If this shorthand
1797     assumption is not correct, you can use the explicit include and lib
1798     options directly.
1799
1800     These flags are applicable to the host platform only.  When
1801     building a cross compiler, they will not be used to configure
1802     target libraries.
1803
1804'--with-stage1-ldflags=FLAGS'
1805     This option may be used to set linker flags to be used when linking
1806     stage 1 of GCC. These are also used when linking GCC if configured
1807     with '--disable-bootstrap'.  If '--with-stage1-libs' is not set to
1808     a value, then the default is '-static-libstdc++ -static-libgcc', if
1809     supported.
1810
1811'--with-stage1-libs=LIBS'
1812     This option may be used to set libraries to be used when linking
1813     stage 1 of GCC. These are also used when linking GCC if configured
1814     with '--disable-bootstrap'.
1815
1816'--with-boot-ldflags=FLAGS'
1817     This option may be used to set linker flags to be used when linking
1818     stage 2 and later when bootstrapping GCC. If -with-boot-libs is not
1819     is set to a value, then the default is '-static-libstdc++
1820     -static-libgcc'.
1821
1822'--with-boot-libs=LIBS'
1823     This option may be used to set libraries to be used when linking
1824     stage 2 and later when bootstrapping GCC.
1825
1826'--with-debug-prefix-map=MAP'
1827     Convert source directory names using '-fdebug-prefix-map' when
1828     building runtime libraries.  'MAP' is a space-separated list of
1829     maps of the form 'OLD=NEW'.
1830
1831'--enable-linker-build-id'
1832     Tells GCC to pass '--build-id' option to the linker for all final
1833     links (links performed without the '-r' or '--relocatable' option),
1834     if the linker supports it.  If you specify
1835     '--enable-linker-build-id', but your linker does not support
1836     '--build-id' option, a warning is issued and the
1837     '--enable-linker-build-id' option is ignored.  The default is off.
1838
1839'--with-linker-hash-style=CHOICE'
1840     Tells GCC to pass '--hash-style=CHOICE' option to the linker for
1841     all final links.  CHOICE can be one of 'sysv', 'gnu', and 'both'
1842     where 'sysv' is the default.
1843
1844'--enable-gnu-unique-object'
1845'--disable-gnu-unique-object'
1846     Tells GCC to use the gnu_unique_object relocation for C++ template
1847     static data members and inline function local statics.  Enabled by
1848     default for a toolchain with an assembler that accepts it and GLIBC
1849     2.11 or above, otherwise disabled.
1850
1851'--with-diagnostics-color=CHOICE'
1852     Tells GCC to use CHOICE as the default for '-fdiagnostics-color='
1853     option (if not used explicitly on the command line).  CHOICE can be
1854     one of 'never', 'auto', 'always', and 'auto-if-env' where 'auto' is
1855     the default.  'auto-if-env' makes '-fdiagnostics-color=auto' the
1856     default if 'GCC_COLORS' is present and non-empty in the environment
1857     of the compiler, and '-fdiagnostics-color=never' otherwise.
1858
1859'--with-diagnostics-urls=CHOICE'
1860     Tells GCC to use CHOICE as the default for '-fdiagnostics-urls='
1861     option (if not used explicitly on the command line).  CHOICE can be
1862     one of 'never', 'auto', 'always', and 'auto-if-env' where 'auto' is
1863     the default.  'auto-if-env' makes '-fdiagnostics-urls=auto' the
1864     default if 'GCC_URLS' or 'TERM_URLS' is present and non-empty in
1865     the environment of the compiler, and '-fdiagnostics-urls=never'
1866     otherwise.
1867
1868'--enable-lto'
1869'--disable-lto'
1870     Enable support for link-time optimization (LTO). This is enabled by
1871     default, and may be disabled using '--disable-lto'.
1872
1873'--enable-linker-plugin-configure-flags=FLAGS'
1874'--enable-linker-plugin-flags=FLAGS'
1875     By default, linker plugins (such as the LTO plugin) are built for
1876     the host system architecture.  For the case that the linker has a
1877     different (but run-time compatible) architecture, these flags can
1878     be specified to build plugins that are compatible to the linker.
1879     For example, if you are building GCC for a 64-bit x86_64
1880     ('x86_64-pc-linux-gnu') host system, but have a 32-bit x86
1881     GNU/Linux ('i686-pc-linux-gnu') linker executable (which is
1882     executable on the former system), you can configure GCC as follows
1883     for getting compatible linker plugins:
1884
1885          % SRCDIR/configure \
1886              --host=x86_64-pc-linux-gnu \
1887              --enable-linker-plugin-configure-flags=--host=i686-pc-linux-gnu \
1888              --enable-linker-plugin-flags='CC=gcc\ -m32\ -Wl,-rpath,[...]/i686-pc-linux-gnu/lib'
1889
1890'--with-plugin-ld=PATHNAME'
1891     Enable an alternate linker to be used at link-time optimization
1892     (LTO) link time when '-fuse-linker-plugin' is enabled.  This linker
1893     should have plugin support such as gold starting with version 2.20
1894     or GNU ld starting with version 2.21.  See '-fuse-linker-plugin'
1895     for details.
1896
1897'--enable-canonical-system-headers'
1898'--disable-canonical-system-headers'
1899     Enable system header path canonicalization for 'libcpp'.  This can
1900     produce shorter header file paths in diagnostics and dependency
1901     output files, but these changed header paths may conflict with some
1902     compilation environments.  Enabled by default, and may be disabled
1903     using '--disable-canonical-system-headers'.
1904
1905'--with-glibc-version=MAJOR.MINOR'
1906     Tell GCC that when the GNU C Library (glibc) is used on the target
1907     it will be version MAJOR.MINOR or later.  Normally this can be
1908     detected from the C library's header files, but this option may be
1909     needed when bootstrapping a cross toolchain without the header
1910     files available for building the initial bootstrap compiler.
1911
1912     If GCC is configured with some multilibs that use glibc and some
1913     that do not, this option applies only to the multilibs that use
1914     glibc.  However, such configurations may not work well as not all
1915     the relevant configuration in GCC is on a per-multilib basis.
1916
1917'--enable-as-accelerator-for=TARGET'
1918     Build as offload target compiler.  Specify offload host triple by
1919     TARGET.
1920
1921'--enable-offload-targets=TARGET1[=PATH1],...,TARGETN[=PATHN]'
1922     Enable offloading to targets TARGET1, ..., TARGETN.  Offload
1923     compilers are expected to be already installed.  Default search
1924     path for them is 'EXEC-PREFIX', but it can be changed by specifying
1925     paths PATH1, ..., PATHN.
1926
1927          % SRCDIR/configure \
1928              --enable-offload-targets=x86_64-intelmicemul-linux-gnu=/path/to/x86_64/compiler,nvptx-none,hsa
1929
1930     If 'hsa' is specified as one of the targets, the compiler will be
1931     built with support for HSA GPU accelerators.  Because the same
1932     compiler will emit the accelerator code, no path should be
1933     specified.
1934
1935'--with-hsa-runtime=PATHNAME'
1936'--with-hsa-runtime-include=PATHNAME'
1937'--with-hsa-runtime-lib=PATHNAME'
1938
1939     If you configure GCC with HSA offloading but do not have the HSA
1940     run-time library installed in a standard location then you can
1941     explicitly specify the directory where they are installed.  The
1942     '--with-hsa-runtime=HSAINSTALLDIR' option is a shorthand for
1943     '--with-hsa-runtime-lib=HSAINSTALLDIR/lib' and
1944     '--with-hsa-runtime-include=HSAINSTALLDIR/include'.
1945
1946'--enable-cet'
1947'--disable-cet'
1948     Enable building target run-time libraries with control-flow
1949     instrumentation, see '-fcf-protection' option.  When '--enable-cet'
1950     is specified target libraries are configured to add
1951     '-fcf-protection' and, if needed, other target specific options to
1952     a set of building options.
1953
1954     The option is disabled by default.  When '--enable-cet=auto' is
1955     used, it is enabled on Linux/x86 if target binutils supports 'Intel
1956     CET' instructions and disabled otherwise.  In this case the target
1957     libraries are configured to get additional '-fcf-protection'
1958     option.
1959
1960'--with-riscv-attribute='yes', 'no' or 'default''
1961     Generate RISC-V attribute by default, in order to record extra
1962     build information in object.
1963
1964     The option is disabled by default.  It is enabled on RISC-V/ELF
1965     (bare-metal) target if target binutils supported.
1966
1967Cross-Compiler-Specific Options
1968-------------------------------
1969
1970The following options only apply to building cross compilers.
1971
1972'--with-toolexeclibdir=DIR'
1973     Specify the installation directory for libraries built with a cross
1974     compiler.  The default is '${gcc_tooldir}/lib'.
1975
1976'--with-sysroot'
1977'--with-sysroot=DIR'
1978     Tells GCC to consider DIR as the root of a tree that contains (a
1979     subset of) the root filesystem of the target operating system.
1980     Target system headers, libraries and run-time object files will be
1981     searched for in there.  More specifically, this acts as if
1982     '--sysroot=DIR' was added to the default options of the built
1983     compiler.  The specified directory is not copied into the install
1984     tree, unlike the options '--with-headers' and '--with-libs' that
1985     this option obsoletes.  The default value, in case '--with-sysroot'
1986     is not given an argument, is '${gcc_tooldir}/sys-root'.  If the
1987     specified directory is a subdirectory of '${exec_prefix}', then it
1988     will be found relative to the GCC binaries if the installation tree
1989     is moved.
1990
1991     This option affects the system root for the compiler used to build
1992     target libraries (which runs on the build system) and the compiler
1993     newly installed with 'make install'; it does not affect the
1994     compiler which is used to build GCC itself.
1995
1996     If you specify the '--with-native-system-header-dir=DIRNAME' option
1997     then the compiler will search that directory within DIRNAME for
1998     native system headers rather than the default '/usr/include'.
1999
2000'--with-build-sysroot'
2001'--with-build-sysroot=DIR'
2002     Tells GCC to consider DIR as the system root (see '--with-sysroot')
2003     while building target libraries, instead of the directory specified
2004     with '--with-sysroot'.  This option is only useful when you are
2005     already using '--with-sysroot'.  You can use '--with-build-sysroot'
2006     when you are configuring with '--prefix' set to a directory that is
2007     different from the one in which you are installing GCC and your
2008     target libraries.
2009
2010     This option affects the system root for the compiler used to build
2011     target libraries (which runs on the build system); it does not
2012     affect the compiler which is used to build GCC itself.
2013
2014     If you specify the '--with-native-system-header-dir=DIRNAME' option
2015     then the compiler will search that directory within DIRNAME for
2016     native system headers rather than the default '/usr/include'.
2017
2018'--with-headers'
2019'--with-headers=DIR'
2020     Deprecated in favor of '--with-sysroot'.  Specifies that target
2021     headers are available when building a cross compiler.  The DIR
2022     argument specifies a directory which has the target include files.
2023     These include files will be copied into the 'gcc' install
2024     directory.  _This option with the DIR argument is required_ when
2025     building a cross compiler, if 'PREFIX/TARGET/sys-include' doesn't
2026     pre-exist.  If 'PREFIX/TARGET/sys-include' does pre-exist, the DIR
2027     argument may be omitted.  'fixincludes' will be run on these files
2028     to make them compatible with GCC.
2029
2030'--without-headers'
2031     Tells GCC not use any target headers from a libc when building a
2032     cross compiler.  When crossing to GNU/Linux, you need the headers
2033     so GCC can build the exception handling for libgcc.
2034
2035'--with-libs'
2036'--with-libs="DIR1 DIR2 ... DIRN"'
2037     Deprecated in favor of '--with-sysroot'.  Specifies a list of
2038     directories which contain the target runtime libraries.  These
2039     libraries will be copied into the 'gcc' install directory.  If the
2040     directory list is omitted, this option has no effect.
2041
2042'--with-newlib'
2043     Specifies that 'newlib' is being used as the target C library.
2044     This causes '__eprintf' to be omitted from 'libgcc.a' on the
2045     assumption that it will be provided by 'newlib'.
2046
2047'--with-avrlibc'
2048     Only supported for the AVR target.  Specifies that 'AVR-Libc' is
2049     being used as the target C  library.  This causes float support
2050     functions like '__addsf3' to be omitted from 'libgcc.a' on the
2051     assumption that it will be provided by 'libm.a'.  For more
2052     technical details, cf.  PR54461.  It is not supported for RTEMS
2053     configurations, which currently use newlib.  The option is
2054     supported since version 4.7.2 and is the default in 4.8.0 and
2055     newer.
2056
2057'--with-double={32|64|32,64|64,32}'
2058'--with-long-double={32|64|32,64|64,32|double}'
2059     Only supported for the AVR target since version 10.  Specify the
2060     default layout available for the C/C++ 'double' and 'long double'
2061     type, respectively.  The following rules apply:
2062        * The first value after the '=' specifies the default layout (in
2063          bits) of the type and also the default for the '-mdouble='
2064          resp.  '-mlong-double=' compiler option.
2065        * If more than one value is specified, respective multilib
2066          variants are available, and '-mdouble=' resp.
2067          '-mlong-double=' acts as a multilib option.
2068        * If '--with-long-double=double' is specified, 'double' and
2069          'long double' will have the same layout.
2070        * The defaults are '--with-long-double=64,32' and
2071          '--with-double=32,64'.  The default 'double' layout imposed by
2072          the latter is compatible with older versions of the compiler
2073          that implement 'double' as a 32-bit type, which does not
2074          comply to the language standard.
2075     Not all combinations of '--with-double=' and '--with-long-double='
2076     are valid.  For example, the combination '--with-double=32,64'
2077     '--with-long-double=32' will be rejected because the first option
2078     specifies the availability of multilibs for 'double', whereas the
2079     second option implies that 'long double' -- and hence also 'double'
2080     -- is always 32 bits wide.
2081
2082'--with-double-comparison={tristate|bool|libf7}'
2083     Only supported for the AVR target since version 10.  Specify what
2084     result format is returned by library functions that compare 64-bit
2085     floating point values ('DFmode').  The GCC default is 'tristate'.
2086     If the floating point implementation returns a boolean instead, set
2087     it to 'bool'.
2088
2089'--with-libf7={libgcc|math|math-symbols|no}'
2090     Only supported for the AVR target since version 10.  Specify to
2091     which degree code from LibF7 is included in libgcc.  LibF7 is an
2092     ad-hoc, AVR-specific, 64-bit floating point emulation written in C
2093     and (inline) assembly.  'libgcc' adds support for functions that
2094     one would usually expect in libgcc like double addition, double
2095     comparisons and double conversions.  'math' also adds routines that
2096     one would expect in 'libm.a', but with '__' (two underscores)
2097     prepended to the symbol names as specified by 'math.h'.
2098     'math-symbols' also defines weak aliases for the functions declared
2099     in 'math.h'.  However, '--with-libf7' won't install no 'math.h'
2100     header file whatsoever, this file must come from elsewhere.  This
2101     option sets '--with-double-comparison' to 'bool'.
2102
2103'--with-nds32-lib=LIBRARY'
2104     Specifies that LIBRARY setting is used for building 'libgcc.a'.
2105     Currently, the valid LIBRARY is 'newlib' or 'mculib'.  This option
2106     is only supported for the NDS32 target.
2107
2108'--with-build-time-tools=DIR'
2109     Specifies where to find the set of target tools (assembler, linker,
2110     etc.)  that will be used while building GCC itself.  This option
2111     can be useful if the directory layouts are different between the
2112     system you are building GCC on, and the system where you will
2113     deploy it.
2114
2115     For example, on an 'ia64-hp-hpux' system, you may have the GNU
2116     assembler and linker in '/usr/bin', and the native tools in a
2117     different path, and build a toolchain that expects to find the
2118     native tools in '/usr/bin'.
2119
2120     When you use this option, you should ensure that DIR includes 'ar',
2121     'as', 'ld', 'nm', 'ranlib' and 'strip' if necessary, and possibly
2122     'objdump'.  Otherwise, GCC may use an inconsistent set of tools.
2123
2124Overriding 'configure' test results
2125...................................
2126
2127Sometimes, it might be necessary to override the result of some
2128'configure' test, for example in order to ease porting to a new system
2129or work around a bug in a test.  The toplevel 'configure' script
2130provides three variables for this:
2131
2132'build_configargs'
2133     The contents of this variable is passed to all build 'configure'
2134     scripts.
2135
2136'host_configargs'
2137     The contents of this variable is passed to all host 'configure'
2138     scripts.
2139
2140'target_configargs'
2141     The contents of this variable is passed to all target 'configure'
2142     scripts.
2143
2144   In order to avoid shell and 'make' quoting issues for complex
2145overrides, you can pass a setting for 'CONFIG_SITE' and set variables in
2146the site file.
2147
2148Objective-C-Specific Options
2149----------------------------
2150
2151The following options apply to the build of the Objective-C runtime
2152library.
2153
2154'--enable-objc-gc'
2155     Specify that an additional variant of the GNU Objective-C runtime
2156     library is built, using an external build of the
2157     Boehm-Demers-Weiser garbage collector
2158     (<https://www.hboehm.info/gc/>).  This library needs to be
2159     available for each multilib variant, unless configured with
2160     '--enable-objc-gc='auto'' in which case the build of the additional
2161     runtime library is skipped when not available and the build
2162     continues.
2163
2164'--with-target-bdw-gc=LIST'
2165'--with-target-bdw-gc-include=LIST'
2166'--with-target-bdw-gc-lib=LIST'
2167     Specify search directories for the garbage collector header files
2168     and libraries.  LIST is a comma separated list of key value pairs
2169     of the form 'MULTILIBDIR=PATH', where the default multilib key is
2170     named as '.' (dot), or is omitted (e.g.
2171     '--with-target-bdw-gc=/opt/bdw-gc,32=/opt-bdw-gc32').
2172
2173     The options '--with-target-bdw-gc-include' and
2174     '--with-target-bdw-gc-lib' must always be specified together for
2175     each multilib variant and they take precedence over
2176     '--with-target-bdw-gc'.  If '--with-target-bdw-gc-include' is
2177     missing values for a multilib, then the value for the default
2178     multilib is used (e.g.
2179     '--with-target-bdw-gc-include=/opt/bdw-gc/include'
2180     '--with-target-bdw-gc-lib=/opt/bdw-gc/lib64,32=/opt-bdw-gc/lib32').
2181     If none of these options are specified, the library is assumed in
2182     default locations.
2183
2184D-Specific Options
2185------------------
2186
2187The following options apply to the build of the D runtime library.
2188
2189'--enable-libphobos-checking'
2190'--disable-libphobos-checking'
2191'--enable-libphobos-checking=LIST'
2192     This option controls whether run-time checks and contracts are
2193     compiled into the D runtime library.  When the option is not
2194     specified, the library is built with 'release' checking.  When the
2195     option is specified without a LIST, the result is the same as
2196     '--enable-libphobos-checking=yes'.  Likewise,
2197     '--disable-libphobos-checking' is equivalent to
2198     '--enable-libphobos-checking=no'.
2199
2200     The categories of checks available in LIST are 'yes' (compiles
2201     libphobos with '-fno-release'), 'no' (compiles libphobos with
2202     '-frelease'), 'all' (same as 'yes'), 'none' or 'release' (same as
2203     'no').
2204
2205     Individual checks available in LIST are 'assert' (compiles
2206     libphobos with an extra option '-fassert').
2207
2208'--with-libphobos-druntime-only'
2209'--with-libphobos-druntime-only=CHOICE'
2210     Specify whether to build only the core D runtime library
2211     (druntime), or both the core and standard library (phobos) into
2212     libphobos.  This is useful for targets that have full support in
2213     druntime, but no or incomplete support in phobos.  CHOICE can be
2214     one of 'auto', 'yes', and 'no' where 'auto' is the default.
2215
2216     When the option is not specified, the default choice 'auto' means
2217     that it is inferred whether the target has support for the phobos
2218     standard library.  When the option is specified without a CHOICE,
2219     the result is the same as '--with-libphobos-druntime-only=yes'.
2220
2221'--with-target-system-zlib'
2222     Use installed 'zlib' rather than that included with GCC.  This
2223     needs to be available for each multilib variant, unless configured
2224     with '--with-target-system-zlib='auto'' in which case the
2225     GCC included 'zlib' is only used when the system installed library
2226     is not available.
2227
2228
2229File: gccinstall.info,  Node: Building,  Next: Testing,  Prev: Configuration,  Up: Installing GCC
2230
22315 Building
2232**********
2233
2234Now that GCC is configured, you are ready to build the compiler and
2235runtime libraries.
2236
2237   Some commands executed when making the compiler may fail (return a
2238nonzero status) and be ignored by 'make'.  These failures, which are
2239often due to files that were not found, are expected, and can safely be
2240ignored.
2241
2242   It is normal to have compiler warnings when compiling certain files.
2243Unless you are a GCC developer, you can generally ignore these warnings
2244unless they cause compilation to fail.  Developers should attempt to fix
2245any warnings encountered, however they can temporarily continue past
2246warnings-as-errors by specifying the configure flag '--disable-werror'.
2247
2248   On certain old systems, defining certain environment variables such
2249as 'CC' can interfere with the functioning of 'make'.
2250
2251   If you encounter seemingly strange errors when trying to build the
2252compiler in a directory other than the source directory, it could be
2253because you have previously configured the compiler in the source
2254directory.  Make sure you have done all the necessary preparations.
2255
2256   If you build GCC on a BSD system using a directory stored in an old
2257System V file system, problems may occur in running 'fixincludes' if the
2258System V file system doesn't support symbolic links.  These problems
2259result in a failure to fix the declaration of 'size_t' in 'sys/types.h'.
2260If you find that 'size_t' is a signed type and that type mismatches
2261occur, this could be the cause.
2262
2263   The solution is not to use such a directory for building GCC.
2264
2265   Similarly, when building from the source repository or snapshots, or
2266if you modify '*.l' files, you need the Flex lexical analyzer generator
2267installed.  If you do not modify '*.l' files, releases contain the
2268Flex-generated files and you do not need Flex installed to build them.
2269There is still one Flex-based lexical analyzer (part of the build
2270machinery, not of GCC itself) that is used even if you only build the C
2271front end.
2272
2273   When building from the source repository or snapshots, or if you
2274modify Texinfo documentation, you need version 4.7 or later of Texinfo
2275installed if you want Info documentation to be regenerated.  Releases
2276contain Info documentation pre-built for the unmodified documentation in
2277the release.
2278
22795.1 Building a native compiler
2280==============================
2281
2282For a native build, the default configuration is to perform a 3-stage
2283bootstrap of the compiler when 'make' is invoked.  This will build the
2284entire GCC system and ensure that it compiles itself correctly.  It can
2285be disabled with the '--disable-bootstrap' parameter to 'configure', but
2286bootstrapping is suggested because the compiler will be tested more
2287completely and could also have better performance.
2288
2289   The bootstrapping process will complete the following steps:
2290
2291   * Build tools necessary to build the compiler.
2292
2293   * Perform a 3-stage bootstrap of the compiler.  This includes
2294     building three times the target tools for use by the compiler such
2295     as binutils (bfd, binutils, gas, gprof, ld, and opcodes) if they
2296     have been individually linked or moved into the top level GCC
2297     source tree before configuring.
2298
2299   * Perform a comparison test of the stage2 and stage3 compilers.
2300
2301   * Build runtime libraries using the stage3 compiler from the previous
2302     step.
2303
2304   If you are short on disk space you might consider 'make
2305bootstrap-lean' instead.  The sequence of compilation is the same
2306described above, but object files from the stage1 and stage2 of the
23073-stage bootstrap of the compiler are deleted as soon as they are no
2308longer needed.
2309
2310   If you wish to use non-default GCC flags when compiling the stage2
2311and stage3 compilers, set 'BOOT_CFLAGS' on the command line when doing
2312'make'.  For example, if you want to save additional space during the
2313bootstrap and in the final installation as well, you can build the
2314compiler binaries without debugging information as in the following
2315example.  This will save roughly 40% of disk space both for the
2316bootstrap and the final installation.  (Libraries will still contain
2317debugging information.)
2318
2319     make BOOT_CFLAGS='-O' bootstrap
2320
2321   You can place non-default optimization flags into 'BOOT_CFLAGS'; they
2322are less well tested here than the default of '-g -O2', but should still
2323work.  In a few cases, you may find that you need to specify special
2324flags such as '-msoft-float' here to complete the bootstrap; or, if the
2325native compiler miscompiles the stage1 compiler, you may need to work
2326around this, by choosing 'BOOT_CFLAGS' to avoid the parts of the stage1
2327compiler that were miscompiled, or by using 'make bootstrap4' to
2328increase the number of stages of bootstrap.
2329
2330   'BOOT_CFLAGS' does not apply to bootstrapped target libraries.  Since
2331these are always compiled with the compiler currently being
2332bootstrapped, you can use 'CFLAGS_FOR_TARGET' to modify their
2333compilation flags, as for non-bootstrapped target libraries.  Again, if
2334the native compiler miscompiles the stage1 compiler, you may need to
2335work around this by avoiding non-working parts of the stage1 compiler.
2336Use 'STAGE1_TFLAGS' to this end.
2337
2338   If you used the flag '--enable-languages=...' to restrict the
2339compilers to be built, only those you've actually enabled will be built.
2340This will of course only build those runtime libraries, for which the
2341particular compiler has been built.  Please note, that re-defining
2342'LANGUAGES' when calling 'make' *does not* work anymore!
2343
2344   If the comparison of stage2 and stage3 fails, this normally indicates
2345that the stage2 compiler has compiled GCC incorrectly, and is therefore
2346a potentially serious bug which you should investigate and report.  (On
2347a few systems, meaningful comparison of object files is impossible; they
2348always appear "different".  If you encounter this problem, you will need
2349to disable comparison in the 'Makefile'.)
2350
2351   If you do not want to bootstrap your compiler, you can configure with
2352'--disable-bootstrap'.  In particular cases, you may want to bootstrap
2353your compiler even if the target system is not the same as the one you
2354are building on: for example, you could build a
2355'powerpc-unknown-linux-gnu' toolchain on a 'powerpc64-unknown-linux-gnu'
2356host.  In this case, pass '--enable-bootstrap' to the configure script.
2357
2358   'BUILD_CONFIG' can be used to bring in additional customization to
2359the build.  It can be set to a whitespace-separated list of names.  For
2360each such 'NAME', top-level 'config/NAME.mk' will be included by the
2361top-level 'Makefile', bringing in any settings it contains.  The default
2362'BUILD_CONFIG' can be set using the configure option
2363'--with-build-config=NAME...'.  Some examples of supported build
2364configurations are:
2365
2366'bootstrap-O1'
2367     Removes any '-O'-started option from 'BOOT_CFLAGS', and adds '-O1'
2368     to it.  'BUILD_CONFIG=bootstrap-O1' is equivalent to
2369     'BOOT_CFLAGS='-g -O1''.
2370
2371'bootstrap-O3'
2372'bootstrap-Og'
2373     Analogous to 'bootstrap-O1'.
2374
2375'bootstrap-lto'
2376     Enables Link-Time Optimization for host tools during bootstrapping.
2377     'BUILD_CONFIG=bootstrap-lto' is equivalent to adding '-flto' to
2378     'BOOT_CFLAGS'.  This option assumes that the host supports the
2379     linker plugin (e.g. GNU ld version 2.21 or later or GNU gold
2380     version 2.21 or later).
2381
2382'bootstrap-lto-noplugin'
2383     This option is similar to 'bootstrap-lto', but is intended for
2384     hosts that do not support the linker plugin.  Without the linker
2385     plugin static libraries are not compiled with link-time
2386     optimizations.  Since the GCC middle end and back end are in
2387     'libbackend.a' this means that only the front end is actually LTO
2388     optimized.
2389
2390'bootstrap-lto-lean'
2391     This option is similar to 'bootstrap-lto', but is intended for
2392     faster build by only using LTO in the final bootstrap stage.  With
2393     'make profiledbootstrap' the LTO frontend is trained only on
2394     generator files.
2395
2396'bootstrap-debug'
2397     Verifies that the compiler generates the same executable code,
2398     whether or not it is asked to emit debug information.  To this end,
2399     this option builds stage2 host programs without debug information,
2400     and uses 'contrib/compare-debug' to compare them with the stripped
2401     stage3 object files.  If 'BOOT_CFLAGS' is overridden so as to not
2402     enable debug information, stage2 will have it, and stage3 won't.
2403     This option is enabled by default when GCC bootstrapping is
2404     enabled, if 'strip' can turn object files compiled with and without
2405     debug info into identical object files.  In addition to better test
2406     coverage, this option makes default bootstraps faster and leaner.
2407
2408'bootstrap-debug-big'
2409     Rather than comparing stripped object files, as in
2410     'bootstrap-debug', this option saves internal compiler dumps during
2411     stage2 and stage3 and compares them as well, which helps catch
2412     additional potential problems, but at a great cost in terms of disk
2413     space.  It can be specified in addition to 'bootstrap-debug'.
2414
2415'bootstrap-debug-lean'
2416     This option saves disk space compared with 'bootstrap-debug-big',
2417     but at the expense of some recompilation.  Instead of saving the
2418     dumps of stage2 and stage3 until the final compare, it uses
2419     '-fcompare-debug' to generate, compare and remove the dumps during
2420     stage3, repeating the compilation that already took place in
2421     stage2, whose dumps were not saved.
2422
2423'bootstrap-debug-lib'
2424     This option tests executable code invariance over debug information
2425     generation on target libraries, just like 'bootstrap-debug-lean'
2426     tests it on host programs.  It builds stage3 libraries with
2427     '-fcompare-debug', and it can be used along with any of the
2428     'bootstrap-debug' options above.
2429
2430     There aren't '-lean' or '-big' counterparts to this option because
2431     most libraries are only build in stage3, so bootstrap compares
2432     would not get significant coverage.  Moreover, the few libraries
2433     built in stage2 are used in stage3 host programs, so we wouldn't
2434     want to compile stage2 libraries with different options for
2435     comparison purposes.
2436
2437'bootstrap-debug-ckovw'
2438     Arranges for error messages to be issued if the compiler built on
2439     any stage is run without the option '-fcompare-debug'.  This is
2440     useful to verify the full '-fcompare-debug' testing coverage.  It
2441     must be used along with 'bootstrap-debug-lean' and
2442     'bootstrap-debug-lib'.
2443
2444'bootstrap-cet'
2445     This option enables Intel CET for host tools during bootstrapping.
2446     'BUILD_CONFIG=bootstrap-cet' is equivalent to adding
2447     '-fcf-protection' to 'BOOT_CFLAGS'.  This option assumes that the
2448     host supports Intel CET (e.g. GNU assembler version 2.30 or later).
2449
2450'bootstrap-time'
2451     Arranges for the run time of each program started by the GCC
2452     driver, built in any stage, to be logged to 'time.log', in the top
2453     level of the build tree.
2454
2455'bootstrap-asan'
2456     Compiles GCC itself using Address Sanitization in order to catch
2457     invalid memory accesses within the GCC code.
2458
24595.2 Building a cross compiler
2460=============================
2461
2462When building a cross compiler, it is not generally possible to do a
24633-stage bootstrap of the compiler.  This makes for an interesting
2464problem as parts of GCC can only be built with GCC.
2465
2466   To build a cross compiler, we recommend first building and installing
2467a native compiler.  You can then use the native GCC compiler to build
2468the cross compiler.  The installed native compiler needs to be GCC
2469version 2.95 or later.
2470
2471   Assuming you have already installed a native copy of GCC and
2472configured your cross compiler, issue the command 'make', which performs
2473the following steps:
2474
2475   * Build host tools necessary to build the compiler.
2476
2477   * Build target tools for use by the compiler such as binutils (bfd,
2478     binutils, gas, gprof, ld, and opcodes) if they have been
2479     individually linked or moved into the top level GCC source tree
2480     before configuring.
2481
2482   * Build the compiler (single stage only).
2483
2484   * Build runtime libraries using the compiler from the previous step.
2485
2486   Note that if an error occurs in any step the make process will exit.
2487
2488   If you are not building GNU binutils in the same source tree as GCC,
2489you will need a cross-assembler and cross-linker installed before
2490configuring GCC.  Put them in the directory 'PREFIX/TARGET/bin'.  Here
2491is a table of the tools you should put in this directory:
2492
2493'as'
2494     This should be the cross-assembler.
2495
2496'ld'
2497     This should be the cross-linker.
2498
2499'ar'
2500     This should be the cross-archiver: a program which can manipulate
2501     archive files (linker libraries) in the target machine's format.
2502
2503'ranlib'
2504     This should be a program to construct a symbol table in an archive
2505     file.
2506
2507   The installation of GCC will find these programs in that directory,
2508and copy or link them to the proper place to for the cross-compiler to
2509find them when run later.
2510
2511   The easiest way to provide these files is to build the Binutils
2512package.  Configure it with the same '--host' and '--target' options
2513that you use for configuring GCC, then build and install them.  They
2514install their executables automatically into the proper directory.
2515Alas, they do not support all the targets that GCC supports.
2516
2517   If you are not building a C library in the same source tree as GCC,
2518you should also provide the target libraries and headers before
2519configuring GCC, specifying the directories with '--with-sysroot' or
2520'--with-headers' and '--with-libs'.  Many targets also require "start
2521files" such as 'crt0.o' and 'crtn.o' which are linked into each
2522executable.  There may be several alternatives for 'crt0.o', for use
2523with profiling or other compilation options.  Check your target's
2524definition of 'STARTFILE_SPEC' to find out what start files it uses.
2525
25265.3 Building in parallel
2527========================
2528
2529GNU Make 3.80 and above, which is necessary to build GCC, support
2530building in parallel.  To activate this, you can use 'make -j 2' instead
2531of 'make'.  You can also specify a bigger number, and in most cases
2532using a value greater than the number of processors in your machine will
2533result in fewer and shorter I/O latency hits, thus improving overall
2534throughput; this is especially true for slow drives and network
2535filesystems.
2536
25375.4 Building the Ada compiler
2538=============================
2539
2540*note GNAT-prerequisite::.
2541
25425.5 Building with profile feedback
2543==================================
2544
2545It is possible to use profile feedback to optimize the compiler itself.
2546This should result in a faster compiler binary.  Experiments done on x86
2547using gcc 3.3 showed approximately 7 percent speedup on compiling C
2548programs.  To bootstrap the compiler with profile feedback, use 'make
2549profiledbootstrap'.
2550
2551   When 'make profiledbootstrap' is run, it will first build a 'stage1'
2552compiler.  This compiler is used to build a 'stageprofile' compiler
2553instrumented to collect execution counts of instruction and branch
2554probabilities.  Training run is done by building 'stagetrain' compiler.
2555Finally a 'stagefeedback' compiler is built using the information
2556collected.
2557
2558   Unlike standard bootstrap, several additional restrictions apply.
2559The compiler used to build 'stage1' needs to support a 64-bit integral
2560type.  It is recommended to only use GCC for this.
2561
2562   On Linux/x86_64 hosts with some restrictions (no virtualization) it
2563is also possible to do autofdo build with 'make autoprofiledback'.  This
2564uses Linux perf to sample branches in the binary and then rebuild it
2565with feedback derived from the profile.  Linux perf and the 'autofdo'
2566toolkit needs to be installed for this.
2567
2568   Only the profile from the current build is used, so when an error
2569occurs it is recommended to clean before restarting.  Otherwise the code
2570quality may be much worse.
2571
2572
2573File: gccinstall.info,  Node: Testing,  Next: Final install,  Prev: Building,  Up: Installing GCC
2574
25756 Installing GCC: Testing
2576*************************
2577
2578Before you install GCC, we encourage you to run the testsuites and to
2579compare your results with results from a similar configuration that have
2580been submitted to the gcc-testresults mailing list.  Some of these
2581archived results are linked from the build status lists at
2582<http://gcc.gnu.org/buildstat.html>, although not everyone who reports a
2583successful build runs the testsuites and submits the results.  This step
2584is optional and may require you to download additional software, but it
2585can give you confidence in your new GCC installation or point out
2586problems before you install and start using your new GCC.
2587
2588   First, you must have downloaded the testsuites.  These are part of
2589the full distribution, but if you downloaded the "core" compiler plus
2590any front ends, you must download the testsuites separately.
2591
2592   Second, you must have the testing tools installed.  This includes
2593DejaGnu, Tcl, and Expect; the DejaGnu site has links to these.  For
2594running the BRIG frontend tests, a tool to assemble the binary BRIGs
2595from HSAIL text, HSAILasm must be installed.
2596
2597   If the directories where 'runtest' and 'expect' were installed are
2598not in the 'PATH', you may need to set the following environment
2599variables appropriately, as in the following example (which assumes that
2600DejaGnu has been installed under '/usr/local'):
2601
2602     TCL_LIBRARY = /usr/local/share/tcl8.0
2603     DEJAGNULIBS = /usr/local/share/dejagnu
2604
2605   (On systems such as Cygwin, these paths are required to be actual
2606paths, not mounts or links; presumably this is due to some lack of
2607portability in the DejaGnu code.)
2608
2609   Finally, you can run the testsuite (which may take a long time):
2610     cd OBJDIR; make -k check
2611
2612   This will test various components of GCC, such as compiler front ends
2613and runtime libraries.  While running the testsuite, DejaGnu might emit
2614some harmless messages resembling 'WARNING: Couldn't find the global
2615config file.' or 'WARNING: Couldn't find tool init file' that can be
2616ignored.
2617
2618   If you are testing a cross-compiler, you may want to run the
2619testsuite on a simulator as described at
2620<http://gcc.gnu.org/simtest-howto.html>.
2621
26226.1 How can you run the testsuite on selected tests?
2623====================================================
2624
2625In order to run sets of tests selectively, there are targets 'make
2626check-gcc' and language specific 'make check-c', 'make check-c++', 'make
2627check-d' 'make check-fortran', 'make check-ada', 'make check-objc',
2628'make check-obj-c++', 'make check-lto' in the 'gcc' subdirectory of the
2629object directory.  You can also just run 'make check' in a subdirectory
2630of the object directory.
2631
2632   A more selective way to just run all 'gcc' execute tests in the
2633testsuite is to use
2634
2635     make check-gcc RUNTESTFLAGS="execute.exp OTHER-OPTIONS"
2636
2637   Likewise, in order to run only the 'g++' "old-deja" tests in the
2638testsuite with filenames matching '9805*', you would use
2639
2640     make check-g++ RUNTESTFLAGS="old-deja.exp=9805* OTHER-OPTIONS"
2641
2642   The file-matching expression following FILENAME'.exp=' is treated as
2643a series of whitespace-delimited glob expressions so that multiple
2644patterns may be passed, although any whitespace must either be escaped
2645or surrounded by single quotes if multiple expressions are desired.  For
2646example,
2647
2648     make check-g++ RUNTESTFLAGS="old-deja.exp=9805*\ virtual2.c OTHER-OPTIONS"
2649     make check-g++ RUNTESTFLAGS="'old-deja.exp=9805* virtual2.c' OTHER-OPTIONS"
2650
2651   The '*.exp' files are located in the testsuite directories of the GCC
2652source, the most important ones being 'compile.exp', 'execute.exp',
2653'dg.exp' and 'old-deja.exp'.  To get a list of the possible '*.exp'
2654files, pipe the output of 'make check' into a file and look at the
2655'Running ... .exp' lines.
2656
26576.2 Passing options and running multiple testsuites
2658===================================================
2659
2660You can pass multiple options to the testsuite using the
2661'--target_board' option of DejaGNU, either passed as part of
2662'RUNTESTFLAGS', or directly to 'runtest' if you prefer to work outside
2663the makefiles.  For example,
2664
2665     make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fmerge-constants"
2666
2667   will run the standard 'g++' testsuites ("unix" is the target name for
2668a standard native testsuite situation), passing '-O3 -fmerge-constants'
2669to the compiler on every test, i.e., slashes separate options.
2670
2671   You can run the testsuites multiple times using combinations of
2672options with a syntax similar to the brace expansion of popular shells:
2673
2674     ..."--target_board=arm-sim\{-mhard-float,-msoft-float\}\{-O1,-O2,-O3,\}"
2675
2676   (Note the empty option caused by the trailing comma in the final
2677group.)  The following will run each testsuite eight times using the
2678'arm-sim' target, as if you had specified all possible combinations
2679yourself:
2680
2681     --target_board='arm-sim/-mhard-float/-O1 \
2682                     arm-sim/-mhard-float/-O2 \
2683                     arm-sim/-mhard-float/-O3 \
2684                     arm-sim/-mhard-float \
2685                     arm-sim/-msoft-float/-O1 \
2686                     arm-sim/-msoft-float/-O2 \
2687                     arm-sim/-msoft-float/-O3 \
2688                     arm-sim/-msoft-float'
2689
2690   They can be combined as many times as you wish, in arbitrary ways.
2691This list:
2692
2693     ..."--target_board=unix/-Wextra\{-O3,-fno-strength\}\{-fomit-frame,\}"
2694
2695   will generate four combinations, all involving '-Wextra'.
2696
2697   The disadvantage to this method is that the testsuites are run in
2698serial, which is a waste on multiprocessor systems.  For users with GNU
2699Make and a shell which performs brace expansion, you can run the
2700testsuites in parallel by having the shell perform the combinations and
2701'make' do the parallel runs.  Instead of using '--target_board', use a
2702special makefile target:
2703
2704     make -jN check-TESTSUITE//TEST-TARGET/OPTION1/OPTION2/...
2705
2706   For example,
2707
2708     make -j3 check-gcc//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
2709
2710   will run three concurrent "make-gcc" testsuites, eventually testing
2711all ten combinations as described above.  Note that this is currently
2712only supported in the 'gcc' subdirectory.  (To see how this works, try
2713typing 'echo' before the example given here.)
2714
27156.3 How to interpret test results
2716=================================
2717
2718The result of running the testsuite are various '*.sum' and '*.log'
2719files in the testsuite subdirectories.  The '*.log' files contain a
2720detailed log of the compiler invocations and the corresponding results,
2721the '*.sum' files summarize the results.  These summaries contain status
2722codes for all tests:
2723
2724   * PASS: the test passed as expected
2725   * XPASS: the test unexpectedly passed
2726   * FAIL: the test unexpectedly failed
2727   * XFAIL: the test failed as expected
2728   * UNSUPPORTED: the test is not supported on this platform
2729   * ERROR: the testsuite detected an error
2730   * WARNING: the testsuite detected a possible problem
2731
2732   It is normal for some tests to report unexpected failures.  At the
2733current time the testing harness does not allow fine grained control
2734over whether or not a test is expected to fail.  This problem should be
2735fixed in future releases.
2736
27376.4 Submitting test results
2738===========================
2739
2740If you want to report the results to the GCC project, use the
2741'contrib/test_summary' shell script.  Start it in the OBJDIR with
2742
2743     SRCDIR/contrib/test_summary -p your_commentary.txt \
2744         -m gcc-testresults@gcc.gnu.org |sh
2745
2746   This script uses the 'Mail' program to send the results, so make sure
2747it is in your 'PATH'.  The file 'your_commentary.txt' is prepended to
2748the testsuite summary and should contain any special remarks you have on
2749your results or your build environment.  Please do not edit the
2750testsuite result block or the subject line, as these messages may be
2751automatically processed.
2752
2753
2754File: gccinstall.info,  Node: Final install,  Prev: Testing,  Up: Installing GCC
2755
27567 Installing GCC: Final installation
2757************************************
2758
2759Now that GCC has been built (and optionally tested), you can install it
2760with
2761     cd OBJDIR && make install
2762
2763   We strongly recommend to install into a target directory where there
2764is no previous version of GCC present.  Also, the GNAT runtime should
2765not be stripped, as this would break certain features of the debugger
2766that depend on this debugging information (catching Ada exceptions for
2767instance).
2768
2769   That step completes the installation of GCC; user level binaries can
2770be found in 'PREFIX/bin' where PREFIX is the value you specified with
2771the '--prefix' to configure (or '/usr/local' by default).  (If you
2772specified '--bindir', that directory will be used instead; otherwise, if
2773you specified '--exec-prefix', 'EXEC-PREFIX/bin' will be used.)  Headers
2774for the C++ library are installed in 'PREFIX/include'; libraries in
2775'LIBDIR' (normally 'PREFIX/lib'); internal parts of the compiler in
2776'LIBDIR/gcc' and 'LIBEXECDIR/gcc'; documentation in info format in
2777'INFODIR' (normally 'PREFIX/info').
2778
2779   When installing cross-compilers, GCC's executables are not only
2780installed into 'BINDIR', that is, 'EXEC-PREFIX/bin', but additionally
2781into 'EXEC-PREFIX/TARGET-ALIAS/bin', if that directory exists.
2782Typically, such "tooldirs" hold target-specific binutils, including
2783assembler and linker.
2784
2785   Installation into a temporary staging area or into a 'chroot' jail
2786can be achieved with the command
2787
2788     make DESTDIR=PATH-TO-ROOTDIR install
2789
2790where PATH-TO-ROOTDIR is the absolute path of a directory relative to
2791which all installation paths will be interpreted.  Note that the
2792directory specified by 'DESTDIR' need not exist yet; it will be created
2793if necessary.
2794
2795   There is a subtle point with tooldirs and 'DESTDIR': If you relocate
2796a cross-compiler installation with e.g. 'DESTDIR=ROOTDIR', then the
2797directory 'ROOTDIR/EXEC-PREFIX/TARGET-ALIAS/bin' will be filled with
2798duplicated GCC executables only if it already exists, it will not be
2799created otherwise.  This is regarded as a feature, not as a bug, because
2800it gives slightly more control to the packagers using the 'DESTDIR'
2801feature.
2802
2803   You can install stripped programs and libraries with
2804
2805     make install-strip
2806
2807   If you are bootstrapping a released version of GCC then please
2808quickly review the build status page for your release, available from
2809<http://gcc.gnu.org/buildstat.html>.  If your system is not listed for
2810the version of GCC that you built, send a note to <gcc@gcc.gnu.org>
2811indicating that you successfully built and installed GCC.  Include the
2812following information:
2813
2814   * Output from running 'SRCDIR/config.guess'.  Do not send that file
2815     itself, just the one-line output from running it.
2816
2817   * The output of 'gcc -v' for your newly installed 'gcc'.  This tells
2818     us which version of GCC you built and the options you passed to
2819     configure.
2820
2821   * Whether you enabled all languages or a subset of them.  If you used
2822     a full distribution then this information is part of the configure
2823     options in the output of 'gcc -v', but if you downloaded the "core"
2824     compiler plus additional front ends then it isn't apparent which
2825     ones you built unless you tell us about it.
2826
2827   * If the build was for GNU/Linux, also include:
2828        * The distribution name and version (e.g., Red Hat 7.1 or Debian
2829          2.2.3); this information should be available from
2830          '/etc/issue'.
2831
2832        * The version of the Linux kernel, available from 'uname
2833          --version' or 'uname -a'.
2834
2835        * The version of glibc you used; for RPM-based systems like Red
2836          Hat, Mandrake, and SuSE type 'rpm -q glibc' to get the glibc
2837          version, and on systems like Debian and Progeny use 'dpkg -l
2838          libc6'.
2839     For other systems, you can include similar information if you think
2840     it is relevant.
2841
2842   * Any other information that you think would be useful to people
2843     building GCC on the same configuration.  The new entry in the build
2844     status list will include a link to the archived copy of your
2845     message.
2846
2847   We'd also like to know if the *note host/target specific installation
2848notes: Specific. didn't include your host/target information or if that
2849information is incomplete or out of date.  Send a note to
2850<gcc@gcc.gnu.org> detailing how the information should be changed.
2851
2852   If you find a bug, please report it following the bug reporting
2853guidelines.
2854
2855   If you want to print the GCC manuals, do 'cd OBJDIR; make dvi'.  You
2856will need to have 'texi2dvi' (version at least 4.7) and TeX installed.
2857This creates a number of '.dvi' files in subdirectories of 'OBJDIR';
2858these may be converted for printing with programs such as 'dvips'.
2859Alternately, by using 'make pdf' in place of 'make dvi', you can create
2860documentation in the form of '.pdf' files; this requires 'texi2pdf',
2861which is included with Texinfo version 4.8 and later.  You can also buy
2862printed manuals from the Free Software Foundation, though such manuals
2863may not be for the most recent version of GCC.
2864
2865   If you would like to generate online HTML documentation, do 'cd
2866OBJDIR; make html' and HTML will be generated for the gcc manuals in
2867'OBJDIR/gcc/HTML'.
2868
2869
2870File: gccinstall.info,  Node: Binaries,  Next: Specific,  Prev: Installing GCC,  Up: Top
2871
28728 Installing GCC: Binaries
2873**************************
2874
2875We are often asked about pre-compiled versions of GCC.  While we cannot
2876provide these for all platforms, below you'll find links to binaries for
2877various platforms where creating them by yourself is not easy due to
2878various reasons.
2879
2880   Please note that we did not create these binaries, nor do we support
2881them.  If you have any problems installing them, please contact their
2882makers.
2883
2884   * AIX:
2885        * Bull's Open Source Software Archive for for AIX 6 and AIX 7;
2886
2887        * AIX Open Source Packages (AIX5L AIX 6.1 AIX 7.1).
2888
2889   * DOS--DJGPP.
2890
2891   * HP-UX:
2892        * HP-UX Porting Center;
2893
2894   * Solaris 2 (SPARC, Intel):
2895        * OpenCSW
2896
2897   * macOS:
2898        * The Homebrew package manager;
2899        * MacPorts.
2900
2901   * Microsoft Windows:
2902        * The Cygwin project;
2903        * The MinGW and mingw-w64 projects.
2904
2905   * OpenPKG offers binaries for quite a number of platforms.
2906
2907   * The GFortran Wiki has links to GNU Fortran binaries for several
2908     platforms.
2909
2910
2911File: gccinstall.info,  Node: Specific,  Next: Old,  Prev: Binaries,  Up: Top
2912
29139 Host/target specific installation notes for GCC
2914*************************************************
2915
2916Please read this document carefully _before_ installing the GNU Compiler
2917Collection on your machine.
2918
2919   Note that this list of install notes is _not_ a list of supported
2920hosts or targets.  Not all supported hosts and targets are listed here,
2921only the ones that require host-specific or target-specific information
2922have to.
2923
2924aarch64*-*-*
2925============
2926
2927Binutils pre 2.24 does not have support for selecting '-mabi' and does
2928not support ILP32.  If it is used to build GCC 4.9 or later, GCC will
2929not support option '-mabi=ilp32'.
2930
2931   To enable a workaround for the Cortex-A53 erratum number 835769 by
2932default (for all CPUs regardless of -mcpu option given) at configure
2933time use the '--enable-fix-cortex-a53-835769' option.  This will enable
2934the fix by default and can be explicitly disabled during compilation by
2935passing the '-mno-fix-cortex-a53-835769' option.  Conversely,
2936'--disable-fix-cortex-a53-835769' will disable the workaround by
2937default.  The workaround is disabled by default if neither of
2938'--enable-fix-cortex-a53-835769' or '--disable-fix-cortex-a53-835769' is
2939given at configure time.
2940
2941   To enable a workaround for the Cortex-A53 erratum number 843419 by
2942default (for all CPUs regardless of -mcpu option given) at configure
2943time use the '--enable-fix-cortex-a53-843419' option.  This workaround
2944is applied at link time.  Enabling the workaround will cause GCC to pass
2945the relevant option to the linker.  It can be explicitly disabled during
2946compilation by passing the '-mno-fix-cortex-a53-843419' option.
2947Conversely, '--disable-fix-cortex-a53-843419' will disable the
2948workaround by default.  The workaround is disabled by default if neither
2949of '--enable-fix-cortex-a53-843419' or '--disable-fix-cortex-a53-843419'
2950is given at configure time.
2951
2952   To enable Branch Target Identification Mechanism and Return Address
2953Signing by default at configure time use the
2954'--enable-standard-branch-protection' option.  This is equivalent to
2955having '-mbranch-protection=standard' during compilation.  This can be
2956explicitly disabled during compilation by passing the
2957'-mbranch-protection=none' option which turns off all types of branch
2958protections.  Conversely, '--disable-standard-branch-protection' will
2959disable both the protections by default.  This mechanism is turned off
2960by default if neither of the options are given at configure time.
2961
2962alpha*-*-*
2963==========
2964
2965This section contains general configuration information for all
2966Alpha-based platforms using ELF.  In addition to reading this section,
2967please read all other sections that match your target.
2968
2969amd64-*-solaris2*
2970=================
2971
2972This is a synonym for 'x86_64-*-solaris2*'.
2973
2974amdgcn-*-amdhsa
2975===============
2976
2977AMD GCN GPU target.
2978
2979   Instead of GNU Binutils, you will need to install LLVM 6, or later,
2980and copy 'bin/llvm-mc' to 'amdgcn-amdhsa/bin/as', 'bin/lld' to
2981'amdgcn-amdhsa/bin/ld', 'bin/llvm-nm' to 'amdgcn-amdhsa/bin/nm', and
2982'bin/llvm-ar' to both 'bin/amdgcn-amdhsa-ar' and
2983'bin/amdgcn-amdhsa-ranlib'.
2984
2985   Use Newlib (2019-01-16, or newer).
2986
2987   To run the binaries, install the HSA Runtime from the ROCm Platform,
2988and use 'libexec/gcc/amdhsa-amdhsa/VERSION/gcn-run' to launch them on
2989the GPU.
2990
2991arc-*-elf32
2992===========
2993
2994Use 'configure --target=arc-elf32 --with-cpu=CPU
2995--enable-languages="c,c++"' to configure GCC, with CPU being one of
2996'arc600', 'arc601', or 'arc700'.
2997
2998arc-linux-uclibc
2999================
3000
3001Use 'configure --target=arc-linux-uclibc --with-cpu=arc700
3002--enable-languages="c,c++"' to configure GCC.
3003
3004arm-*-eabi
3005==========
3006
3007ARM-family processors.
3008
3009   Building the Ada frontend commonly fails (an infinite loop executing
3010'xsinfo') if the host compiler is GNAT 4.8.  Host compilers built from
3011the GNAT 4.6, 4.9 or 5 release branches are known to succeed.
3012
3013avr
3014===
3015
3016ATMEL AVR-family micro controllers.  These are used in embedded
3017applications.  There are no standard Unix configurations.  *Note AVR
3018Options: (gcc)AVR Options, for the list of supported MCU types.
3019
3020   Use 'configure --target=avr --enable-languages="c"' to configure GCC.
3021
3022   Further installation notes and other useful information about AVR
3023tools can also be obtained from:
3024
3025   * http://www.nongnu.org/avr/
3026   * http://www.amelek.gda.pl/avr/
3027
3028   The following error:
3029     Error: register required
3030
3031   indicates that you should upgrade to a newer version of the binutils.
3032
3033Blackfin
3034========
3035
3036The Blackfin processor, an Analog Devices DSP. *Note Blackfin Options:
3037(gcc)Blackfin Options,
3038
3039   More information, and a version of binutils with support for this
3040processor, are available at
3041<https://sourceforge.net/projects/adi-toolchain/>.
3042
3043CR16
3044====
3045
3046The CR16 CompactRISC architecture is a 16-bit architecture.  This
3047architecture is used in embedded applications.
3048
3049   *Note CR16 Options: (gcc)CR16 Options,
3050
3051   Use 'configure --target=cr16-elf --enable-languages=c,c++' to
3052configure GCC for building a CR16 elf cross-compiler.
3053
3054   Use 'configure --target=cr16-uclinux --enable-languages=c,c++' to
3055configure GCC for building a CR16 uclinux cross-compiler.
3056
3057CRIS
3058====
3059
3060CRIS is the CPU architecture in Axis Communications ETRAX
3061system-on-a-chip series.  These are used in embedded applications.
3062
3063   *Note CRIS Options: (gcc)CRIS Options, for a list of CRIS-specific
3064options.
3065
3066   There are a few different CRIS targets:
3067'cris-axis-elf'
3068     Mainly for monolithic embedded systems.  Includes a multilib for
3069     the 'v10' core used in 'ETRAX 100 LX'.
3070'cris-axis-linux-gnu'
3071     A GNU/Linux port for the CRIS architecture, currently targeting
3072     'ETRAX 100 LX' by default.
3073
3074   Pre-packaged tools can be obtained from
3075<ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/>.  More
3076information about this platform is available at
3077<http://developer.axis.com/>.
3078
3079DOS
3080===
3081
3082Please have a look at the binaries page.
3083
3084   You cannot install GCC by itself on MSDOS; it will not compile under
3085any MSDOS compiler except itself.  You need to get the complete
3086compilation package DJGPP, which includes binaries as well as sources,
3087and includes all the necessary compilation tools and libraries.
3088
3089epiphany-*-elf
3090==============
3091
3092Adapteva Epiphany.  This configuration is intended for embedded systems.
3093
3094*-*-freebsd*
3095============
3096
3097Support for FreeBSD 1 was discontinued in GCC 3.2.  Support for FreeBSD
30982 (and any mutant a.out variants of FreeBSD 3) was discontinued in GCC
30994.0.
3100
3101   In order to better utilize FreeBSD base system functionality and
3102match the configuration of the system compiler, GCC 4.5 and above as
3103well as GCC 4.4 past 2010-06-20 leverage SSP support in libc (which is
3104present on FreeBSD 7 or later) and the use of '__cxa_atexit' by default
3105(on FreeBSD 6 or later).  The use of 'dl_iterate_phdr' inside
3106'libgcc_s.so.1' and boehm-gc (on FreeBSD 7 or later) is enabled by GCC
31074.5 and above.
3108
3109   We support FreeBSD using the ELF file format with DWARF 2 debugging
3110for all CPU architectures.  You may use '-gstabs' instead of '-g', if
3111you really want the old debugging format.  There are no known issues
3112with mixing object files and libraries with different debugging formats.
3113Otherwise, this release of GCC should now match more of the
3114configuration used in the stock FreeBSD configuration of GCC.  In
3115particular, '--enable-threads' is now configured by default.  However,
3116as a general user, do not attempt to replace the system compiler with
3117this release.  Known to bootstrap and check with good results on FreeBSD
31187.2-STABLE.  In the past, known to bootstrap and check with good results
3119on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4, 4.5, 4.8, 4.9 and 5-CURRENT.
3120
3121   The version of binutils installed in '/usr/bin' probably works with
3122this release of GCC.  Bootstrapping against the latest GNU binutils
3123and/or the version found in '/usr/ports/devel/binutils' has been known
3124to enable additional features and improve overall testsuite results.
3125However, it is currently known that boehm-gc may not configure properly
3126on FreeBSD prior to the FreeBSD 7.0 release with GNU binutils after
31272.16.1.
3128
3129ft32-*-elf
3130==========
3131
3132The FT32 processor.  This configuration is intended for embedded
3133systems.
3134
3135h8300-hms
3136=========
3137
3138Renesas H8/300 series of processors.
3139
3140   Please have a look at the binaries page.
3141
3142   The calling convention and structure layout has changed in release
31432.6.  All code must be recompiled.  The calling convention now passes
3144the first three arguments in function calls in registers.  Structures
3145are no longer a multiple of 2 bytes.
3146
3147hppa*-hp-hpux*
3148==============
3149
3150Support for HP-UX version 9 and older was discontinued in GCC 3.4.
3151
3152   We require using gas/binutils on all hppa platforms.  Version 2.19 or
3153later is recommended.
3154
3155   It may be helpful to configure GCC with the '--with-gnu-as' and
3156'--with-as=...' options to ensure that GCC can find GAS.
3157
3158   The HP assembler should not be used with GCC. It is rarely tested and
3159may not work.  It shouldn't be used with any languages other than C due
3160to its many limitations.
3161
3162   Specifically, '-g' does not work (HP-UX uses a peculiar debugging
3163format which GCC does not know about).  It also inserts timestamps into
3164each object file it creates, causing the 3-stage comparison test to fail
3165during a bootstrap.  You should be able to continue by saying 'make
3166all-host all-target' after getting the failure from 'make'.
3167
3168   Various GCC features are not supported.  For example, it does not
3169support weak symbols or alias definitions.  As a result, explicit
3170template instantiations are required when using C++.  This makes it
3171difficult if not impossible to build many C++ applications.
3172
3173   There are two default scheduling models for instructions.  These are
3174PROCESSOR_7100LC and PROCESSOR_8000.  They are selected from the pa-risc
3175architecture specified for the target machine when configuring.
3176PROCESSOR_8000 is the default.  PROCESSOR_7100LC is selected when the
3177target is a 'hppa1*' machine.
3178
3179   The PROCESSOR_8000 model is not well suited to older processors.
3180Thus, it is important to completely specify the machine architecture
3181when configuring if you want a model other than PROCESSOR_8000.  The
3182macro TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different
3183default scheduling model is desired.
3184
3185   As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10 through
318611.00, and the UNIX 98 namespace for HP-UX 11.11 and later.  This
3187namespace change might cause problems when bootstrapping with an earlier
3188version of GCC or the HP compiler as essentially the same namespace is
3189required for an entire build.  This problem can be avoided in a number
3190of ways.  With HP cc, 'UNIX_STD' can be set to '95' or '98'.  Another
3191way is to add an appropriate set of predefines to 'CC'.  The description
3192for the 'munix=' option contains a list of the predefines used with each
3193standard.
3194
3195   More specific information to 'hppa*-hp-hpux*' targets follows.
3196
3197hppa*-hp-hpux10
3198===============
3199
3200For hpux10.20, we _highly_ recommend you pick up the latest sed patch
3201'PHCO_19798' from HP.
3202
3203   The C++ ABI has changed incompatibly in GCC 4.0.  COMDAT subspaces
3204are used for one-only code and data.  This resolves many of the previous
3205problems in using C++ on this target.  However, the ABI is not
3206compatible with the one implemented under HP-UX 11 using secondary
3207definitions.
3208
3209hppa*-hp-hpux11
3210===============
3211
3212GCC 3.0 and up support HP-UX 11.  GCC 2.95.x is not supported and cannot
3213be used to compile GCC 3.0 and up.
3214
3215   The libffi library haven't been ported to 64-bit HP-UX and doesn't
3216build.
3217
3218   Refer to binaries for information about obtaining precompiled GCC
3219binaries for HP-UX.  Precompiled binaries must be obtained to build the
3220Ada language as it cannot be bootstrapped using C.  Ada is only
3221available for the 32-bit PA-RISC runtime.
3222
3223   Starting with GCC 3.4 an ISO C compiler is required to bootstrap.
3224The bundled compiler supports only traditional C; you will need either
3225HP's unbundled compiler, or a binary distribution of GCC.
3226
3227   It is possible to build GCC 3.3 starting with the bundled HP
3228compiler, but the process requires several steps.  GCC 3.3 can then be
3229used to build later versions.
3230
3231   There are several possible approaches to building the distribution.
3232Binutils can be built first using the HP tools.  Then, the GCC
3233distribution can be built.  The second approach is to build GCC first
3234using the HP tools, then build binutils, then rebuild GCC.  There have
3235been problems with various binary distributions, so it is best not to
3236start from a binary distribution.
3237
3238   On 64-bit capable systems, there are two distinct targets.  Different
3239installation prefixes must be used if both are to be installed on the
3240same system.  The 'hppa[1-2]*-hp-hpux11*' target generates code for the
324132-bit PA-RISC runtime architecture and uses the HP linker.  The
3242'hppa64-hp-hpux11*' target generates 64-bit code for the PA-RISC 2.0
3243architecture.
3244
3245   The script config.guess now selects the target type based on the
3246compiler detected during configuration.  You must define 'PATH' or 'CC'
3247so that configure finds an appropriate compiler for the initial
3248bootstrap.  When 'CC' is used, the definition should contain the options
3249that are needed whenever 'CC' is used.
3250
3251   Specifically, options that determine the runtime architecture must be
3252in 'CC' to correctly select the target for the build.  It is also
3253convenient to place many other compiler options in 'CC'.  For example,
3254'CC="cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE"' can be
3255used to bootstrap the GCC 3.3 branch with the HP compiler in 64-bit
3256K&R/bundled mode.  The '+DA2.0W' option will result in the automatic
3257selection of the 'hppa64-hp-hpux11*' target.  The macro definition table
3258of cpp needs to be increased for a successful build with the HP
3259compiler.  _CLASSIC_TYPES and _HPUX_SOURCE need to be defined when
3260building with the bundled compiler, or when using the '-Ac' option.
3261These defines aren't necessary with '-Ae'.
3262
3263   It is best to explicitly configure the 'hppa64-hp-hpux11*' target
3264with the '--with-ld=...' option.  This overrides the standard search for
3265ld.  The two linkers supported on this target require different
3266commands.  The default linker is determined during configuration.  As a
3267result, it's not possible to switch linkers in the middle of a GCC
3268build.  This has been reported to sometimes occur in unified builds of
3269binutils and GCC.
3270
3271   A recent linker patch must be installed for the correct operation of
3272GCC 3.3 and later.  'PHSS_26559' and 'PHSS_24304' are the oldest linker
3273patches that are known to work.  They are for HP-UX 11.00 and 11.11,
3274respectively.  'PHSS_24303', the companion to 'PHSS_24304', might be
3275usable but it hasn't been tested.  These patches have been superseded.
3276Consult the HP patch database to obtain the currently recommended linker
3277patch for your system.
3278
3279   The patches are necessary for the support of weak symbols on the
328032-bit port, and for the running of initializers and finalizers.  Weak
3281symbols are implemented using SOM secondary definition symbols.  Prior
3282to HP-UX 11, there are bugs in the linker support for secondary symbols.
3283The patches correct a problem of linker core dumps creating shared
3284libraries containing secondary symbols, as well as various other linking
3285issues involving secondary symbols.
3286
3287   GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to
3288run initializers and finalizers on the 64-bit port.  The 32-bit port
3289uses the linker '+init' and '+fini' options for the same purpose.  The
3290patches correct various problems with the +init/+fini options, including
3291program core dumps.  Binutils 2.14 corrects a problem on the 64-bit port
3292resulting from HP's non-standard use of the .init and .fini sections for
3293array initializers and finalizers.
3294
3295   Although the HP and GNU linkers are both supported for the
3296'hppa64-hp-hpux11*' target, it is strongly recommended that the HP
3297linker be used for link editing on this target.
3298
3299   At this time, the GNU linker does not support the creation of long
3300branch stubs.  As a result, it cannot successfully link binaries
3301containing branch offsets larger than 8 megabytes.  In addition, there
3302are problems linking shared libraries, linking executables with
3303'-static', and with dwarf2 unwind and exception support.  It also
3304doesn't provide stubs for internal calls to global functions in shared
3305libraries, so these calls cannot be overloaded.
3306
3307   The HP dynamic loader does not support GNU symbol versioning, so
3308symbol versioning is not supported.  It may be necessary to disable
3309symbol versioning with '--disable-symvers' when using GNU ld.
3310
3311   POSIX threads are the default.  The optional DCE thread library is
3312not supported, so '--enable-threads=dce' does not work.
3313
3314*-*-linux-gnu
3315=============
3316
3317Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present
3318in glibc 2.2.5 and later.  More information is available in the
3319libstdc++-v3 documentation.
3320
3321i?86-*-linux*
3322=============
3323
3324As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
3325See bug 10877 for more information.
3326
3327   If you receive Signal 11 errors when building on GNU/Linux, then it
3328is possible you have a hardware problem.  Further information on this
3329can be found on www.bitwizard.nl.
3330
3331i?86-*-solaris2*
3332================
3333
3334Use this for Solaris 11.3 or later on x86 and x86-64 systems.  Starting
3335with GCC 4.7, there is also a 64-bit 'amd64-*-solaris2*' or
3336'x86_64-*-solaris2*' configuration that corresponds to
3337'sparcv9-sun-solaris2*'.
3338
3339   It is recommended that you configure GCC to use the GNU assembler.
3340The versions included in Solaris 11.3, from GNU binutils 2.23.1 or newer
3341(available as '/usr/bin/gas' and '/usr/gnu/bin/as'), work fine.  The
3342current version, from GNU binutils 2.34, is known to work.  Recent
3343versions of the Solaris assembler in '/usr/bin/as' work almost as well,
3344though.
3345
3346   For linking, the Solaris linker is preferred.  If you want to use the
3347GNU linker instead, the version in Solaris 11.3, from GNU binutils
33482.23.1 or newer (in '/usr/gnu/bin/ld' and '/usr/bin/gld'), works, as
3349does the latest version, from GNU binutils 2.34.
3350
3351   To use GNU 'as', configure with the options '--with-gnu-as
3352--with-as=/usr/gnu/bin/as'.  It may be necessary to configure with
3353'--without-gnu-ld --with-ld=/usr/ccs/bin/ld' to guarantee use of Solaris
3354'ld'.
3355
3356ia64-*-linux
3357============
3358
3359IA-64 processor (also known as IPF, or Itanium Processor Family) running
3360GNU/Linux.
3361
3362   If you are using the installed system libunwind library with
3363'--with-system-libunwind', then you must use libunwind 0.98 or later.
3364
3365   None of the following versions of GCC has an ABI that is compatible
3366with any of the other versions in this list, with the exception that Red
3367Hat 2.96 and Trillian 000171 are compatible with each other: 3.1, 3.0.2,
33683.0.1, 3.0, Red Hat 2.96, and Trillian 000717.  This primarily affects
3369C++ programs and programs that create shared libraries.  GCC 3.1 or
3370later is recommended for compiling linux, the kernel.  As of version 3.1
3371GCC is believed to be fully ABI compliant, and hence no more major ABI
3372changes are expected.
3373
3374ia64-*-hpux*
3375============
3376
3377Building GCC on this target requires the GNU Assembler.  The bundled HP
3378assembler will not work.  To prevent GCC from using the wrong assembler,
3379the option '--with-gnu-as' may be necessary.
3380
3381   The GCC libunwind library has not been ported to HPUX.  This means
3382that for GCC versions 3.2.3 and earlier, '--enable-libunwind-exceptions'
3383is required to build GCC.  For GCC 3.3 and later, this is the default.
3384For gcc 3.4.3 and later, '--enable-libunwind-exceptions' is removed and
3385the system libunwind library will always be used.
3386
3387*-ibm-aix*
3388==========
3389
3390Support for AIX version 3 and older was discontinued in GCC 3.4.
3391Support for AIX version 4.2 and older was discontinued in GCC 4.5.
3392
3393   "out of memory" bootstrap failures may indicate a problem with
3394process resource limits (ulimit).  Hard limits are configured in the
3395'/etc/security/limits' system configuration file.
3396
3397   GCC 4.9 and above require a C++ compiler for bootstrap.  IBM VAC++ /
3398xlC cannot bootstrap GCC. xlc can bootstrap an older version of GCC and
3399G++ can bootstrap recent releases of GCC.
3400
3401   GCC can bootstrap with recent versions of IBM XLC, but bootstrapping
3402with an earlier release of GCC is recommended.  Bootstrapping with XLC
3403requires a larger data segment, which can be enabled through the
3404LDR_CNTRL environment variable, e.g.,
3405
3406     % LDR_CNTRL=MAXDATA=0x50000000
3407     % export LDR_CNTRL
3408
3409   One can start with a pre-compiled version of GCC to build from
3410sources.  One may delete GCC's "fixed" header files when starting with a
3411version of GCC built for an earlier release of AIX.
3412
3413   To speed up the configuration phases of bootstrapping and installing
3414GCC, one may use GNU Bash instead of AIX '/bin/sh', e.g.,
3415
3416     % CONFIG_SHELL=/opt/freeware/bin/bash
3417     % export CONFIG_SHELL
3418
3419   and then proceed as described in the build instructions, where we
3420strongly recommend specifying an absolute path to invoke
3421SRCDIR/configure.
3422
3423   Because GCC on AIX is built as a 32-bit executable by default,
3424(although it can generate 64-bit programs) the GMP and MPFR libraries
3425required by gfortran must be 32-bit libraries.  Building GMP and MPFR as
3426static archive libraries works better than shared libraries.
3427
3428   Errors involving 'alloca' when building GCC generally are due to an
3429incorrect definition of 'CC' in the Makefile or mixing files compiled
3430with the native C compiler and GCC.  During the stage1 phase of the
3431build, the native AIX compiler *must* be invoked as 'cc' (not 'xlc').
3432Once 'configure' has been informed of 'xlc', one needs to use 'make
3433distclean' to remove the configure cache files and ensure that 'CC'
3434environment variable does not provide a definition that will confuse
3435'configure'.  If this error occurs during stage2 or later, then the
3436problem most likely is the version of Make (see above).
3437
3438   The native 'as' and 'ld' are recommended for bootstrapping on AIX.
3439The GNU Assembler, GNU Linker, and GNU Binutils version 2.20 is the
3440minimum level that supports bootstrap on AIX 5.  The GNU Assembler has
3441not been updated to support AIX 6 or AIX 7.  The native AIX tools do
3442interoperate with GCC.
3443
3444   AIX 7.1 added partial support for DWARF debugging, but full support
3445requires AIX 7.1 TL03 SP7 that supports additional DWARF sections and
3446fixes a bug in the assembler.  AIX 7.1 TL03 SP5 distributed a version of
3447libm.a missing important symbols; a fix for IV77796 will be included in
3448SP6.
3449
3450   AIX 5.3 TL10, AIX 6.1 TL05 and AIX 7.1 TL00 introduced an AIX
3451assembler change that sometimes produces corrupt assembly files causing
3452AIX linker errors.  The bug breaks GCC bootstrap on AIX and can cause
3453compilation failures with existing GCC installations.  An AIX iFix for
3454AIX 5.3 is available (APAR IZ98385 for AIX 5.3 TL10, APAR IZ98477 for
3455AIX 5.3 TL11 and IZ98134 for AIX 5.3 TL12).  AIX 5.3 TL11 SP8, AIX 5.3
3456TL12 SP5, AIX 6.1 TL04 SP11, AIX 6.1 TL05 SP7, AIX 6.1 TL06 SP6, AIX 6.1
3457TL07 and AIX 7.1 TL01 should include the fix.
3458
3459   Building 'libstdc++.a' requires a fix for an AIX Assembler bug APAR
3460IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1).  It also requires a fix for
3461another AIX Assembler bug and a co-dependent AIX Archiver fix referenced
3462as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
3463
3464   'libstdc++' in GCC 3.4 increments the major version number of the
3465shared object and GCC installation places the 'libstdc++.a' shared
3466library in a common location which will overwrite the and GCC 3.3
3467version of the shared library.  Applications either need to be re-linked
3468against the new shared library or the GCC 3.1 and GCC 3.3 versions of
3469the 'libstdc++' shared object needs to be available to the AIX runtime
3470loader.  The GCC 3.1 'libstdc++.so.4', if present, and GCC 3.3
3471'libstdc++.so.5' shared objects can be installed for runtime dynamic
3472loading using the following steps to set the 'F_LOADONLY' flag in the
3473shared object for _each_ multilib 'libstdc++.a' installed:
3474
3475   Extract the shared objects from the currently installed 'libstdc++.a'
3476archive:
3477     % ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
3478
3479   Enable the 'F_LOADONLY' flag so that the shared object will be
3480available for runtime dynamic loading, but not linking:
3481     % strip -e libstdc++.so.4 libstdc++.so.5
3482
3483   Archive the runtime-only shared object in the GCC 3.4 'libstdc++.a'
3484archive:
3485     % ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
3486
3487   Eventually, the '--with-aix-soname=svr4' configure option may drop
3488the need for this procedure for libraries that support it.
3489
3490   Linking executables and shared libraries may produce warnings of
3491duplicate symbols.  The assembly files generated by GCC for AIX always
3492have included multiple symbol definitions for certain global variable
3493and function declarations in the original program.  The warnings should
3494not prevent the linker from producing a correct library or runnable
3495executable.
3496
3497   AIX 4.3 utilizes a "large format" archive to support both 32-bit and
349864-bit object modules.  The routines provided in AIX 4.3.0 and AIX 4.3.1
3499to parse archive libraries did not handle the new format correctly.
3500These routines are used by GCC and result in error messages during
3501linking such as "not a COFF file".  The version of the routines shipped
3502with AIX 4.3.1 should work for a 32-bit environment.  The '-g' option of
3503the archive command may be used to create archives of 32-bit objects
3504using the original "small format".  A correct version of the routines is
3505shipped with AIX 4.3.2 and above.
3506
3507   Some versions of the AIX binder (linker) can fail with a relocation
3508overflow severe error when the '-bbigtoc' option is used to link
3509GCC-produced object files into an executable that overflows the TOC.  A
3510fix for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC)
3511is available from IBM Customer Support and from its
3512techsupport.services.ibm.com website as PTF U455193.
3513
3514   The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump
3515core with a segmentation fault when invoked by any version of GCC.  A
3516fix for APAR IX87327 is available from IBM Customer Support and from its
3517techsupport.services.ibm.com website as PTF U461879.  This fix is
3518incorporated in AIX 4.3.3 and above.
3519
3520   The initial assembler shipped with AIX 4.3.0 generates incorrect
3521object files.  A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM
3522COMPILER FAILS TO ASSEMBLE/BIND) is available from IBM Customer Support
3523and from its techsupport.services.ibm.com website as PTF U453956.  This
3524fix is incorporated in AIX 4.3.1 and above.
3525
3526   AIX provides National Language Support (NLS).  Compilers and
3527assemblers use NLS to support locale-specific representations of various
3528data formats including floating-point numbers (e.g., '.' vs ',' for
3529separating decimal fractions).  There have been problems reported where
3530GCC does not produce the same floating-point formats that the assembler
3531expects.  If one encounters this problem, set the 'LANG' environment
3532variable to 'C' or 'En_US'.
3533
3534   A default can be specified with the '-mcpu=CPU_TYPE' switch and using
3535the configure option '--with-cpu-CPU_TYPE'.
3536
3537iq2000-*-elf
3538============
3539
3540Vitesse IQ2000 processors.  These are used in embedded applications.
3541There are no standard Unix configurations.
3542
3543lm32-*-elf
3544==========
3545
3546Lattice Mico32 processor.  This configuration is intended for embedded
3547systems.
3548
3549lm32-*-uclinux
3550==============
3551
3552Lattice Mico32 processor.  This configuration is intended for embedded
3553systems running uClinux.
3554
3555m32c-*-elf
3556==========
3557
3558Renesas M32C processor.  This configuration is intended for embedded
3559systems.
3560
3561m32r-*-elf
3562==========
3563
3564Renesas M32R processor.  This configuration is intended for embedded
3565systems.
3566
3567m68k-*-*
3568========
3569
3570By default, 'm68k-*-elf*', 'm68k-*-rtems', 'm68k-*-uclinux' and
3571'm68k-*-linux' build libraries for both M680x0 and ColdFire processors.
3572If you only need the M680x0 libraries, you can omit the ColdFire ones by
3573passing '--with-arch=m68k' to 'configure'.  Alternatively, you can omit
3574the M680x0 libraries by passing '--with-arch=cf' to 'configure'.  These
3575targets default to 5206 or 5475 code as appropriate for the target
3576system when configured with '--with-arch=cf' and 68020 code otherwise.
3577
3578   The 'm68k-*-netbsd' and 'm68k-*-openbsd' targets also support the
3579'--with-arch' option.  They will generate ColdFire CFV4e code when
3580configured with '--with-arch=cf' and 68020 code otherwise.
3581
3582   You can override the default processors listed above by configuring
3583with '--with-cpu=TARGET'.  This TARGET can either be a '-mcpu' argument
3584or one of the following values: 'm68000', 'm68010', 'm68020', 'm68030',
3585'm68040', 'm68060', 'm68020-40' and 'm68020-60'.
3586
3587   GCC requires at least binutils version 2.17 on these targets.
3588
3589m68k-*-uclinux
3590==============
3591
3592GCC 4.3 changed the uClinux configuration so that it uses the
3593'm68k-linux-gnu' ABI rather than the 'm68k-elf' ABI. It also added
3594improved support for C++ and flat shared libraries, both of which were
3595ABI changes.
3596
3597microblaze-*-elf
3598================
3599
3600Xilinx MicroBlaze processor.  This configuration is intended for
3601embedded systems.
3602
3603mips-*-*
3604========
3605
3606If on a MIPS system you get an error message saying "does not have gp
3607sections for all it's [sic] sectons [sic]", don't worry about it.  This
3608happens whenever you use GAS with the MIPS linker, but there is not
3609really anything wrong, and it is okay to use the output file.  You can
3610stop such warnings by installing the GNU linker.
3611
3612   It would be nice to extend GAS to produce the gp tables, but they are
3613optional, and there should not be a warning about their absence.
3614
3615   The libstdc++ atomic locking routines for MIPS targets requires MIPS
3616II and later.  A patch went in just after the GCC 3.3 release to make
3617'mips*-*-*' use the generic implementation instead.  You can also
3618configure for 'mipsel-elf' as a workaround.  The 'mips*-*-linux*' target
3619continues to use the MIPS II routines.  More work on this is expected in
3620future releases.
3621
3622   The built-in '__sync_*' functions are available on MIPS II and later
3623systems and others that support the 'll', 'sc' and 'sync' instructions.
3624This can be overridden by passing '--with-llsc' or '--without-llsc' when
3625configuring GCC. Since the Linux kernel emulates these instructions if
3626they are missing, the default for 'mips*-*-linux*' targets is
3627'--with-llsc'.  The '--with-llsc' and '--without-llsc' configure options
3628may be overridden at compile time by passing the '-mllsc' or '-mno-llsc'
3629options to the compiler.
3630
3631   MIPS systems check for division by zero (unless
3632'-mno-check-zero-division' is passed to the compiler) by generating
3633either a conditional trap or a break instruction.  Using trap results in
3634smaller code, but is only supported on MIPS II and later.  Also, some
3635versions of the Linux kernel have a bug that prevents trap from
3636generating the proper signal ('SIGFPE').  To enable the use of break,
3637use the '--with-divide=breaks' 'configure' option when configuring GCC.
3638The default is to use traps on systems that support them.
3639
3640moxie-*-elf
3641===========
3642
3643The moxie processor.
3644
3645msp430-*-elf*
3646=============
3647
3648TI MSP430 processor.  This configuration is intended for embedded
3649systems.
3650
3651   'msp430-*-elf' is the standard configuration with most GCC features
3652enabled by default.
3653
3654   'msp430-*-elfbare' is tuned for a bare-metal environment, and
3655disables features related to shared libraries and other functionality
3656not used for this device.  This reduces code and data usage of the GCC
3657libraries, resulting in a minimal run-time environment by default.
3658
3659   Features disabled by default include:
3660   * transactional memory
3661   * __cxa_atexit
3662
3663nds32le-*-elf
3664=============
3665
3666Andes NDS32 target in little endian mode.
3667
3668nds32be-*-elf
3669=============
3670
3671Andes NDS32 target in big endian mode.
3672
3673nvptx-*-none
3674============
3675
3676Nvidia PTX target.
3677
3678   Instead of GNU binutils, you will need to install nvptx-tools.  Tell
3679GCC where to find it:
3680'--with-build-time-tools=[install-nvptx-tools]/nvptx-none/bin'.
3681
3682   You will need newlib 3.0 git revision
3683cd31fbb2aea25f94d7ecedc9db16dfc87ab0c316 or later.  It can be
3684automatically built together with GCC.  For this, add a symbolic link to
3685nvptx-newlib's 'newlib' directory to the directory containing the GCC
3686sources.
3687
3688   Use the '--disable-sjlj-exceptions' and
3689'--enable-newlib-io-long-long' options when configuring.
3690
3691or1k-*-elf
3692==========
3693
3694The OpenRISC 1000 32-bit processor with delay slots.  This configuration
3695is intended for embedded systems.
3696
3697or1k-*-linux
3698============
3699
3700The OpenRISC 1000 32-bit processor with delay slots.
3701
3702powerpc-*-*
3703===========
3704
3705You can specify a default version for the '-mcpu=CPU_TYPE' switch by
3706using the configure option '--with-cpu-CPU_TYPE'.
3707
3708   You will need GNU binutils 2.20 or newer.
3709
3710powerpc-*-darwin*
3711=================
3712
3713PowerPC running Darwin (Mac OS X kernel).
3714
3715   Pre-installed versions of Mac OS X may not include any developer
3716tools, meaning that you will not be able to build GCC from source.  Tool
3717binaries are available at <https://opensource.apple.com>.
3718
3719   This version of GCC requires at least cctools-590.36.  The
3720cctools-590.36 package referenced from
3721<http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html> will not work on
3722systems older than 10.3.9 (aka darwin7.9.0).
3723
3724powerpc-*-elf
3725=============
3726
3727PowerPC system in big endian mode, running System V.4.
3728
3729powerpc*-*-linux-gnu*
3730=====================
3731
3732PowerPC system in big endian mode running Linux.
3733
3734powerpc-*-netbsd*
3735=================
3736
3737PowerPC system in big endian mode running NetBSD.
3738
3739powerpc-*-eabisim
3740=================
3741
3742Embedded PowerPC system in big endian mode for use in running under the
3743PSIM simulator.
3744
3745powerpc-*-eabi
3746==============
3747
3748Embedded PowerPC system in big endian mode.
3749
3750powerpcle-*-elf
3751===============
3752
3753PowerPC system in little endian mode, running System V.4.
3754
3755powerpcle-*-eabisim
3756===================
3757
3758Embedded PowerPC system in little endian mode for use in running under
3759the PSIM simulator.
3760
3761powerpcle-*-eabi
3762================
3763
3764Embedded PowerPC system in little endian mode.
3765
3766rl78-*-elf
3767==========
3768
3769The Renesas RL78 processor.  This configuration is intended for embedded
3770systems.
3771
3772riscv32-*-elf
3773=============
3774
3775The RISC-V RV32 instruction set.  This configuration is intended for
3776embedded systems.  This (and all other RISC-V) targets require the
3777binutils 2.30 release.
3778
3779riscv32-*-linux
3780===============
3781
3782The RISC-V RV32 instruction set running GNU/Linux.  This (and all other
3783RISC-V) targets require the binutils 2.30 release.
3784
3785riscv64-*-elf
3786=============
3787
3788The RISC-V RV64 instruction set.  This configuration is intended for
3789embedded systems.  This (and all other RISC-V) targets require the
3790binutils 2.30 release.
3791
3792riscv64-*-linux
3793===============
3794
3795The RISC-V RV64 instruction set running GNU/Linux.  This (and all other
3796RISC-V) targets require the binutils 2.30 release.
3797
3798rx-*-elf
3799========
3800
3801The Renesas RX processor.
3802
3803s390-*-linux*
3804=============
3805
3806S/390 system running GNU/Linux for S/390.
3807
3808s390x-*-linux*
3809==============
3810
3811zSeries system (64-bit) running GNU/Linux for zSeries.
3812
3813s390x-ibm-tpf*
3814==============
3815
3816zSeries system (64-bit) running TPF.  This platform is supported as
3817cross-compilation target only.
3818
3819*-*-solaris2*
3820=============
3821
3822Support for Solaris 10 has been removed in GCC 10.  Support for Solaris
38239 has been removed in GCC 5.  Support for Solaris 8 has been removed in
3824GCC 4.8.  Support for Solaris 7 has been removed in GCC 4.6.
3825
3826   Solaris 11.3 provides GCC 4.5.2, 4.7.3, and 4.8.2 as
3827'/usr/gcc/4.5/bin/gcc' or similar.  Newer Solaris versions provide one
3828or more of GCC 5, 7, and 9.  Alternatively, you can install a pre-built
3829GCC to bootstrap and install GCC. See the binaries page for details.
3830
3831   The Solaris 2 '/bin/sh' will often fail to configure 'libstdc++-v3'.
3832We therefore recommend using the following initial sequence of commands
3833
3834     % CONFIG_SHELL=/bin/ksh
3835     % export CONFIG_SHELL
3836
3837and proceed as described in the configure instructions.  In addition we
3838strongly recommend specifying an absolute path to invoke
3839'SRCDIR/configure'.
3840
3841   In Solaris 11, you need to check for 'system/header',
3842'system/linker', and 'developer/assembler' packages.
3843
3844   Trying to use the linker and other tools in '/usr/ucb' to install GCC
3845has been observed to cause trouble.  For example, the linker may hang
3846indefinitely.  The fix is to remove '/usr/ucb' from your 'PATH'.
3847
3848   The build process works more smoothly with the legacy Solaris tools
3849so, if you have '/usr/xpg4/bin' in your 'PATH', we recommend that you
3850place '/usr/bin' before '/usr/xpg4/bin' for the duration of the build.
3851
3852   We recommend the use of the Solaris assembler or the GNU assembler,
3853in conjunction with the Solaris linker.  The GNU 'as' versions included
3854in Solaris 11.3, from GNU binutils 2.23.1 or newer (in '/usr/bin/gas'
3855and '/usr/gnu/bin/as'), are known to work.  The current version, from
3856GNU binutils 2.34, is known to work as well.  Note that your mileage may
3857vary if you use a combination of the GNU tools and the Solaris tools:
3858while the combination GNU 'as' + Solaris 'ld' should reasonably work,
3859the reverse combination Solaris 'as' + GNU 'ld' may fail to build or
3860cause memory corruption at runtime in some cases for C++ programs.  GNU
3861'ld' usually works as well.  Again, the current version (2.34) is known
3862to work, but generally lacks platform specific features, so better stay
3863with Solaris 'ld'.  To use the LTO linker plugin ('-fuse-linker-plugin')
3864with GNU 'ld', GNU binutils _must_ be configured with
3865'--enable-largefile'.
3866
3867   To enable symbol versioning in 'libstdc++' with the Solaris linker,
3868you need to have any version of GNU 'c++filt', which is part of GNU
3869binutils.  'libstdc++' symbol versioning will be disabled if no
3870appropriate version is found.  Solaris 'c++filt' from the Solaris Studio
3871compilers does _not_ work.
3872
3873   The versions of the GNU Multiple Precision Library (GMP), the MPFR
3874library and the MPC library bundled with Solaris 11.3 and later are
3875usually recent enough to match GCC's requirements.  There are two
3876caveats:
3877
3878   * While the version of the GMP library in Solaris 11.3 works with
3879     GCC, you need to configure with
3880     '--with-gmp-include=/usr/include/gmp'.
3881
3882   * The version of the MPFR libary included in Solaris 11.3 is too old;
3883     you need to provide a more recent one.
3884
3885sparc*-*-*
3886==========
3887
3888This section contains general configuration information for all
3889SPARC-based platforms.  In addition to reading this section, please read
3890all other sections that match your target.
3891
3892   Newer versions of the GNU Multiple Precision Library (GMP), the MPFR
3893library and the MPC library are known to be miscompiled by earlier
3894versions of GCC on these platforms.  We therefore recommend the use of
3895the exact versions of these libraries listed as minimal versions in the
3896prerequisites.
3897
3898sparc-sun-solaris2*
3899===================
3900
3901When GCC is configured to use GNU binutils 2.14 or later, the binaries
3902produced are smaller than the ones produced using Solaris native tools;
3903this difference is quite significant for binaries containing debugging
3904information.
3905
3906   Starting with Solaris 7, the operating system is capable of executing
390764-bit SPARC V9 binaries.  GCC 3.1 and later properly supports this; the
3908'-m64' option enables 64-bit code generation.  However, if all you want
3909is code tuned for the UltraSPARC CPU, you should try the
3910'-mtune=ultrasparc' option instead, which produces code that, unlike
3911full 64-bit code, can still run on non-UltraSPARC machines.
3912
3913   When configuring the GNU Multiple Precision Library (GMP), the MPFR
3914library or the MPC library on a Solaris 7 or later system, the canonical
3915target triplet must be specified as the 'build' parameter on the
3916configure line.  This target triplet can be obtained by invoking
3917'./config.guess' in the toplevel source directory of GCC (and not that
3918of GMP or MPFR or MPC). For example on a Solaris 11 system:
3919
3920     % ./configure --build=sparc-sun-solaris2.11 --prefix=xxx
3921
3922sparc-*-linux*
3923==============
3924
3925sparc64-*-solaris2*
3926===================
3927
3928When configuring a 64-bit-default GCC on Solaris/SPARC, you must use a
3929build compiler that generates 64-bit code, either by default or by
3930specifying 'CC='gcc -m64' CXX='gcc-m64'' to 'configure'.  Additionally,
3931you _must_ pass '--build=sparc64-sun-solaris2.11' or
3932'--build=sparcv9-sun-solaris2.11' because 'config.guess' misdetects this
3933situation, which can cause build failures.
3934
3935   When configuring the GNU Multiple Precision Library (GMP), the MPFR
3936library or the MPC library, the canonical target triplet must be
3937specified as the 'build' parameter on the configure line.  For example
3938on a Solaris 11 system:
3939
3940     % ./configure --build=sparc64-sun-solaris2.11 --prefix=xxx
3941
3942sparcv9-*-solaris2*
3943===================
3944
3945This is a synonym for 'sparc64-*-solaris2*'.
3946
3947c6x-*-*
3948=======
3949
3950The C6X family of processors.  This port requires binutils-2.22 or
3951newer.
3952
3953tilegx-*-linux*
3954===============
3955
3956The TILE-Gx processor in little endian mode, running GNU/Linux.  This
3957port requires binutils-2.22 or newer.
3958
3959tilegxbe-*-linux*
3960=================
3961
3962The TILE-Gx processor in big endian mode, running GNU/Linux.  This port
3963requires binutils-2.23 or newer.
3964
3965tilepro-*-linux*
3966================
3967
3968The TILEPro processor running GNU/Linux.  This port requires
3969binutils-2.22 or newer.
3970
3971visium-*-elf
3972============
3973
3974CDS VISIUMcore processor.  This configuration is intended for embedded
3975systems.
3976
3977*-*-vxworks*
3978============
3979
3980Support for VxWorks is in flux.  At present GCC supports _only_ the very
3981recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC.  We
3982welcome patches for other architectures supported by VxWorks 5.5.
3983Support for VxWorks AE would also be welcome; we believe this is merely
3984a matter of writing an appropriate "configlette" (see below).  We are
3985not interested in supporting older, a.out or COFF-based, versions of
3986VxWorks in GCC 3.
3987
3988   VxWorks comes with an older version of GCC installed in
3989'$WIND_BASE/host'; we recommend you do not overwrite it.  Choose an
3990installation PREFIX entirely outside $WIND_BASE.  Before running
3991'configure', create the directories 'PREFIX' and 'PREFIX/bin'.  Link or
3992copy the appropriate assembler, linker, etc. into 'PREFIX/bin', and set
3993your PATH to include that directory while running both 'configure' and
3994'make'.
3995
3996   You must give 'configure' the '--with-headers=$WIND_BASE/target/h'
3997switch so that it can find the VxWorks system headers.  Since VxWorks is
3998a cross compilation target only, you must also specify
3999'--target=TARGET'.  'configure' will attempt to create the directory
4000'PREFIX/TARGET/sys-include' and copy files into it; make sure the user
4001running 'configure' has sufficient privilege to do so.
4002
4003   GCC's exception handling runtime requires a special "configlette"
4004module, 'contrib/gthr_supp_vxw_5x.c'.  Follow the instructions in that
4005file to add the module to your kernel build.  (Future versions of
4006VxWorks will incorporate this module.)
4007
4008x86_64-*-*, amd64-*-*
4009=====================
4010
4011GCC supports the x86-64 architecture implemented by the AMD64 processor
4012(amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
4013On GNU/Linux the default is a bi-arch compiler which is able to generate
4014both 64-bit x86-64 and 32-bit x86 code (via the '-m32' switch).
4015
4016x86_64-*-solaris2*
4017==================
4018
4019GCC also supports the x86-64 architecture implemented by the AMD64
4020processor ('amd64-*-*' is an alias for 'x86_64-*-*') on Solaris 10 or
4021later.  Unlike other systems, without special options a bi-arch compiler
4022is built which generates 32-bit code by default, but can generate 64-bit
4023x86-64 code with the '-m64' switch.  Since GCC 4.7, there is also a
4024configuration that defaults to 64-bit code, but can generate 32-bit code
4025with '-m32'.  To configure and build this way, you have to provide all
4026support libraries like 'libgmp' as 64-bit code, configure with
4027'--target=x86_64-pc-solaris2.11' and 'CC=gcc -m64'.
4028
4029xtensa*-*-elf
4030=============
4031
4032This target is intended for embedded Xtensa systems using the 'newlib' C
4033library.  It uses ELF but does not support shared objects.
4034Designed-defined instructions specified via the Tensilica Instruction
4035Extension (TIE) language are only supported through inline assembly.
4036
4037   The Xtensa configuration information must be specified prior to
4038building GCC.  The 'include/xtensa-config.h' header file contains the
4039configuration information.  If you created your own Xtensa configuration
4040with the Xtensa Processor Generator, the downloaded files include a
4041customized copy of this header file, which you can use to replace the
4042default header file.
4043
4044xtensa*-*-linux*
4045================
4046
4047This target is for Xtensa systems running GNU/Linux.  It supports ELF
4048shared objects and the GNU C library (glibc).  It also generates
4049position-independent code (PIC) regardless of whether the '-fpic' or
4050'-fPIC' options are used.  In other respects, this target is the same as
4051the 'xtensa*-*-elf' target.
4052
4053Microsoft Windows
4054=================
4055
4056Intel 16-bit versions
4057---------------------
4058
4059The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
4060supported.
4061
4062   However, the 32-bit port has limited support for Microsoft Windows
40633.11 in the Win32s environment, as a target only.  See below.
4064
4065Intel 32-bit versions
4066---------------------
4067
4068The 32-bit versions of Windows, including Windows 95, Windows NT,
4069Windows XP, and Windows Vista, are supported by several different target
4070platforms.  These targets differ in which Windows subsystem they target
4071and which C libraries are used.
4072
4073   * Cygwin *-*-cygwin: Cygwin provides a user-space Linux API emulation
4074     layer in the Win32 subsystem.
4075   * MinGW *-*-mingw32: MinGW is a native GCC port for the Win32
4076     subsystem that provides a subset of POSIX.
4077   * MKS i386-pc-mks: NuTCracker from MKS. See
4078     <https://www.mkssoftware.com> for more information.
4079
4080Intel 64-bit versions
4081---------------------
4082
4083GCC contains support for x86-64 using the mingw-w64 runtime library,
4084available from <http://mingw-w64.org/doku.php>.  This library should be
4085used with the target triple x86_64-pc-mingw32.
4086
4087   Presently Windows for Itanium is not supported.
4088
4089Windows CE
4090----------
4091
4092Windows CE is supported as a target only on Hitachi SuperH
4093(sh-wince-pe), and MIPS (mips-wince-pe).
4094
4095Other Windows Platforms
4096-----------------------
4097
4098GCC no longer supports Windows NT on the Alpha or PowerPC.
4099
4100   GCC no longer supports the Windows POSIX subsystem.  However, it does
4101support the Interix subsystem.  See above.
4102
4103   Old target names including *-*-winnt and *-*-windowsnt are no longer
4104used.
4105
4106   PW32 (i386-pc-pw32) support was never completed, and the project
4107seems to be inactive.  See <http://pw32.sourceforge.net/> for more
4108information.
4109
4110   UWIN support has been removed due to a lack of maintenance.
4111
4112*-*-cygwin
4113==========
4114
4115Ports of GCC are included with the Cygwin environment.
4116
4117   GCC will build under Cygwin without modification; it does not build
4118with Microsoft's C++ compiler and there are no plans to make it do so.
4119
4120   The Cygwin native compiler can be configured to target any 32-bit x86
4121cpu architecture desired; the default is i686-pc-cygwin.  It should be
4122used with as up-to-date a version of binutils as possible; use either
4123the latest official GNU binutils release in the Cygwin distribution, or
4124version 2.20 or above if building your own.
4125
4126*-*-mingw32
4127===========
4128
4129GCC will build with and support only MinGW runtime 3.12 and later.
4130Earlier versions of headers are incompatible with the new default
4131semantics of 'extern inline' in '-std=c99' and '-std=gnu99' modes.
4132
4133Older systems
4134=============
4135
4136GCC contains support files for many older (1980s and early 1990s) Unix
4137variants.  For the most part, support for these systems has not been
4138deliberately removed, but it has not been maintained for several years
4139and may suffer from bitrot.
4140
4141   Starting with GCC 3.1, each release has a list of "obsoleted"
4142systems.  Support for these systems is still present in that release,
4143but 'configure' will fail unless the '--enable-obsolete' option is
4144given.  Unless a maintainer steps forward, support for these systems
4145will be removed from the next release of GCC.
4146
4147   Support for old systems as hosts for GCC can cause problems if the
4148workarounds for compiler, library and operating system bugs affect the
4149cleanliness or maintainability of the rest of GCC.  In some cases, to
4150bring GCC up on such a system, if still possible with current GCC, may
4151require first installing an old version of GCC which did work on that
4152system, and using it to compile a more recent GCC, to avoid bugs in the
4153vendor compiler.  Old releases of GCC 1 and GCC 2 are available in the
4154'old-releases' directory on the GCC mirror sites.  Header bugs may
4155generally be avoided using 'fixincludes', but bugs or deficiencies in
4156libraries and the operating system may still cause problems.
4157
4158   Support for older systems as targets for cross-compilation is less
4159problematic than support for them as hosts for GCC; if an enthusiast
4160wishes to make such a target work again (including resurrecting any of
4161the targets that never worked with GCC 2, starting from the last version
4162before they were removed), patches following the usual requirements
4163would be likely to be accepted, since they should not affect the support
4164for more modern targets.
4165
4166   For some systems, old versions of GNU binutils may also be useful,
4167and are available from 'pub/binutils/old-releases' on sourceware.org
4168mirror sites.
4169
4170   Some of the information on specific systems above relates to such
4171older systems, but much of the information about GCC on such systems
4172(which may no longer be applicable to current GCC) is to be found in the
4173GCC texinfo manual.
4174
4175all ELF targets (SVR4, Solaris 2, etc.)
4176=======================================
4177
4178C++ support is significantly better on ELF targets if you use the GNU
4179linker; duplicate copies of inlines, vtables and template instantiations
4180will be discarded automatically.
4181
4182
4183File: gccinstall.info,  Node: Old,  Next: GNU Free Documentation License,  Prev: Specific,  Up: Top
4184
418510 Old installation documentation
4186*********************************
4187
4188Note most of this information is out of date and superseded by the
4189previous chapters of this manual.  It is provided for historical
4190reference only, because of a lack of volunteers to merge it into the
4191main manual.
4192
4193* Menu:
4194
4195* Configurations::    Configurations Supported by GCC.
4196
4197   Here is the procedure for installing GCC on a GNU or Unix system.
4198
4199  1. If you have chosen a configuration for GCC which requires other GNU
4200     tools (such as GAS or the GNU linker) instead of the standard
4201     system tools, install the required tools in the build directory
4202     under the names 'as', 'ld' or whatever is appropriate.
4203
4204     Alternatively, you can do subsequent compilation using a value of
4205     the 'PATH' environment variable such that the necessary GNU tools
4206     come before the standard system tools.
4207
4208  2. Specify the host, build and target machine configurations.  You do
4209     this when you run the 'configure' script.
4210
4211     The "build" machine is the system which you are using, the "host"
4212     machine is the system where you want to run the resulting compiler
4213     (normally the build machine), and the "target" machine is the
4214     system for which you want the compiler to generate code.
4215
4216     If you are building a compiler to produce code for the machine it
4217     runs on (a native compiler), you normally do not need to specify
4218     any operands to 'configure'; it will try to guess the type of
4219     machine you are on and use that as the build, host and target
4220     machines.  So you don't need to specify a configuration when
4221     building a native compiler unless 'configure' cannot figure out
4222     what your configuration is or guesses wrong.
4223
4224     In those cases, specify the build machine's "configuration name"
4225     with the '--host' option; the host and target will default to be
4226     the same as the host machine.
4227
4228     Here is an example:
4229
4230          ./configure --host=sparc-sun-sunos4.1
4231
4232     A configuration name may be canonical or it may be more or less
4233     abbreviated.
4234
4235     A canonical configuration name has three parts, separated by
4236     dashes.  It looks like this: 'CPU-COMPANY-SYSTEM'.  (The three
4237     parts may themselves contain dashes; 'configure' can figure out
4238     which dashes serve which purpose.)  For example,
4239     'm68k-sun-sunos4.1' specifies a Sun 3.
4240
4241     You can also replace parts of the configuration by nicknames or
4242     aliases.  For example, 'sun3' stands for 'm68k-sun', so
4243     'sun3-sunos4.1' is another way to specify a Sun 3.
4244
4245     You can specify a version number after any of the system types, and
4246     some of the CPU types.  In most cases, the version is irrelevant,
4247     and will be ignored.  So you might as well specify the version if
4248     you know it.
4249
4250     See *note Configurations::, for a list of supported configuration
4251     names and notes on many of the configurations.  You should check
4252     the notes in that section before proceeding any further with the
4253     installation of GCC.
4254
4255
4256File: gccinstall.info,  Node: Configurations,  Up: Old
4257
425810.1 Configurations Supported by GCC
4259====================================
4260
4261Here are the possible CPU types:
4262
4263     1750a, a29k, alpha, arm, avr, cN, clipper, dsp16xx, elxsi, fr30,
4264     h8300, hppa1.0, hppa1.1, i370, i386, i486, i586, i686, i786, i860,
4265     i960, ip2k, m32r, m68000, m68k, m88k, mcore, mips, mipsel, mips64,
4266     mips64el, mn10200, mn10300, ns32k, pdp11, powerpc, powerpcle, romp,
4267     rs6000, sh, sparc, sparclite, sparc64, v850, vax, we32k.
4268
4269   Here are the recognized company names.  As you can see, customary
4270abbreviations are used rather than the longer official names.
4271
4272     acorn, alliant, altos, apollo, apple, att, bull, cbm, convergent,
4273     convex, crds, dec, dg, dolphin, elxsi, encore, harris, hitachi, hp,
4274     ibm, intergraph, isi, mips, motorola, ncr, next, ns, omron, plexus,
4275     sequent, sgi, sony, sun, tti, unicom, wrs.
4276
4277   The company name is meaningful only to disambiguate when the rest of
4278the information supplied is insufficient.  You can omit it, writing just
4279'CPU-SYSTEM', if it is not needed.  For example, 'vax-ultrix4.2' is
4280equivalent to 'vax-dec-ultrix4.2'.
4281
4282   Here is a list of system types:
4283
4284     386bsd, aix, acis, amigaos, aos, aout, aux, bosx, bsd, clix, coff,
4285     ctix, cxux, dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms,
4286     genix, gnu, linux, linux-gnu, hiux, hpux, iris, irix, isc, luna,
4287     lynxos, mach, minix, msdos, mvs, netbsd, newsos, nindy, ns, osf,
4288     osfrose, ptx, riscix, riscos, rtu, sco, sim, solaris, sunos, sym,
4289     sysv, udi, ultrix, unicos, uniplus, unos, vms, vsta, vxworks,
4290     winnt, xenix.
4291
4292You can omit the system type; then 'configure' guesses the operating
4293system from the CPU and company.
4294
4295   You can add a version number to the system type; this may or may not
4296make a difference.  For example, you can write 'bsd4.3' or 'bsd4.4' to
4297distinguish versions of BSD.  In practice, the version number is most
4298needed for 'sysv3' and 'sysv4', which are often treated differently.
4299
4300   'linux-gnu' is the canonical name for the GNU/Linux target; however
4301GCC will also accept 'linux'.  The version of the kernel in use is not
4302relevant on these systems.  A suffix such as 'libc1' or 'aout'
4303distinguishes major versions of the C library; all of the suffixed
4304versions are obsolete.
4305
4306   If you specify an impossible combination such as 'i860-dg-vms', then
4307you may get an error message from 'configure', or it may ignore part of
4308the information and do the best it can with the rest.  'configure'
4309always prints the canonical name for the alternative that it used.  GCC
4310does not support all possible alternatives.
4311
4312   Often a particular model of machine has a name.  Many machine names
4313are recognized as aliases for CPU/company combinations.  Thus, the
4314machine name 'sun3', mentioned above, is an alias for 'm68k-sun'.
4315Sometimes we accept a company name as a machine name, when the name is
4316popularly used for a particular machine.  Here is a table of the known
4317machine names:
4318
4319     3300, 3b1, 3bN, 7300, altos3068, altos, apollo68, att-7300,
4320     balance, convex-cN, crds, decstation-3100, decstation, delta,
4321     encore, fx2800, gmicro, hp7NN, hp8NN, hp9k2NN, hp9k3NN, hp9k7NN,
4322     hp9k8NN, iris4d, iris, isi68, m3230, magnum, merlin, miniframe,
4323     mmax, news-3600, news800, news, next, pbd, pc532, pmax, powerpc,
4324     powerpcle, ps2, risc-news, rtpc, sun2, sun386i, sun386, sun3, sun4,
4325     symmetry, tower-32, tower.
4326
4327Remember that a machine name specifies both the cpu type and the company
4328name.
4329
4330
4331File: gccinstall.info,  Node: GNU Free Documentation License,  Next: Concept Index,  Prev: Old,  Up: Top
4332
4333GNU Free Documentation License
4334******************************
4335
4336                     Version 1.3, 3 November 2008
4337
4338     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
4339     <http://fsf.org/>
4340
4341     Everyone is permitted to copy and distribute verbatim copies
4342     of this license document, but changing it is not allowed.
4343
4344  0. PREAMBLE
4345
4346     The purpose of this License is to make a manual, textbook, or other
4347     functional and useful document "free" in the sense of freedom: to
4348     assure everyone the effective freedom to copy and redistribute it,
4349     with or without modifying it, either commercially or
4350     noncommercially.  Secondarily, this License preserves for the
4351     author and publisher a way to get credit for their work, while not
4352     being considered responsible for modifications made by others.
4353
4354     This License is a kind of "copyleft", which means that derivative
4355     works of the document must themselves be free in the same sense.
4356     It complements the GNU General Public License, which is a copyleft
4357     license designed for free software.
4358
4359     We have designed this License in order to use it for manuals for
4360     free software, because free software needs free documentation: a
4361     free program should come with manuals providing the same freedoms
4362     that the software does.  But this License is not limited to
4363     software manuals; it can be used for any textual work, regardless
4364     of subject matter or whether it is published as a printed book.  We
4365     recommend this License principally for works whose purpose is
4366     instruction or reference.
4367
4368  1. APPLICABILITY AND DEFINITIONS
4369
4370     This License applies to any manual or other work, in any medium,
4371     that contains a notice placed by the copyright holder saying it can
4372     be distributed under the terms of this License.  Such a notice
4373     grants a world-wide, royalty-free license, unlimited in duration,
4374     to use that work under the conditions stated herein.  The
4375     "Document", below, refers to any such manual or work.  Any member
4376     of the public is a licensee, and is addressed as "you".  You accept
4377     the license if you copy, modify or distribute the work in a way
4378     requiring permission under copyright law.
4379
4380     A "Modified Version" of the Document means any work containing the
4381     Document or a portion of it, either copied verbatim, or with
4382     modifications and/or translated into another language.
4383
4384     A "Secondary Section" is a named appendix or a front-matter section
4385     of the Document that deals exclusively with the relationship of the
4386     publishers or authors of the Document to the Document's overall
4387     subject (or to related matters) and contains nothing that could
4388     fall directly within that overall subject.  (Thus, if the Document
4389     is in part a textbook of mathematics, a Secondary Section may not
4390     explain any mathematics.)  The relationship could be a matter of
4391     historical connection with the subject or with related matters, or
4392     of legal, commercial, philosophical, ethical or political position
4393     regarding them.
4394
4395     The "Invariant Sections" are certain Secondary Sections whose
4396     titles are designated, as being those of Invariant Sections, in the
4397     notice that says that the Document is released under this License.
4398     If a section does not fit the above definition of Secondary then it
4399     is not allowed to be designated as Invariant.  The Document may
4400     contain zero Invariant Sections.  If the Document does not identify
4401     any Invariant Sections then there are none.
4402
4403     The "Cover Texts" are certain short passages of text that are
4404     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
4405     that says that the Document is released under this License.  A
4406     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
4407     be at most 25 words.
4408
4409     A "Transparent" copy of the Document means a machine-readable copy,
4410     represented in a format whose specification is available to the
4411     general public, that is suitable for revising the document
4412     straightforwardly with generic text editors or (for images composed
4413     of pixels) generic paint programs or (for drawings) some widely
4414     available drawing editor, and that is suitable for input to text
4415     formatters or for automatic translation to a variety of formats
4416     suitable for input to text formatters.  A copy made in an otherwise
4417     Transparent file format whose markup, or absence of markup, has
4418     been arranged to thwart or discourage subsequent modification by
4419     readers is not Transparent.  An image format is not Transparent if
4420     used for any substantial amount of text.  A copy that is not
4421     "Transparent" is called "Opaque".
4422
4423     Examples of suitable formats for Transparent copies include plain
4424     ASCII without markup, Texinfo input format, LaTeX input format,
4425     SGML or XML using a publicly available DTD, and standard-conforming
4426     simple HTML, PostScript or PDF designed for human modification.
4427     Examples of transparent image formats include PNG, XCF and JPG.
4428     Opaque formats include proprietary formats that can be read and
4429     edited only by proprietary word processors, SGML or XML for which
4430     the DTD and/or processing tools are not generally available, and
4431     the machine-generated HTML, PostScript or PDF produced by some word
4432     processors for output purposes only.
4433
4434     The "Title Page" means, for a printed book, the title page itself,
4435     plus such following pages as are needed to hold, legibly, the
4436     material this License requires to appear in the title page.  For
4437     works in formats which do not have any title page as such, "Title
4438     Page" means the text near the most prominent appearance of the
4439     work's title, preceding the beginning of the body of the text.
4440
4441     The "publisher" means any person or entity that distributes copies
4442     of the Document to the public.
4443
4444     A section "Entitled XYZ" means a named subunit of the Document
4445     whose title either is precisely XYZ or contains XYZ in parentheses
4446     following text that translates XYZ in another language.  (Here XYZ
4447     stands for a specific section name mentioned below, such as
4448     "Acknowledgements", "Dedications", "Endorsements", or "History".)
4449     To "Preserve the Title" of such a section when you modify the
4450     Document means that it remains a section "Entitled XYZ" according
4451     to this definition.
4452
4453     The Document may include Warranty Disclaimers next to the notice
4454     which states that this License applies to the Document.  These
4455     Warranty Disclaimers are considered to be included by reference in
4456     this License, but only as regards disclaiming warranties: any other
4457     implication that these Warranty Disclaimers may have is void and
4458     has no effect on the meaning of this License.
4459
4460  2. VERBATIM COPYING
4461
4462     You may copy and distribute the Document in any medium, either
4463     commercially or noncommercially, provided that this License, the
4464     copyright notices, and the license notice saying this License
4465     applies to the Document are reproduced in all copies, and that you
4466     add no other conditions whatsoever to those of this License.  You
4467     may not use technical measures to obstruct or control the reading
4468     or further copying of the copies you make or distribute.  However,
4469     you may accept compensation in exchange for copies.  If you
4470     distribute a large enough number of copies you must also follow the
4471     conditions in section 3.
4472
4473     You may also lend copies, under the same conditions stated above,
4474     and you may publicly display copies.
4475
4476  3. COPYING IN QUANTITY
4477
4478     If you publish printed copies (or copies in media that commonly
4479     have printed covers) of the Document, numbering more than 100, and
4480     the Document's license notice requires Cover Texts, you must
4481     enclose the copies in covers that carry, clearly and legibly, all
4482     these Cover Texts: Front-Cover Texts on the front cover, and
4483     Back-Cover Texts on the back cover.  Both covers must also clearly
4484     and legibly identify you as the publisher of these copies.  The
4485     front cover must present the full title with all words of the title
4486     equally prominent and visible.  You may add other material on the
4487     covers in addition.  Copying with changes limited to the covers, as
4488     long as they preserve the title of the Document and satisfy these
4489     conditions, can be treated as verbatim copying in other respects.
4490
4491     If the required texts for either cover are too voluminous to fit
4492     legibly, you should put the first ones listed (as many as fit
4493     reasonably) on the actual cover, and continue the rest onto
4494     adjacent pages.
4495
4496     If you publish or distribute Opaque copies of the Document
4497     numbering more than 100, you must either include a machine-readable
4498     Transparent copy along with each Opaque copy, or state in or with
4499     each Opaque copy a computer-network location from which the general
4500     network-using public has access to download using public-standard
4501     network protocols a complete Transparent copy of the Document, free
4502     of added material.  If you use the latter option, you must take
4503     reasonably prudent steps, when you begin distribution of Opaque
4504     copies in quantity, to ensure that this Transparent copy will
4505     remain thus accessible at the stated location until at least one
4506     year after the last time you distribute an Opaque copy (directly or
4507     through your agents or retailers) of that edition to the public.
4508
4509     It is requested, but not required, that you contact the authors of
4510     the Document well before redistributing any large number of copies,
4511     to give them a chance to provide you with an updated version of the
4512     Document.
4513
4514  4. MODIFICATIONS
4515
4516     You may copy and distribute a Modified Version of the Document
4517     under the conditions of sections 2 and 3 above, provided that you
4518     release the Modified Version under precisely this License, with the
4519     Modified Version filling the role of the Document, thus licensing
4520     distribution and modification of the Modified Version to whoever
4521     possesses a copy of it.  In addition, you must do these things in
4522     the Modified Version:
4523
4524       A. Use in the Title Page (and on the covers, if any) a title
4525          distinct from that of the Document, and from those of previous
4526          versions (which should, if there were any, be listed in the
4527          History section of the Document).  You may use the same title
4528          as a previous version if the original publisher of that
4529          version gives permission.
4530
4531       B. List on the Title Page, as authors, one or more persons or
4532          entities responsible for authorship of the modifications in
4533          the Modified Version, together with at least five of the
4534          principal authors of the Document (all of its principal
4535          authors, if it has fewer than five), unless they release you
4536          from this requirement.
4537
4538       C. State on the Title page the name of the publisher of the
4539          Modified Version, as the publisher.
4540
4541       D. Preserve all the copyright notices of the Document.
4542
4543       E. Add an appropriate copyright notice for your modifications
4544          adjacent to the other copyright notices.
4545
4546       F. Include, immediately after the copyright notices, a license
4547          notice giving the public permission to use the Modified
4548          Version under the terms of this License, in the form shown in
4549          the Addendum below.
4550
4551       G. Preserve in that license notice the full lists of Invariant
4552          Sections and required Cover Texts given in the Document's
4553          license notice.
4554
4555       H. Include an unaltered copy of this License.
4556
4557       I. Preserve the section Entitled "History", Preserve its Title,
4558          and add to it an item stating at least the title, year, new
4559          authors, and publisher of the Modified Version as given on the
4560          Title Page.  If there is no section Entitled "History" in the
4561          Document, create one stating the title, year, authors, and
4562          publisher of the Document as given on its Title Page, then add
4563          an item describing the Modified Version as stated in the
4564          previous sentence.
4565
4566       J. Preserve the network location, if any, given in the Document
4567          for public access to a Transparent copy of the Document, and
4568          likewise the network locations given in the Document for
4569          previous versions it was based on.  These may be placed in the
4570          "History" section.  You may omit a network location for a work
4571          that was published at least four years before the Document
4572          itself, or if the original publisher of the version it refers
4573          to gives permission.
4574
4575       K. For any section Entitled "Acknowledgements" or "Dedications",
4576          Preserve the Title of the section, and preserve in the section
4577          all the substance and tone of each of the contributor
4578          acknowledgements and/or dedications given therein.
4579
4580       L. Preserve all the Invariant Sections of the Document, unaltered
4581          in their text and in their titles.  Section numbers or the
4582          equivalent are not considered part of the section titles.
4583
4584       M. Delete any section Entitled "Endorsements".  Such a section
4585          may not be included in the Modified Version.
4586
4587       N. Do not retitle any existing section to be Entitled
4588          "Endorsements" or to conflict in title with any Invariant
4589          Section.
4590
4591       O. Preserve any Warranty Disclaimers.
4592
4593     If the Modified Version includes new front-matter sections or
4594     appendices that qualify as Secondary Sections and contain no
4595     material copied from the Document, you may at your option designate
4596     some or all of these sections as invariant.  To do this, add their
4597     titles to the list of Invariant Sections in the Modified Version's
4598     license notice.  These titles must be distinct from any other
4599     section titles.
4600
4601     You may add a section Entitled "Endorsements", provided it contains
4602     nothing but endorsements of your Modified Version by various
4603     parties--for example, statements of peer review or that the text
4604     has been approved by an organization as the authoritative
4605     definition of a standard.
4606
4607     You may add a passage of up to five words as a Front-Cover Text,
4608     and a passage of up to 25 words as a Back-Cover Text, to the end of
4609     the list of Cover Texts in the Modified Version.  Only one passage
4610     of Front-Cover Text and one of Back-Cover Text may be added by (or
4611     through arrangements made by) any one entity.  If the Document
4612     already includes a cover text for the same cover, previously added
4613     by you or by arrangement made by the same entity you are acting on
4614     behalf of, you may not add another; but you may replace the old
4615     one, on explicit permission from the previous publisher that added
4616     the old one.
4617
4618     The author(s) and publisher(s) of the Document do not by this
4619     License give permission to use their names for publicity for or to
4620     assert or imply endorsement of any Modified Version.
4621
4622  5. COMBINING DOCUMENTS
4623
4624     You may combine the Document with other documents released under
4625     this License, under the terms defined in section 4 above for
4626     modified versions, provided that you include in the combination all
4627     of the Invariant Sections of all of the original documents,
4628     unmodified, and list them all as Invariant Sections of your
4629     combined work in its license notice, and that you preserve all
4630     their Warranty Disclaimers.
4631
4632     The combined work need only contain one copy of this License, and
4633     multiple identical Invariant Sections may be replaced with a single
4634     copy.  If there are multiple Invariant Sections with the same name
4635     but different contents, make the title of each such section unique
4636     by adding at the end of it, in parentheses, the name of the
4637     original author or publisher of that section if known, or else a
4638     unique number.  Make the same adjustment to the section titles in
4639     the list of Invariant Sections in the license notice of the
4640     combined work.
4641
4642     In the combination, you must combine any sections Entitled
4643     "History" in the various original documents, forming one section
4644     Entitled "History"; likewise combine any sections Entitled
4645     "Acknowledgements", and any sections Entitled "Dedications".  You
4646     must delete all sections Entitled "Endorsements."
4647
4648  6. COLLECTIONS OF DOCUMENTS
4649
4650     You may make a collection consisting of the Document and other
4651     documents released under this License, and replace the individual
4652     copies of this License in the various documents with a single copy
4653     that is included in the collection, provided that you follow the
4654     rules of this License for verbatim copying of each of the documents
4655     in all other respects.
4656
4657     You may extract a single document from such a collection, and
4658     distribute it individually under this License, provided you insert
4659     a copy of this License into the extracted document, and follow this
4660     License in all other respects regarding verbatim copying of that
4661     document.
4662
4663  7. AGGREGATION WITH INDEPENDENT WORKS
4664
4665     A compilation of the Document or its derivatives with other
4666     separate and independent documents or works, in or on a volume of a
4667     storage or distribution medium, is called an "aggregate" if the
4668     copyright resulting from the compilation is not used to limit the
4669     legal rights of the compilation's users beyond what the individual
4670     works permit.  When the Document is included in an aggregate, this
4671     License does not apply to the other works in the aggregate which
4672     are not themselves derivative works of the Document.
4673
4674     If the Cover Text requirement of section 3 is applicable to these
4675     copies of the Document, then if the Document is less than one half
4676     of the entire aggregate, the Document's Cover Texts may be placed
4677     on covers that bracket the Document within the aggregate, or the
4678     electronic equivalent of covers if the Document is in electronic
4679     form.  Otherwise they must appear on printed covers that bracket
4680     the whole aggregate.
4681
4682  8. TRANSLATION
4683
4684     Translation is considered a kind of modification, so you may
4685     distribute translations of the Document under the terms of section
4686     4.  Replacing Invariant Sections with translations requires special
4687     permission from their copyright holders, but you may include
4688     translations of some or all Invariant Sections in addition to the
4689     original versions of these Invariant Sections.  You may include a
4690     translation of this License, and all the license notices in the
4691     Document, and any Warranty Disclaimers, provided that you also
4692     include the original English version of this License and the
4693     original versions of those notices and disclaimers.  In case of a
4694     disagreement between the translation and the original version of
4695     this License or a notice or disclaimer, the original version will
4696     prevail.
4697
4698     If a section in the Document is Entitled "Acknowledgements",
4699     "Dedications", or "History", the requirement (section 4) to
4700     Preserve its Title (section 1) will typically require changing the
4701     actual title.
4702
4703  9. TERMINATION
4704
4705     You may not copy, modify, sublicense, or distribute the Document
4706     except as expressly provided under this License.  Any attempt
4707     otherwise to copy, modify, sublicense, or distribute it is void,
4708     and will automatically terminate your rights under this License.
4709
4710     However, if you cease all violation of this License, then your
4711     license from a particular copyright holder is reinstated (a)
4712     provisionally, unless and until the copyright holder explicitly and
4713     finally terminates your license, and (b) permanently, if the
4714     copyright holder fails to notify you of the violation by some
4715     reasonable means prior to 60 days after the cessation.
4716
4717     Moreover, your license from a particular copyright holder is
4718     reinstated permanently if the copyright holder notifies you of the
4719     violation by some reasonable means, this is the first time you have
4720     received notice of violation of this License (for any work) from
4721     that copyright holder, and you cure the violation prior to 30 days
4722     after your receipt of the notice.
4723
4724     Termination of your rights under this section does not terminate
4725     the licenses of parties who have received copies or rights from you
4726     under this License.  If your rights have been terminated and not
4727     permanently reinstated, receipt of a copy of some or all of the
4728     same material does not give you any rights to use it.
4729
4730  10. FUTURE REVISIONS OF THIS LICENSE
4731
4732     The Free Software Foundation may publish new, revised versions of
4733     the GNU Free Documentation License from time to time.  Such new
4734     versions will be similar in spirit to the present version, but may
4735     differ in detail to address new problems or concerns.  See
4736     <http://www.gnu.org/copyleft/>.
4737
4738     Each version of the License is given a distinguishing version
4739     number.  If the Document specifies that a particular numbered
4740     version of this License "or any later version" applies to it, you
4741     have the option of following the terms and conditions either of
4742     that specified version or of any later version that has been
4743     published (not as a draft) by the Free Software Foundation.  If the
4744     Document does not specify a version number of this License, you may
4745     choose any version ever published (not as a draft) by the Free
4746     Software Foundation.  If the Document specifies that a proxy can
4747     decide which future versions of this License can be used, that
4748     proxy's public statement of acceptance of a version permanently
4749     authorizes you to choose that version for the Document.
4750
4751  11. RELICENSING
4752
4753     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
4754     World Wide Web server that publishes copyrightable works and also
4755     provides prominent facilities for anybody to edit those works.  A
4756     public wiki that anybody can edit is an example of such a server.
4757     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
4758     site means any set of copyrightable works thus published on the MMC
4759     site.
4760
4761     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
4762     license published by Creative Commons Corporation, a not-for-profit
4763     corporation with a principal place of business in San Francisco,
4764     California, as well as future copyleft versions of that license
4765     published by that same organization.
4766
4767     "Incorporate" means to publish or republish a Document, in whole or
4768     in part, as part of another Document.
4769
4770     An MMC is "eligible for relicensing" if it is licensed under this
4771     License, and if all works that were first published under this
4772     License somewhere other than this MMC, and subsequently
4773     incorporated in whole or in part into the MMC, (1) had no cover
4774     texts or invariant sections, and (2) were thus incorporated prior
4775     to November 1, 2008.
4776
4777     The operator of an MMC Site may republish an MMC contained in the
4778     site under CC-BY-SA on the same site at any time before August 1,
4779     2009, provided the MMC is eligible for relicensing.
4780
4781ADDENDUM: How to use this License for your documents
4782====================================================
4783
4784To use this License in a document you have written, include a copy of
4785the License in the document and put the following copyright and license
4786notices just after the title page:
4787
4788       Copyright (C)  YEAR  YOUR NAME.
4789       Permission is granted to copy, distribute and/or modify this document
4790       under the terms of the GNU Free Documentation License, Version 1.3
4791       or any later version published by the Free Software Foundation;
4792       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
4793       Texts.  A copy of the license is included in the section entitled ``GNU
4794       Free Documentation License''.
4795
4796   If you have Invariant Sections, Front-Cover Texts and Back-Cover
4797Texts, replace the "with...Texts."  line with this:
4798
4799         with the Invariant Sections being LIST THEIR TITLES, with
4800         the Front-Cover Texts being LIST, and with the Back-Cover Texts
4801         being LIST.
4802
4803   If you have Invariant Sections without Cover Texts, or some other
4804combination of the three, merge those two alternatives to suit the
4805situation.
4806
4807   If your document contains nontrivial examples of program code, we
4808recommend releasing these examples in parallel under your choice of free
4809software license, such as the GNU General Public License, to permit
4810their use in free software.
4811
4812
4813File: gccinstall.info,  Node: Concept Index,  Prev: GNU Free Documentation License,  Up: Top
4814
4815Concept Index
4816*************
4817
4818�[index�]
4819* Menu:
4820
4821* Binaries:                              Binaries.           (line    6)
4822* 'build_configargs':                    Configuration.      (line 1699)
4823* Configuration:                         Configuration.      (line    6)
4824* configurations supported by GCC:       Configurations.     (line    6)
4825* Downloading GCC:                       Downloading the source.
4826                                                             (line    6)
4827* Downloading the Source:                Downloading the source.
4828                                                             (line    6)
4829* FDL, GNU Free Documentation License:   GNU Free Documentation License.
4830                                                             (line    6)
4831* Host specific installation:            Specific.           (line    6)
4832* 'host_configargs':                     Configuration.      (line 1703)
4833* Installing GCC: Binaries:              Binaries.           (line    6)
4834* Installing GCC: Building:              Building.           (line    6)
4835* Installing GCC: Configuration:         Configuration.      (line    6)
4836* Installing GCC: Testing:               Testing.            (line    6)
4837* Prerequisites:                         Prerequisites.      (line    6)
4838* Specific:                              Specific.           (line    6)
4839* Specific installation notes:           Specific.           (line    6)
4840* Target specific installation:          Specific.           (line    6)
4841* Target specific installation notes:    Specific.           (line    6)
4842* 'target_configargs':                   Configuration.      (line 1707)
4843* Testing:                               Testing.            (line    6)
4844* Testsuite:                             Testing.            (line    6)
4845
4846
4847
4848Tag Table:
4849Node: Top1696
4850Node: Installing GCC2254
4851Node: Prerequisites3888
4852Ref: GNAT-prerequisite5875
4853Node: Downloading the source15487
4854Node: Configuration17158
4855Ref: with-gnu-as33246
4856Ref: with-as34141
4857Ref: with-gnu-ld35550
4858Ref: WithAixSoname58229
4859Ref: AixLdCommand58890
4860Node: Building100321
4861Node: Testing116190
4862Node: Final install124077
4863Node: Binaries129377
4864Node: Specific130484
4865Ref: aarch64-x-x130991
4866Ref: alpha-x-x133011
4867Ref: amd64-x-solaris2133225
4868Ref: amdgcn-x-amdhsa133307
4869Ref: arc-x-elf32133833
4870Ref: arc-linux-uclibc134009
4871Ref: arm-x-eabi134150
4872Ref: avr134403
4873Ref: bfin134984
4874Ref: cr16135247
4875Ref: cris135663
4876Ref: dos136361
4877Ref: epiphany-x-elf136684
4878Ref: x-x-freebsd136789
4879Ref: ft32-x-elf138589
4880Ref: h8300-hms138687
4881Ref: hppa-hp-hpux139039
4882Ref: hppa-hp-hpux10141411
4883Ref: hppa-hp-hpux11141824
4884Ref: x-x-linux-gnu147226
4885Ref: ix86-x-linux147419
4886Ref: ix86-x-solaris2147732
4887Ref: ia64-x-linux148808
4888Ref: ia64-x-hpux149578
4889Ref: x-ibm-aix150133
4890Ref: TransferAixShobj153795
4891Ref: iq2000-x-elf157605
4892Ref: lm32-x-elf157745
4893Ref: lm32-x-uclinux157849
4894Ref: m32c-x-elf157977
4895Ref: m32r-x-elf158079
4896Ref: m68k-x-x158181
4897Ref: m68k-x-uclinux159219
4898Ref: microblaze-x-elf159464
4899Ref: mips-x-x159583
4900Ref: moxie-x-elf161493
4901Ref: msp430-x-elf161540
4902Ref: nds32le-x-elf162097
4903Ref: nds32be-x-elf162169
4904Ref: nvptx-x-none162238
4905Ref: or1k-x-elf162801
4906Ref: or1k-x-linux162932
4907Ref: powerpc-x-x163013
4908Ref: powerpc-x-darwin163204
4909Ref: powerpc-x-elf163698
4910Ref: powerpc-x-linux-gnu163783
4911Ref: powerpc-x-netbsd163878
4912Ref: powerpc-x-eabisim163966
4913Ref: powerpc-x-eabi164092
4914Ref: powerpcle-x-elf164168
4915Ref: powerpcle-x-eabisim164260
4916Ref: powerpcle-x-eabi164393
4917Ref: rl78-x-elf164476
4918Ref: riscv32-x-elf164582
4919Ref: riscv32-x-linux164771
4920Ref: riscv64-x-elf164928
4921Ref: riscv64-x-linux165117
4922Ref: rx-x-elf165274
4923Ref: s390-x-linux165320
4924Ref: s390x-x-linux165392
4925Ref: s390x-ibm-tpf165479
4926Ref: x-x-solaris2165610
4927Ref: sparc-x-x168717
4928Ref: sparc-sun-solaris2169219
4929Ref: sparc-x-linux170362
4930Ref: sparc64-x-solaris2170393
4931Ref: sparcv9-x-solaris2171111
4932Ref: c6x-x-x171198
4933Ref: tilegx-*-linux171290
4934Ref: tilegxbe-*-linux171432
4935Ref: tilepro-*-linux171575
4936Ref: visium-x-elf171696
4937Ref: x-x-vxworks171804
4938Ref: x86-64-x-x173327
4939Ref: x86-64-x-solaris2173655
4940Ref: xtensa-x-elf174305
4941Ref: xtensa-x-linux174976
4942Ref: windows175317
4943Ref: x-x-cygwin177158
4944Ref: x-x-mingw32177711
4945Ref: older177937
4946Ref: elf180054
4947Node: Old180312
4948Node: Configurations183445
4949Node: GNU Free Documentation License186983
4950Node: Concept Index212110
4951
4952End Tag Table
4953