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