]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/doc/install.texi
* sv.po: Update.
[thirdparty/gcc.git] / gcc / doc / install.texi
CommitLineData
f42974dc
DW
1\input texinfo.tex @c -*-texinfo-*-
2@c @ifnothtml
3@c %**start of header
d7f8491b 4@setfilename gccinstall.info
f42974dc
DW
5@settitle Installing GCC
6@setchapternewpage odd
7@c %**end of header
8@c @end ifnothtml
9
10@c Specify title for specific html page
11@ifset indexhtml
12@settitle Installing GCC
13@end ifset
14@ifset specifichtml
15@settitle Host/Target specific installation notes for GCC
16@end ifset
67b1fbb9
KG
17@ifset prerequisiteshtml
18@settitle Prerequisites for GCC
19@end ifset
f42974dc
DW
20@ifset downloadhtml
21@settitle Downloading GCC
22@end ifset
23@ifset configurehtml
24@settitle Installing GCC: Configuration
25@end ifset
26@ifset buildhtml
27@settitle Installing GCC: Building
28@end ifset
29@ifset testhtml
30@settitle Installing GCC: Testing
31@end ifset
32@ifset finalinstallhtml
33@settitle Installing GCC: Final installation
34@end ifset
35@ifset binarieshtml
36@settitle Installing GCC: Binaries
37@end ifset
73e2155a
JM
38@ifset oldhtml
39@settitle Installing GCC: Old documentation
40@end ifset
aed5964b
JM
41@ifset gfdlhtml
42@settitle Installing GCC: GNU Free Documentation License
43@end ifset
f42974dc 44
aed5964b 45@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
d7f755c3 46@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
f42974dc
DW
47@c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com
48
d7f755c3
PB
49@c IMPORTANT: whenever you modify this file, run `install.texi2html' to
50@c test the generation of HTML documents for the gcc.gnu.org web pages.
51@c
52@c Do not use @footnote{} in this file as it breaks install.texi2html!
53
f42974dc
DW
54@c Include everything if we're not making html
55@ifnothtml
56@set indexhtml
57@set specifichtml
67b1fbb9 58@set prerequisiteshtml
f42974dc
DW
59@set downloadhtml
60@set configurehtml
61@set buildhtml
62@set testhtml
63@set finalinstallhtml
64@set binarieshtml
73e2155a 65@set oldhtml
aed5964b 66@set gfdlhtml
f42974dc
DW
67@end ifnothtml
68
69@c Part 2 Summary Description and Copyright
bdefb2ab 70@copying
aed5964b 71Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
d7f755c3 721999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
aed5964b
JM
73@sp 1
74Permission is granted to copy, distribute and/or modify this document
b3a8389d 75under the terms of the GNU Free Documentation License, Version 1.2 or
aed5964b
JM
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.
bdefb2ab 91@end copying
f42974dc 92@ifinfo
bdefb2ab 93@insertcopying
f42974dc 94@end ifinfo
c3cb54c6 95@dircategory Software development
802f6d4b
JM
96@direntry
97* gccinstall: (gccinstall). Installing the GNU Compiler Collection.
98@end direntry
f42974dc
DW
99
100@c Part 3 Titlepage and Copyright
101@titlepage
102@sp 10
103@comment The title is printed in a large font.
ef88b07d 104@center @titlefont{Installing GCC}
f42974dc
DW
105
106@c The following two commands start the copyright page.
107@page
ef88b07d 108@vskip 0pt plus 1filll
bdefb2ab 109@insertcopying
f42974dc
DW
110@end titlepage
111
112@c Part 4 Top node and Master Menu
113@ifinfo
114@node Top, , , (dir)
115@comment node-name, next, Previous, up
116
117@menu
118* Installing GCC:: This document describes the generic installation
119 procedure for GCC as well as detailing some target
f9047ed3 120 specific installation instructions.
f42974dc
DW
121
122* Specific:: Host/target specific installation notes for GCC.
123* Binaries:: Where to get pre-compiled binaries.
124
73e2155a
JM
125* Old:: Old installation documentation.
126
aed5964b 127* GNU Free Documentation License:: How you can copy and share this manual.
f42974dc
DW
128* Concept Index:: This index has two entries.
129@end menu
130@end ifinfo
131
132@c Part 5 The Body of the Document
133@c ***Installing GCC**********************************************************
6cfb3f16 134@ifnothtml
f42974dc
DW
135@comment node-name, next, previous, up
136@node Installing GCC, Binaries, , Top
6cfb3f16 137@end ifnothtml
f42974dc 138@ifset indexhtml
f42974dc
DW
139@ifnothtml
140@chapter Installing GCC
141@end ifnothtml
142
143The latest version of this document is always available at
f9047ed3 144@uref{http://gcc.gnu.org/install/,,http://gcc.gnu.org/install/}.
f42974dc
DW
145
146This document describes the generic installation procedure for GCC as well
f9047ed3 147as detailing some target specific installation instructions.
f42974dc 148
f9047ed3
JM
149GCC includes several components that previously were separate distributions
150with their own installation instructions. This document supersedes all
eea81d3e 151package specific installation instructions.
f42974dc 152
f9047ed3 153@emph{Before} starting the build/install procedure please check the
f42974dc 154@ifnothtml
eea81d3e 155@ref{Specific, host/target specific installation notes}.
f42974dc 156@end ifnothtml
c009f01f 157@ifhtml
f9047ed3 158@uref{specific.html,,host/target specific installation notes}.
c009f01f 159@end ifhtml
f9047ed3 160We recommend you browse the entire generic installation instructions before
f42974dc
DW
161you proceed.
162
c009f01f 163Lists of successful builds for released versions of GCC are
daf2f129 164available at @uref{http://gcc.gnu.org/buildstat.html}.
c009f01f
JJ
165These lists are updated as new information becomes available.
166
f9047ed3 167The installation procedure itself is broken into five steps.
f42974dc
DW
168
169@ifinfo
170@menu
67b1fbb9 171* Prerequisites::
f42974dc
DW
172* Downloading the source::
173* Configuration::
174* Building::
175* Testing:: (optional)
176* Final install::
177@end menu
178@end ifinfo
c009f01f 179@ifhtml
f42974dc 180@enumerate
f9047ed3 181@item
67b1fbb9
KG
182@uref{prerequisites.html,,Prerequisites}
183@item
f42974dc 184@uref{download.html,,Downloading the source}
f42974dc 185@item
f9047ed3
JM
186@uref{configure.html,,Configuration}
187@item
188@uref{build.html,,Building}
189@item
190@uref{test.html,,Testing} (optional)
f42974dc
DW
191@item
192@uref{finalinstall.html,,Final install}
193@end enumerate
c009f01f 194@end ifhtml
f42974dc 195
38209993 196Please note that GCC does not support @samp{make uninstall} and probably
f9047ed3 197won't do so in the near future as this would open a can of worms. Instead,
f42974dc 198we suggest that you install GCC into a directory of its own and simply
38209993 199remove that directory when you do not need that specific version of GCC
eea81d3e
RO
200any longer, and, if shared libraries are installed there as well, no
201more binaries exist that use them.
f42974dc 202
73e2155a
JM
203@ifhtml
204There are also some @uref{old.html,,old installation instructions},
205which are mostly obsolete but still contain some information which has
206not yet been merged into the main part of this manual.
207@end ifhtml
208
f42974dc 209@html
b8db17af 210<hr />
f42974dc
DW
211<p>
212@end html
213@ifhtml
214@uref{./index.html,,Return to the GCC Installation page}
aed5964b 215
bdefb2ab 216@insertcopying
f42974dc
DW
217@end ifhtml
218@end ifset
219
67b1fbb9
KG
220@c ***Prerequisites**************************************************
221@ifnothtml
222@comment node-name, next, previous, up
223@node Prerequisites, Downloading the source, , Installing GCC
224@end ifnothtml
225@ifset prerequisiteshtml
226@ifnothtml
227@chapter Prerequisites
228@end ifnothtml
229@cindex Prerequisites
230
231GCC requires that various tools and packages be available for use in the
232build procedure. Modifying GCC sources requires additional tools
233described below.
234
235@heading Tools/packages necessary for building GCC
236@table @asis
237@item ISO C90 compiler
80521187 238Necessary to bootstrap GCC, although versions of GCC prior
67b1fbb9
KG
239to 3.4 also allow bootstrapping with a traditional (K&R) C compiler.
240
80521187 241To build all languages in a cross-compiler or other configuration where
67b1fbb9
KG
2423-stage bootstrap is not performed, you need to start with an existing
243GCC binary (version 2.95 or later) because source code for language
244frontends other than C might use GCC extensions.
245
246@item GNAT
247
248In order to build the Ada compiler (GNAT) you must already have GNAT
249installed because portions of the Ada frontend are written in Ada (with
250GNAT extensions.) Refer to the Ada installation instructions for more
251specific information.
252
253@item A ``working'' POSIX compatible shell, or GNU bash
254
255Necessary when running @command{configure} because some
256@command{/bin/sh} shells have bugs and may crash when configuring the
80521187
GP
257target libraries. In other cases, @command{/bin/sh} or @command{ksh}
258have disastrous corner-case performance problems. This
67b1fbb9
KG
259can cause target @command{configure} runs to literally take days to
260complete in some cases.
261
262So on some platforms @command{/bin/ksh} is sufficient, on others it
263isn't. See the host/target specific instructions for your platform, or
264use @command{bash} to be sure. Then set @env{CONFIG_SHELL} in your
265environment to your ``good'' shell prior to running
266@command{configure}/@command{make}.
267
daf2f129 268@command{zsh} is not a fully compliant POSIX shell and will not
8a36672b 269work when configuring GCC@.
1b49d06f 270
67b1fbb9
KG
271@item GNU binutils
272
273Necessary in some circumstances, optional in others. See the
274host/target specific instructions for your platform for the exact
275requirements.
276
277@item gzip version 1.2.4 (or later) or
278@itemx bzip2 version 1.0.2 (or later)
279
280Necessary to uncompress GCC @command{tar} files when source code is
281obtained via FTP mirror sites.
282
e158a5fb
MM
283@item GNU make version 3.79.1 (or later)
284
8a36672b 285You must have GNU make installed to build GCC@.
e158a5fb 286
f44a5ab6 287@item GNU tar version 1.14 (or later)
67b1fbb9
KG
288
289Necessary (only on some platforms) to untar the source code. Many
290systems' @command{tar} programs will also work, only try GNU
291@command{tar} if you have problems.
292
e48d66a9 293@item GNU Multiple Precision Library (GMP) version 4.1 (or later)
bda4d063 294
e48d66a9 295Necessary to build the Fortran frontend. If you do not have it
bda4d063
TS
296installed in your library search path, you will have to configure with
297the @option{--with-gmp} or @option{--with-gmp-dir} configure option.
298
e48d66a9 299@item MPFR Library version 2.2 (or later)
bebf829d
PB
300
301Necessary to build the Fortran frontend. It can be downloaded from
e48d66a9 302@uref{http://www.mpfr.org/}. The version of MPFR that is bundled with
92922512
BM
303GMP 4.1.x contains numerous bugs. Although GNU Fortran will appear
304to function with the buggy versions of MPFR, there are a few GNU Fortran
305bugs that will not be fixed when using this version. It is strongly
e48d66a9 306recommended to upgrade to at least MPFR version 2.2.
bebf829d
PB
307
308The @option{--with-mpfr} or @option{--with-mpfr-dir} configure option should
309be used if your MPFR Library is not installed in your library search path.
310
02809848 311@item @command{jar}, or InfoZIP (@command{zip} and @command{unzip})
b52be2c8
TT
312
313Necessary to build libgcj, the GCJ runtime.
314
67b1fbb9
KG
315@end table
316
317
318@heading Tools/packages necessary for modifying GCC
319@table @asis
0dce8934 320@item autoconf versions 2.13 and 2.59
67b1fbb9
KG
321@itemx GNU m4 version 1.4 (or later)
322
89acbae0 323Necessary when modifying @file{configure.ac}, @file{aclocal.m4}, etc.@:
4f3ce03f 324to regenerate @file{configure} and @file{config.in} files. Most
5d75ba94
NN
325directories require autoconf 2.59 (exactly), but the toplevel
326still requires autoconf 2.13 (exactly).
67b1fbb9 327
ae8cacc6 328@item automake versions 1.9.3
67b1fbb9
KG
329
330Necessary when modifying a @file{Makefile.am} file to regenerate its
ce5c1cf3
KC
331associated @file{Makefile.in}.
332
333Much of GCC does not use automake, so directly edit the @file{Makefile.in}
334file. Specifically this applies to the @file{gcc}, @file{intl},
078e3ffe
PB
335@file{libcpp}, @file{libiberty}, @file{libobjc} directories as well
336as any of their subdirectories.
ce5c1cf3 337
ae8cacc6
KC
338For directories that use automake, GCC requires the latest release in
339the 1.9.x series, which is currently 1.9.3. When regenerating a directory
340to a newer version, please update all the directories using an older 1.9.x
341to the latest released version.
ccfca4ae 342
4b794eaf 343@item gettext version 0.14.5 (or later)
4f3ce03f
JM
344
345Needed to regenerate @file{gcc.pot}.
67b1fbb9
KG
346
347@item gperf version 2.7.2 (or later)
348
349Necessary when modifying @command{gperf} input files, e.g.@:
350@file{gcc/cp/cfns.gperf} to regenerate its associated header file, e.g.@:
351@file{gcc/cp/cfns.h}.
352
80521187
GP
353@item DejaGnu 1.4.4
354@itemx Expect
355@itemx Tcl
67b1fbb9 356
80521187 357Necessary to run the GCC testsuite; see the section on testing for details.
67b1fbb9
KG
358
359@item autogen version 5.5.4 (or later) and
360@itemx guile version 1.4.1 (or later)
361
362Necessary to regenerate @file{fixinc/fixincl.x} from
363@file{fixinc/inclhack.def} and @file{fixinc/*.tpl}.
364
80521187 365Necessary to run @samp{make check} for @file{fixinc}.
67b1fbb9 366
ce5c1cf3 367Necessary to regenerate the top level @file{Makefile.in} file from
67b1fbb9
KG
368@file{Makefile.tpl} and @file{Makefile.def}.
369
370@item GNU Bison version 1.28 (or later)
371Berkeley @command{yacc} (@command{byacc}) is also reported to work other
80521187 372than for GCJ.
67b1fbb9
KG
373
374Necessary when modifying @file{*.y} files.
375
376Necessary to build GCC during development because the generated output
80521187 377files are not included in the SVN repository. They are included in
67b1fbb9
KG
378releases.
379
380@item Flex version 2.5.4 (or later)
381
382Necessary when modifying @file{*.l} files.
383
384Necessary to build GCC during development because the generated output
80521187 385files are not included in the SVN repository. They are included in
67b1fbb9
KG
386releases.
387
1a598a97 388@item Texinfo version 4.4 (or later)
67b1fbb9
KG
389
390Necessary for running @command{makeinfo} when modifying @file{*.texi}
391files to test your changes.
392
cc5c2741
BM
393Necessary for running @command{make dvi} or @command{make pdf} to
394create printable documentation in DVI or PDF format. Texinfo version
3954.8 or later is required for @command{make pdf}.
396
67b1fbb9 397Necessary to build GCC documentation during development because the
80521187 398generated output files are not included in the SVN repository. They are
67b1fbb9
KG
399included in releases.
400
401@item @TeX{} (any working version)
402
cc5c2741
BM
403Necessary for running @command{texi2dvi} and @command{texi2pdf}, which
404are used when running @command{make dvi} or @command{make pdf} to create
405DVI or PDF files, respectively.
67b1fbb9 406
80521187
GP
407@item SVN (any version)
408@itemx SSH (any version)
67b1fbb9 409
80521187 410Necessary to access the SVN repository. Public releases and weekly
8a36672b 411snapshots of the development sources are also available via FTP@.
67b1fbb9 412
80521187 413@item Perl version 5.6.1 (or later)
67b1fbb9
KG
414
415Necessary when regenerating @file{Makefile} dependencies in libiberty.
4f3ce03f
JM
416Necessary when regenerating @file{libiberty/functions.texi}.
417Necessary when generating manpages from Texinfo manuals.
a9fdd472
GK
418Necessary when targetting Darwin, building libstdc++,
419and not using @option{--disable-symvers}.
80521187 420Used by various scripts to generate some files included in SVN (mainly
4f3ce03f 421Unicode-related and rarely changing) from source tables.
67b1fbb9
KG
422
423@item GNU diffutils version 2.7 (or later)
424
80521187 425Useful when submitting patches for the GCC source code.
67b1fbb9
KG
426
427@item patch version 2.5.4 (or later)
428
429Necessary when applying patches, created with @command{diff}, to one's
430own sources.
431
432@end table
433
434@html
435<hr />
436<p>
437@end html
438@ifhtml
439@uref{./index.html,,Return to the GCC Installation page}
440@end ifhtml
441@end ifset
442
f42974dc 443@c ***Downloading the source**************************************************
6cfb3f16 444@ifnothtml
f42974dc 445@comment node-name, next, previous, up
67b1fbb9 446@node Downloading the source, Configuration, Prerequisites, Installing GCC
6cfb3f16 447@end ifnothtml
f42974dc 448@ifset downloadhtml
f42974dc
DW
449@ifnothtml
450@chapter Downloading GCC
451@end ifnothtml
452@cindex Downloading GCC
453@cindex Downloading the Source
454
80521187 455GCC is distributed via @uref{http://gcc.gnu.org/svn.html,,SVN} and FTP
eea81d3e 456tarballs compressed with @command{gzip} or
6cfb3f16 457@command{bzip2}. It is possible to download a full distribution or specific
f42974dc
DW
458components.
459
962e6e00 460Please refer to the @uref{http://gcc.gnu.org/releases.html,,releases web page}
161d7b59 461for information on how to obtain GCC@.
f42974dc 462
6de9cd9a 463The full distribution includes the C, C++, Objective-C, Fortran 77, Fortran
25f710ba 464(in case of GCC 4.0 and later), Java, and Ada (in case of GCC 3.1 and later)
6de9cd9a
DN
465compilers. The full distribution also includes runtime libraries for C++,
466Objective-C, Fortran 77, Fortran, and Java. In GCC 3.0 and later versions,
467GNU compiler testsuites are also included in the full distribution.
f42974dc
DW
468
469If you choose to download specific components, you must download the core
eea81d3e 470GCC distribution plus any language specific distributions you wish to
6c0a4eab 471use. The core distribution includes the C language front end as well as the
767094dd 472shared components. Each language has a tarball which includes the language
6c0a4eab 473front end as well as the language runtime (when appropriate).
f42974dc
DW
474
475Unpack the core distribution as well as any language specific
476distributions in the same directory.
477
478If you also intend to build binutils (either to upgrade an existing
479installation or for use in place of the corresponding tools of your
480OS), unpack the binutils distribution either in the same directory or
481a separate one. In the latter case, add symbolic links to any
482components of the binutils you intend to build alongside the compiler
6cfb3f16
JM
483(@file{bfd}, @file{binutils}, @file{gas}, @file{gprof}, @file{ld},
484@file{opcodes}, @dots{}) to the directory containing the GCC sources.
f42974dc
DW
485
486@html
b8db17af 487<hr />
f42974dc
DW
488<p>
489@end html
490@ifhtml
491@uref{./index.html,,Return to the GCC Installation page}
492@end ifhtml
493@end ifset
494
495@c ***Configuration***********************************************************
6cfb3f16 496@ifnothtml
f42974dc
DW
497@comment node-name, next, previous, up
498@node Configuration, Building, Downloading the source, Installing GCC
6cfb3f16 499@end ifnothtml
f42974dc 500@ifset configurehtml
f42974dc
DW
501@ifnothtml
502@chapter Installing GCC: Configuration
503@end ifnothtml
504@cindex Configuration
505@cindex Installing GCC: Configuration
506
507Like most GNU software, GCC must be configured before it can be built.
508This document describes the recommended configuration procedure
509for both native and cross targets.
510
38209993
LG
511We use @var{srcdir} to refer to the toplevel source directory for
512GCC; we use @var{objdir} to refer to the toplevel build/object directory.
513
80521187 514If you obtained the sources via SVN, @var{srcdir} must refer to the top
38209993
LG
515@file{gcc} directory, the one where the @file{MAINTAINERS} can be found,
516and not its @file{gcc} subdirectory, otherwise the build will fail.
f42974dc 517
b4b0fb02
RO
518If either @var{srcdir} or @var{objdir} is located on an automounted NFS
519file system, the shell's built-in @command{pwd} command will return
520temporary pathnames. Using these can lead to various sorts of build
521problems. To avoid this issue, set the @env{PWDCMD} environment
522variable to an automounter-aware @command{pwd} command, e.g.,
7ba4ca63 523@command{pawd} or @samp{amq -w}, during the configuration and build
b4b0fb02
RO
524phases.
525
102b60d1
GP
526First, we @strong{highly} recommend that GCC be built into a
527separate directory than the sources which does @strong{not} reside
528within the source tree. This is how we generally build GCC; building
529where @var{srcdir} == @var{objdir} should still work, but doesn't
530get extensive testing; building where @var{objdir} is a subdirectory
531of @var{srcdir} is unsupported.
f42974dc 532
eea81d3e 533If you have previously built GCC in the same directory for a
f85b8d1a 534different target machine, do @samp{make distclean} to delete all files
377dfc82
GP
535that might be invalid. One of the files this deletes is @file{Makefile};
536if @samp{make distclean} complains that @file{Makefile} does not exist
537or issues a message like ``don't know how to make distclean'' it probably
538means that the directory is already suitably clean. However, with the
539recommended method of building in a separate @var{objdir}, you should
540simply use a different @var{objdir} for each target.
f85b8d1a 541
38209993
LG
542Second, when configuring a native system, either @command{cc} or
543@command{gcc} must be in your path or you must set @env{CC} in
df002c7d
DE
544your environment before running configure. Otherwise the configuration
545scripts may fail.
f42974dc 546
cc11cc9b 547@ignore
eea81d3e
RO
548Note that the bootstrap compiler and the resulting GCC must be link
549compatible, else the bootstrap will fail with linker errors about
550incompatible object file formats. Several multilibed targets are
e69aa433
GP
551affected by this requirement, see
552@ifnothtml
553@ref{Specific, host/target specific installation notes}.
554@end ifnothtml
c009f01f 555@ifhtml
e69aa433 556@uref{specific.html,,host/target specific installation notes}.
c009f01f 557@end ifhtml
cc11cc9b 558@end ignore
eea81d3e 559
f42974dc
DW
560To configure GCC:
561
3ab51846 562@smallexample
38209993
LG
563 % mkdir @var{objdir}
564 % cd @var{objdir}
eea81d3e 565 % @var{srcdir}/configure [@var{options}] [@var{target}]
3ab51846 566@end smallexample
f42974dc
DW
567
568
ef88b07d 569@heading Target specification
f42974dc
DW
570@itemize @bullet
571@item
38209993 572GCC has code to correctly determine the correct value for @var{target}
f9047ed3 573for nearly all native systems. Therefore, we highly recommend you not
f42974dc
DW
574provide a configure target when configuring a native compiler.
575
576@item
6cfb3f16 577@var{target} must be specified as @option{--target=@var{target}}
f9047ed3 578when configuring a cross compiler; examples of valid targets would be
a4a4b1d3 579m68k-coff, sh-elf, etc.
f42974dc
DW
580
581@item
6cfb3f16 582Specifying just @var{target} instead of @option{--target=@var{target}}
38209993 583implies that the host defaults to @var{target}.
f42974dc
DW
584@end itemize
585
586
ef88b07d 587@heading Options specification
f42974dc 588
ef88b07d 589Use @var{options} to override several configure time options for
7ba4ca63 590GCC@. A list of supported @var{options} follows; @samp{configure
80f9249a
JM
591--help} may list other options, but those not listed below may not
592work and should not normally be used.
f42974dc 593
c1c3bb0c
ME
594Note that each @option{--enable} option has a corresponding
595@option{--disable} option and that each @option{--with} option has a
596corresponding @option{--without} option.
597
ef88b07d
JM
598@table @code
599@item --prefix=@var{dirname}
600Specify the toplevel installation
f42974dc
DW
601directory. This is the recommended way to install the tools into a directory
602other than the default. The toplevel installation directory defaults to
6cfb3f16 603@file{/usr/local}.
f42974dc 604
38209993 605We @strong{highly} recommend against @var{dirname} being the same or a
a7582c8c
BE
606subdirectory of @var{objdir} or vice versa. If specifying a directory
607beneath a user's home directory tree, some shells will not expand
608@var{dirname} correctly if it contains the @samp{~} metacharacter; use
609@env{$HOME} instead.
f42974dc 610
8e5f33ff
GK
611The following standard @command{autoconf} options are supported. Normally you
612should not need to use these options.
ef88b07d 613@table @code
ab130aa5
JM
614@item --exec-prefix=@var{dirname}
615Specify the toplevel installation directory for architecture-dependent
616files. The default is @file{@var{prefix}}.
617
618@item --bindir=@var{dirname}
619Specify the installation directory for the executables called by users
620(such as @command{gcc} and @command{g++}). The default is
621@file{@var{exec-prefix}/bin}.
622
623@item --libdir=@var{dirname}
624Specify the installation directory for object code libraries and
8e5f33ff
GK
625internal data files of GCC@. The default is @file{@var{exec-prefix}/lib}.
626
627@item --libexecdir=@var{dirname}
628Specify the installation directory for internal executables of GCC@.
629 The default is @file{@var{exec-prefix}/libexec}.
ab130aa5
JM
630
631@item --with-slibdir=@var{dirname}
632Specify the installation directory for the shared libgcc library. The
633default is @file{@var{libdir}}.
634
635@item --infodir=@var{dirname}
636Specify the installation directory for documentation in info format.
637The default is @file{@var{prefix}/info}.
638
8567c70f
TT
639@item --datadir=@var{dirname}
640Specify the installation directory for some architecture-independent
641data files referenced by GCC@. The default is @file{@var{prefix}/share}.
642
ab130aa5
JM
643@item --mandir=@var{dirname}
644Specify the installation directory for manual pages. The default is
645@file{@var{prefix}/man}. (Note that the manual pages are only extracts from
8e9a4a45 646the full GCC manuals, which are provided in Texinfo format. The manpages
ab130aa5
JM
647are derived by an automatic conversion process from parts of the full
648manual.)
649
ef88b07d
JM
650@item --with-gxx-include-dir=@var{dirname}
651Specify
eea81d3e 652the installation directory for G++ header files. The default is
e0b24bce 653@file{@var{prefix}/include/c++/@var{version}}.
ecb7d6b3 654
ef88b07d 655@end table
f42974dc 656
b21d216c
AF
657@item --program-prefix=@var{prefix}
658GCC supports some transformations of the names of its programs when
8a36672b
JM
659installing them. This option prepends @var{prefix} to the names of
660programs to install in @var{bindir} (see above). For example, specifying
b21d216c
AF
661@option{--program-prefix=foo-} would result in @samp{gcc}
662being installed as @file{/usr/local/bin/foo-gcc}.
663
664@item --program-suffix=@var{suffix}
665Appends @var{suffix} to the names of programs to install in @var{bindir}
8a36672b 666(see above). For example, specifying @option{--program-suffix=-3.1}
b21d216c
AF
667would result in @samp{gcc} being installed as
668@file{/usr/local/bin/gcc-3.1}.
669
670@item --program-transform-name=@var{pattern}
671Applies the @samp{sed} script @var{pattern} to be applied to the names
8a36672b 672of programs to install in @var{bindir} (see above). @var{pattern} has to
b21d216c 673consist of one or more basic @samp{sed} editing commands, separated by
8a36672b 674semicolons. For example, if you want the @samp{gcc} program name to be
b21d216c
AF
675transformed to the installed program @file{/usr/local/bin/myowngcc} and
676the @samp{g++} program name to be transformed to
677@file{/usr/local/bin/gspecial++} without changing other program names,
678you could use the pattern
679@option{--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/'}
680to achieve this effect.
681
682All three options can be combined and used together, resulting in more
8a36672b 683complex conversion patterns. As a basic rule, @var{prefix} (and
b21d216c
AF
684@var{suffix}) are prepended (appended) before further transformations
685can happen with a special transformation script @var{pattern}.
686
8c085f6f 687As currently implemented, this option only takes effect for native
b21d216c 688builds; cross compiler binaries' names are not transformed even when a
8c085f6f 689transformation is explicitly asked for by one of these options.
b21d216c
AF
690
691For native builds, some of the installed programs are also installed
692with the target alias in front of their name, as in
8a36672b 693@samp{i686-pc-linux-gnu-gcc}. All of the above transformations happen
78466c0e 694before the target alias is prepended to the name---so, specifying
b21d216c
AF
695@option{--program-prefix=foo-} and @option{program-suffix=-3.1}, the
696resulting binary would be installed as
697@file{/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1}.
698
8ecab453 699As a last shortcoming, none of the installed Ada programs are
b21d216c
AF
700transformed yet, which will be fixed in some time.
701
ef88b07d
JM
702@item --with-local-prefix=@var{dirname}
703Specify the
6ac48571
JM
704installation directory for local include files. The default is
705@file{/usr/local}. Specify this option if you want the compiler to
706search directory @file{@var{dirname}/include} for locally installed
707header files @emph{instead} of @file{/usr/local/include}.
708
709You should specify @option{--with-local-prefix} @strong{only} if your
710site has a different convention (not @file{/usr/local}) for where to put
711site-specific files.
712
713The default value for @option{--with-local-prefix} is @file{/usr/local}
714regardless of the value of @option{--prefix}. Specifying
715@option{--prefix} has no effect on which directory GCC searches for
716local header files. This may seem counterintuitive, but actually it is
717logical.
718
719The purpose of @option{--prefix} is to specify where to @emph{install
720GCC}. The local header files in @file{/usr/local/include}---if you put
161d7b59 721any in that directory---are not part of GCC@. They are part of other
6ac48571
JM
722programs---perhaps many others. (GCC installs its own header files in
723another directory which is based on the @option{--prefix} value.)
724
48209ce5 725Both the local-prefix include directory and the GCC-prefix include
78466c0e 726directory are part of GCC's ``system include'' directories. Although these
48209ce5
JDA
727two directories are not fixed, they need to be searched in the proper
728order for the correct processing of the include_next directive. The
729local-prefix include directory is searched before the GCC-prefix
730include directory. Another characteristic of system include directories
731is that pedantic warnings are turned off for headers in these directories.
732
733Some autoconf macros add @option{-I @var{directory}} options to the
734compiler command line, to ensure that directories containing installed
735packages' headers are searched. When @var{directory} is one of GCC's
736system include directories, GCC will ignore the option so that system
737directories continue to be processed in the correct order. This
738may result in a search order different from what was specified but the
739directory will still be searched.
740
741GCC automatically searches for ordinary libraries using
742@env{GCC_EXEC_PREFIX}. Thus, when the same installation prefix is
743used for both GCC and packages, GCC will automatically search for
744both headers and libraries. This provides a configuration that is
745easy to use. GCC behaves in a manner similar to that when it is
746installed as a system compiler in @file{/usr}.
747
748Sites that need to install multiple versions of GCC may not want to
749use the above simple configuration. It is possible to use the
750@option{--program-prefix}, @option{--program-suffix} and
751@option{--program-transform-name} options to install multiple versions
752into a single directory, but it may be simpler to use different prefixes
753and the @option{--with-local-prefix} option to specify the location of the
754site-specific files for each version. It will then be necessary for
755users to specify explicitly the location of local site libraries
756(e.g., with @env{LIBRARY_PATH}).
757
758The same value can be used for both @option{--with-local-prefix} and
759@option{--prefix} provided it is not @file{/usr}. This can be used
760to avoid the default search of @file{/usr/local/include}.
761
6ac48571
JM
762@strong{Do not} specify @file{/usr} as the @option{--with-local-prefix}!
763The directory you use for @option{--with-local-prefix} @strong{must not}
764contain any of the system's standard header files. If it did contain
765them, certain programs would be miscompiled (including GNU Emacs, on
766certain targets), because this would override and nullify the header
4c64396e 767file corrections made by the @command{fixincludes} script.
6ac48571
JM
768
769Indications are that people who use this option use it based on mistaken
770ideas of what it is for. People use it as if it specified where to
161d7b59 771install part of GCC@. Perhaps they make this assumption because
6ac48571
JM
772installing GCC creates the directory.
773
6cfb3f16 774@item --enable-shared[=@var{package}[,@dots{}]]
0cb98517
AO
775Build shared versions of libraries, if shared libraries are supported on
776the target platform. Unlike GCC 2.95.x and earlier, shared libraries
07659e97 777are enabled by default on all platforms that support shared libraries.
0cb98517
AO
778
779If a list of packages is given as an argument, build shared libraries
780only for the listed packages. For other packages, only static libraries
781will be built. Package names currently recognized in the GCC tree are
782@samp{libgcc} (also known as @samp{gcc}), @samp{libstdc++} (not
e22df315 783@samp{libstdc++-v3}), @samp{libffi}, @samp{zlib}, @samp{boehm-gc},
07659e97 784@samp{ada}, @samp{libada}, @samp{libjava} and @samp{libobjc}.
55c45226 785Note @samp{libiberty} does not support shared libraries at all.
0cb98517
AO
786
787Use @option{--disable-shared} to build only static libraries. Note that
788@option{--disable-shared} does not accept a list of package names as
789argument, only @option{--enable-shared} does.
f42974dc 790
ef88b07d
JM
791@item @anchor{with-gnu-as}--with-gnu-as
792Specify that the compiler should assume that the
767094dd 793assembler it finds is the GNU assembler. However, this does not modify
377dfc82
GP
794the rules to find an assembler and will result in confusion if the
795assembler found is not actually the GNU assembler. (Confusion may also
8c26c999
JM
796result if the compiler finds the GNU assembler but has not been
797configured with @option{--with-gnu-as}.) If you have more than one
38209993 798assembler installed on your system, you may want to use this option in
cc11cc9b
PB
799connection with @option{--with-as=@var{pathname}} or
800@option{--with-build-time-tools=@var{pathname}}.
38209993 801
8c085f6f
JJ
802The following systems are the only ones where it makes a difference
803whether you use the GNU assembler. On any other system,
804@option{--with-gnu-as} has no effect.
805
2ff16718 806@itemize @bullet
8c085f6f
JJ
807@item @samp{hppa1.0-@var{any}-@var{any}}
808@item @samp{hppa1.1-@var{any}-@var{any}}
809@item @samp{i386-@var{any}-sysv}
8c085f6f
JJ
810@item @samp{m68k-bull-sysv}
811@item @samp{m68k-hp-hpux}
8c085f6f
JJ
812@item @samp{m68000-hp-hpux}
813@item @samp{m68000-att-sysv}
8f2afc21
EB
814@item @samp{sparc-sun-solaris2.@var{any}}
815@item @samp{sparc64-@var{any}-solaris2.@var{any}}
8c085f6f 816@end itemize
8c26c999 817
8f2afc21 818On the systems listed above (except for the HP-PA, the SPARC, for ISC on
82563d35
RS
819the 386, if you use the GNU assembler, you should also use the GNU linker
820(and specify @option{--with-gnu-ld}).
8c26c999 821
8f2afc21 822@item @anchor{with-as}--with-as=@var{pathname}
cc11cc9b
PB
823Specify that the compiler should use the assembler pointed to by
824@var{pathname}, rather than the one found by the standard rules to find
825an assembler, which are:
f42974dc
DW
826@itemize @bullet
827@item
cc11cc9b
PB
828Unless GCC is being built with a cross compiler, check the
829@file{@var{libexec}/gcc/@var{target}/@var{version}} directory.
830@var{libexec} defaults to @file{@var{exec-prefix}/libexec};
831@var{exec-prefix} defaults to @var{prefix}, which
832defaults to @file{/usr/local} unless overridden by the
833@option{--prefix=@var{pathname}} switch described above. @var{target}
834is the target system triple, such as @samp{sparc-sun-solaris2.7}, and
835@var{version} denotes the GCC version, such as 3.0.
836
f42974dc 837@item
cc11cc9b
PB
838If the target system is the same that you are building on, check
839operating system specific directories (e.g.@: @file{/usr/ccs/bin} on
250d5688 840Sun Solaris 2).
cc11cc9b
PB
841
842@item
843Check in the @env{PATH} for a tool whose name is prefixed by the
844target system triple.
845
846@item
847Check in the @env{PATH} for a tool whose name is not prefixed by the
848target system triple, if the host and target system triple are
849the same (in other words, we use a host tool if it can be used for
850the target as well).
f42974dc 851@end itemize
cc11cc9b
PB
852
853You may want to use @option{--with-as} if no assembler
854is installed in the directories listed above, or if you have multiple
855assemblers installed and want to choose one that is not found by the
856above rules.
f42974dc 857
ef88b07d
JM
858@item @anchor{with-gnu-ld}--with-gnu-ld
859Same as @uref{#with-gnu-as,,@option{--with-gnu-as}}
8f2afc21 860but for the linker.
f42974dc 861
eea81d3e 862@item --with-ld=@var{pathname}
8f2afc21
EB
863Same as @uref{#with-as,,@option{--with-as}}
864but for the linker.
f42974dc 865
ef88b07d
JM
866@item --with-stabs
867Specify that stabs debugging
38209993
LG
868information should be used instead of whatever format the host normally
869uses. Normally GCC uses the same debug format as the host system.
f42974dc 870
8c26c999
JM
871On MIPS based systems and on Alphas, you must specify whether you want
872GCC to create the normal ECOFF debugging format, or to use BSD-style
873stabs passed through the ECOFF symbol table. The normal ECOFF debug
161d7b59
JM
874format cannot fully handle languages other than C@. BSD stabs format can
875handle other languages, but it only works with the GNU debugger GDB@.
8c26c999
JM
876
877Normally, GCC uses the ECOFF debugging format by default; if you
161d7b59 878prefer BSD stabs, specify @option{--with-stabs} when you configure GCC@.
8c26c999
JM
879
880No matter which default you choose when you configure GCC, the user
881can use the @option{-gcoff} and @option{-gstabs+} options to specify explicitly
882the debug format for a particular compilation.
883
884@option{--with-stabs} is meaningful on the ISC system on the 386, also, if
885@option{--with-gas} is used. It selects use of stabs debugging
886information embedded in COFF output. This kind of debugging information
887supports C++ well; ordinary COFF debugging information does not.
888
889@option{--with-stabs} is also meaningful on 386 systems running SVR4. It
890selects use of stabs debugging information embedded in ELF output. The
891C++ compiler currently (2.6.0) does not support the DWARF debugging
892information normally used on 386 SVR4 platforms; stabs provide a
893workable alternative. This requires gas and gdb, as the normal SVR4
894tools can not generate or interpret stabs.
895
eea81d3e 896@item --disable-multilib
ef88b07d 897Specify that multiple target
eea81d3e
RO
898libraries to support different target variants, calling
899conventions, etc should not be built. The default is to build a
900predefined set of them.
f42974dc 901
e8515283
DE
902Some targets provide finer-grained control over which multilibs are built
903(e.g., @option{--disable-softfloat}):
904@table @code
e8515283
DE
905@item arc-*-elf*
906biendian.
907
908@item arm-*-*
909fpu, 26bit, underscore, interwork, biendian, nofmult.
910
911@item m68*-*-*
912softfloat, m68881, m68000, m68020.
913
914@item mips*-*-*
915single-float, biendian, softfloat.
916
917@item powerpc*-*-*, rs6000*-*-*
918aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
f282ffb3 919sysv, aix.
e8515283
DE
920
921@end table
922
ef88b07d
JM
923@item --enable-threads
924Specify that the target
38209993
LG
925supports threads. This affects the Objective-C compiler and runtime
926library, and exception handling for other languages like C++ and Java.
6ac48571 927On some systems, this is the default.
f42974dc 928
f6160ed5
LR
929In general, the best (and, in many cases, the only known) threading
930model available will be configured for use. Beware that on some
2dd76960 931systems, GCC has not been taught what threading models are generally
3c6bb1db
LR
932available for the system. In this case, @option{--enable-threads} is an
933alias for @option{--enable-threads=single}.
f6160ed5
LR
934
935@item --disable-threads
936Specify that threading support should be disabled for the system.
3c6bb1db 937This is an alias for @option{--enable-threads=single}.
f6160ed5 938
ef88b07d
JM
939@item --enable-threads=@var{lib}
940Specify that
38209993
LG
941@var{lib} is the thread support library. This affects the Objective-C
942compiler and runtime library, and exception handling for other languages
f85b8d1a
JM
943like C++ and Java. The possibilities for @var{lib} are:
944
945@table @code
946@item aix
947AIX thread support.
948@item dce
949DCE thread support.
4c80872c
RK
950@item gnat
951Ada tasking support. For non-Ada programs, this setting is equivalent
8a36672b 952to @samp{single}. When used in conjunction with the Ada run time, it
4c80872c
RK
953causes GCC to use the same thread primitives as Ada uses. This option
954is necessary when using both Ada and the back end exception handling,
955which is the default for most Ada targets.
f85b8d1a 956@item mach
eea81d3e 957Generic MACH thread support, known to work on NeXTSTEP@. (Please note
3c6bb1db 958that the file needed to support this configuration, @file{gthr-mach.h}, is
f6160ed5
LR
959missing and thus this setting will cause a known bootstrap failure.)
960@item no
961This is an alias for @samp{single}.
f85b8d1a 962@item posix
18167442
EB
963Generic POSIX/Unix98 thread support.
964@item posix95
965Generic POSIX/Unix95 thread support.
f6160ed5
LR
966@item rtems
967RTEMS thread support.
f85b8d1a
JM
968@item single
969Disable thread support, should work for all platforms.
970@item solaris
eea81d3e 971Sun Solaris 2 thread support.
f85b8d1a
JM
972@item vxworks
973VxWorks thread support.
974@item win32
975Microsoft Win32 API thread support.
61fec9ff
JB
976@item nks
977Novell Kernel Services thread support.
f85b8d1a 978@end table
f42974dc 979
8dea1cca
DD
980@item --enable-tls
981Specify that the target supports TLS (Thread Local Storage). Usually
982configure can correctly determine if TLS is supported. In cases where
983it guesses incorrectly, TLS can be explicitly enabled or disabled with
984@option{--enable-tls} or @option{--disable-tls}. This can happen if
985the assembler supports TLS but the C library does not, or if the
986assumptions made by the configure test are incorrect.
987
988@item --disable-tls
989Specify that the target does not support TLS.
990This is an alias for @option{--enable-tls=no}.
991
ef88b07d 992@item --with-cpu=@var{cpu}
7816bea0
DJ
993Specify which cpu variant the compiler should generate code for by default.
994@var{cpu} will be used as the default value of the @option{-mcpu=} switch.
995This option is only supported on some targets, including ARM, i386, PowerPC,
996and SPARC@.
997
998@item --with-schedule=@var{cpu}
999@itemx --with-arch=@var{cpu}
1000@itemx --with-tune=@var{cpu}
1001@itemx --with-abi=@var{abi}
9b66ebb1 1002@itemx --with-fpu=@var{type}
7816bea0
DJ
1003@itemx --with-float=@var{type}
1004These configure options provide default values for the @option{-mschedule=},
9b66ebb1
PB
1005@option{-march=}, @option{-mtune=}, @option{-mabi=}, and @option{-mfpu=}
1006options and for @option{-mhard-float} or @option{-msoft-float}. As with
1007@option{--with-cpu}, which switches will be accepted and acceptable values
1008of the arguments depend on the target.
f42974dc 1009
3cf94279
PB
1010@item --with-mode=@var{mode}
1011Specify if the compiler should default to @option{-marm} or @option{-mthumb}.
1012This option is only supported on ARM targets.
1013
9f0df97a
DD
1014@item --with-divide=@var{type}
1015Specify how the compiler should generate code for checking for
1016division by zero. This option is only supported on the MIPS target.
1017The possibilities for @var{type} are:
1018@table @code
1019@item traps
1020Division by zero checks use conditional traps (this is the default on
1021systems that support conditional traps).
1022@item breaks
1023Division by zero checks use the break instruction.
1024@end table
1025
354b7da5
DH
1026@item --enable-__cxa_atexit
1027Define if you want to use __cxa_atexit, rather than atexit, to
1028register C++ destructors for local statics and global objects.
1029This is essential for fully standards-compliant handling of
8a36672b
JM
1030destructors, but requires __cxa_atexit in libc. This option is currently
1031only available on systems with GNU libc. When enabled, this will cause
354b7da5
DH
1032@option{-fuse-cxa-exit} to be passed by default.
1033
ef88b07d
JM
1034@item --enable-target-optspace
1035Specify that target
38209993
LG
1036libraries should be optimized for code space instead of code speed.
1037This is the default for the m32r platform.
f42974dc 1038
ab130aa5
JM
1039@item --disable-cpp
1040Specify that a user visible @command{cpp} program should not be installed.
1041
1042@item --with-cpp-install-dir=@var{dirname}
1043Specify that the user visible @command{cpp} program should be installed
1044in @file{@var{prefix}/@var{dirname}/cpp}, in addition to @var{bindir}.
f42974dc 1045
07cf4226
DM
1046@item --enable-initfini-array
1047Force the use of sections @code{.init_array} and @code{.fini_array}
1048(instead of @code{.init} and @code{.fini}) for constructors and
1049destructors. Option @option{--disable-initfini-array} has the
1050opposite effect. If neither option is specified, the configure script
1051will try to guess whether the @code{.init_array} and
1052@code{.fini_array} sections are supported and, if they are, use them.
1053
ef88b07d
JM
1054@item --enable-maintainer-mode
1055The build rules that
6cfb3f16 1056regenerate the GCC master message catalog @file{gcc.pot} are normally
767094dd
JM
1057disabled. This is because it can only be rebuilt if the complete source
1058tree is present. If you have changed the sources and want to rebuild the
6ac48571 1059catalog, configuring with @option{--enable-maintainer-mode} will enable
767094dd 1060this. Note that you need a recent version of the @code{gettext} tools
6ac48571
JM
1061to do so.
1062
f5c3bb4b
PB
1063@item --disable-bootstrap
1064For a native build, the default configuration is to perform
1065a 3-stage bootstrap of the compiler when @samp{make} is invoked,
1066testing that GCC can compile itself correctly. If you want to disable
1067this process, you can configure with @option{--disable-bootstrap}.
1068
1069@item --enable-bootstrap
1070In special cases, you may want to perform a 3-stage build
1071even if the target and host triplets are different.
1072This could happen when the host can run code compiled for
1073the target (e.g.@: host is i686-linux, target is i486-linux).
1074Starting from GCC 4.2, to do this you have to configure explicitly
1075with @option{--enable-bootstrap}.
1076
51b9ff45 1077@item --enable-generated-files-in-srcdir
80521187 1078Neither the .c and .h files that are generated from Bison and flex nor the
51b9ff45 1079info manuals and man pages that are built from the .texi files are present
80521187
GP
1080in the SVN development tree. When building GCC from that development tree,
1081or from one of our snapshots, those generated files are placed in your
1082build directory, which allows for the source to be in a readonly
1083directory.
51b9ff45
KC
1084
1085If you configure with @option{--enable-generated-files-in-srcdir} then those
1086generated files will go into the source directory. This is mainly intended
1087for generating release or prerelease tarballs of the GCC sources, since it
80521187
GP
1088is not a requirement that the users of source releases to have flex, Bison,
1089or makeinfo.
51b9ff45 1090
ef88b07d
JM
1091@item --enable-version-specific-runtime-libs
1092Specify
38209993 1093that runtime libraries should be installed in the compiler specific
8e5f33ff
GK
1094subdirectory (@file{@var{libdir}/gcc}) rather than the usual places. In
1095addition, @samp{libstdc++}'s include files will be installed into
1096@file{@var{libdir}} unless you overruled it by using
6cfb3f16 1097@option{--with-gxx-include-dir=@var{dirname}}. Using this option is
38209993 1098particularly useful if you intend to use several versions of GCC in
8a36672b 1099parallel. This is currently supported by @samp{libgfortran},
b9034bbd
AJ
1100@samp{libjava}, @samp{libmudflap}, @samp{libstdc++}, and @samp{libobjc}.
1101
c33b7bf0
TF
1102@item --with-java-home=@var{dirname}
1103This @samp{libjava} option overrides the default value of the
1104@samp{java.home} system property. It is also used to set
1105@samp{sun.boot.class.path} to @file{@var{dirname}/lib/rt.jar}. By
1106default @samp{java.home} is set to @file{@var{prefix}} and
1107@samp{sun.boot.class.path} to
1108@file{@var{datadir}/java/libgcj-@var{version}.jar}.
38209993 1109
ef88b07d
JM
1110@item --enable-languages=@var{lang1},@var{lang2},@dots{}
1111Specify that only a particular subset of compilers and
767094dd 1112their runtime libraries should be built. For a list of valid values for
6cfb3f16 1113@var{langN} you can issue the following command in the
eea81d3e 1114@file{gcc} directory of your GCC source tree:@*
3ab51846 1115@smallexample
eea81d3e 1116grep language= */config-lang.in
3ab51846 1117@end smallexample
eea81d3e 1118Currently, you can use any of the following:
47530dd9 1119@code{all}, @code{ada}, @code{c}, @code{c++}, @code{fortran}, @code{java},
f995c51f
JW
1120@code{objc}, @code{obj-c++}, @code{treelang}.
1121Building the Ada compiler has special requirements, see below.
1122If you do not pass this flag, or specify the option @code{all}, then all
1123default languages available in the @file{gcc} sub-tree will be configured.
1124Ada, Objective-C++, and treelang are not default languages; the rest are.
cc11cc9b
PB
1125Re-defining @code{LANGUAGES} when calling @samp{make} @strong{does not}
1126work anymore, as those language sub-directories might not have been
1127configured!
f42974dc 1128
cd271054
AC
1129@item --disable-libada
1130Specify that the run-time libraries and tools used by GNAT should not
1131be built. This can be useful for debugging, or for compatibility with
c2910edf 1132previous Ada build procedures, when it was required to explicitly
cd271054
AC
1133do a @samp{make -C gcc gnatlib_and_tools}.
1134
ef0087a7
KH
1135@item --disable-libssp
1136Specify that the run-time libraries for stack smashing protection
1137should not be built.
1138
4fe7a8bc
AH
1139@item --disable-libgomp
1140Specify that the run-time libraries used by GOMP should not be built.
1141
ef88b07d
JM
1142@item --with-dwarf2
1143Specify that the compiler should
eea81d3e 1144use DWARF 2 debugging information as the default.
f85b8d1a 1145
7f970b70
AM
1146@item --enable-targets=all
1147@itemx --enable-targets=@var{target_list}
1148Some GCC targets, e.g.@: powerpc64-linux, build bi-arch compilers.
1149These are compilers that are able to generate either 64-bit or 32-bit
8ab5f5c9 1150code. Typically, the corresponding 32-bit target, e.g.@:
7f970b70
AM
1151powerpc-linux for powerpc64-linux, only generates 32-bit code. This
1152option enables the 32-bit target to be a bi-arch compiler, which is
1153useful when you want a bi-arch compiler that defaults to 32-bit, and
1154you are building a bi-arch or multi-arch binutils in a combined tree.
1155Currently, this option only affects powerpc-linux.
1156
1157@item --enable-secureplt
1158This option enables @option{-msecure-plt} by default for powerpc-linux.
1159@ifnothtml
1160@xref{RS/6000 and PowerPC Options,, RS/6000 and PowerPC Options, gcc,
1161Using the GNU Compiler Collection (GCC)},
1162@end ifnothtml
1163@ifhtml
1164See ``RS/6000 and PowerPC Options'' in the main manual
1165@end ifhtml
1166
f85b8d1a 1167@item --enable-win32-registry
eea81d3e 1168@itemx --enable-win32-registry=@var{key}
f85b8d1a 1169@itemx --disable-win32-registry
95fef11f 1170The @option{--enable-win32-registry} option enables Microsoft Windows-hosted GCC
f85b8d1a
JM
1171to look up installations paths in the registry using the following key:
1172
1173@smallexample
eea81d3e 1174@code{HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\@var{key}}
f85b8d1a
JM
1175@end smallexample
1176
eea81d3e 1177@var{key} defaults to GCC version number, and can be overridden by the
8a36672b 1178@option{--enable-win32-registry=@var{key}} option. Vendors and distributors
f85b8d1a
JM
1179who use custom installers are encouraged to provide a different key,
1180perhaps one comprised of vendor name and GCC version number, to
767094dd 1181avoid conflict with existing installations. This feature is enabled
6cfb3f16 1182by default, and can be disabled by @option{--disable-win32-registry}
f85b8d1a
JM
1183option. This option has no effect on the other hosts.
1184
1185@item --nfp
1186Specify that the machine does not have a floating point unit. This
c9693e96
LH
1187option only applies to @samp{m68k-sun-sunos@var{n}}. On any other
1188system, @option{--nfp} has no effect.
f85b8d1a 1189
dd859b8a
KG
1190@item --enable-werror
1191@itemx --disable-werror
1192@itemx --enable-werror=yes
1193@itemx --enable-werror=no
1194When you specify this option, it controls whether certain files in the
1195compiler are built with @option{-Werror} in bootstrap stage2 and later.
1196If you don't specify it, @option{-Werror} is turned on for the main
1197development trunk. However it defaults to off for release branches and
1198final releases. The specific files which get @option{-Werror} are
1199controlled by the Makefiles.
1200
f85b8d1a
JM
1201@item --enable-checking
1202@itemx --enable-checking=@var{list}
cdce5c16 1203When you specify this option, the compiler is built to perform internal
e5080aa6 1204consistency checks of the requested complexity. This does not change the
cdce5c16
NS
1205generated code, but adds error checking within the compiler. This will
1206slow down the compiler and may only work properly if you are building
1207the compiler with GCC@. This is @samp{yes} by default when building
80521187 1208from SVN or snapshots, but @samp{release} for releases. More control
cdce5c16
NS
1209over the checks may be had by specifying @var{list}. The categories of
1210checks available are @samp{yes} (most common checks
1211@samp{assert,misc,tree,gc,rtlflag,runtime}), @samp{no} (no checks at
1212all), @samp{all} (all but @samp{valgrind}), @samp{release} (cheapest
1213checks @samp{assert,runtime}) or @samp{none} (same as @samp{no}).
1214Individual checks can be enabled with these flags @samp{assert},
1215@samp{fold}, @samp{gc}, @samp{gcac} @samp{misc}, @samp{rtl},
1216@samp{rtlflag}, @samp{runtime}, @samp{tree}, and @samp{valgrind}.
1217
1218The @samp{valgrind} check requires the external @command{valgrind}
ccf548a7 1219simulator, available from @uref{http://valgrind.org/}. The
cdce5c16
NS
1220@samp{rtl}, @samp{gcac} and @samp{valgrind} checks are very expensive.
1221To disable all checking, @samp{--disable-checking} or
1222@samp{--enable-checking=none} must be explicitly requested. Disabling
1223assertions will make the compiler and runtime slightly faster but
1224increase the risk of undetected internal errors causing wrong code to be
1225generated.
f85b8d1a 1226
22aa533e 1227@item --enable-coverage
31775d31 1228@itemx --enable-coverage=@var{level}
22aa533e 1229With this option, the compiler is built to collect self coverage
8a36672b
JM
1230information, every time it is run. This is for internal development
1231purposes, and only works when the compiler is being built with gcc. The
22aa533e 1232@var{level} argument controls whether the compiler is built optimized or
8a36672b 1233not, values are @samp{opt} and @samp{noopt}. For coverage analysis you
22aa533e 1234want to disable optimization, for performance analysis you want to
8a36672b 1235enable optimization. When coverage is enabled, the default level is
22aa533e
NS
1236without optimization.
1237
439a7e54 1238@item --enable-gather-detailed-mem-stats
95ea367d 1239When this option is specified more detailed information on memory
439a7e54 1240allocation is gathered. This information is printed when using
daf2f129 1241@option{-fmem-report}.
439a7e54 1242
5dd90688
RG
1243@item --with-gc
1244@itemx --with-gc=@var{choice}
1245With this option you can specify the garbage collector implementation
1246used during the compilation process. @var{choice} can be one of
1247@samp{page} and @samp{zone}, where @samp{page} is the default.
1248
f85b8d1a
JM
1249@item --enable-nls
1250@itemx --disable-nls
6cfb3f16 1251The @option{--enable-nls} option enables Native Language Support (NLS),
f85b8d1a 1252which lets GCC output diagnostics in languages other than American
767094dd 1253English. Native Language Support is enabled by default if not doing a
161d7b59 1254canadian cross build. The @option{--disable-nls} option disables NLS@.
f85b8d1a
JM
1255
1256@item --with-included-gettext
c771326b 1257If NLS is enabled, the @option{--with-included-gettext} option causes the build
021c4bfd 1258procedure to prefer its copy of GNU @command{gettext}.
f85b8d1a
JM
1259
1260@item --with-catgets
1261If NLS is enabled, and if the host lacks @code{gettext} but has the
1262inferior @code{catgets} interface, the GCC build procedure normally
1263ignores @code{catgets} and instead uses GCC's copy of the GNU
6cfb3f16 1264@code{gettext} library. The @option{--with-catgets} option causes the
f85b8d1a 1265build procedure to use the host's @code{catgets} in this situation.
80f9249a 1266
5304400d
CR
1267@item --with-libiconv-prefix=@var{dir}
1268Search for libiconv header files in @file{@var{dir}/include} and
1269libiconv library files in @file{@var{dir}/lib}.
1270
9340544b
ZW
1271@item --enable-obsolete
1272Enable configuration for an obsoleted system. If you attempt to
1273configure GCC for a system (build, host, or target) which has been
1274obsoleted, and you do not specify this flag, configure will halt with an
1275error message.
1276
1277All support for systems which have been obsoleted in one release of GCC
1278is removed entirely in the next major release, unless someone steps
1279forward to maintain the port.
486aa804
BE
1280
1281@item --enable-decimal-float
1282@itemx --disable-decimal-float
1283Enable (or disable) support for the C decimal floating point
1284extension. This is enabled by default only on PowerPC GNU/Linux
1285systems. Other systems may also support it, but require the user to
1286specifically enable it.
1287
ed965309
JJ
1288@item --with-long-double-128
1289Specify if @code{long double} type should be 128-bit by default on selected
1290GNU/Linux architectures. If using @code{--without-long-double-128},
1291@code{long double} will be by default 64-bit, the same as @code{double} type.
1292When neither of these configure options are used, the default will be
1293128-bit @code{long double} when built against GNU C Library 2.4 and later,
129464-bit @code{long double} otherwise.
1295
ef88b07d 1296@end table
f42974dc 1297
c1c3bb0c
ME
1298@subheading Cross-Compiler-Specific Options
1299The following options only apply to building cross compilers.
ef88b07d 1300@table @code
4977bab6
ZW
1301@item --with-sysroot
1302@itemx --with-sysroot=@var{dir}
1303Tells GCC to consider @var{dir} as the root of a tree that contains a
1304(subset of) the root filesystem of the target operating system.
1305Target system headers, libraries and run-time object files will be
1306searched in there. The specified directory is not copied into the
1307install tree, unlike the options @option{--with-headers} and
1308@option{--with-libs} that this option obsoletes. The default value,
1309in case @option{--with-sysroot} is not given an argument, is
047d636f
DJ
1310@option{$@{gcc_tooldir@}/sys-root}. If the specified directory is a
1311subdirectory of @option{$@{exec_prefix@}}, then it will be found relative to
1312the GCC binaries if the installation tree is moved.
4977bab6 1313
160633c6
MM
1314@item --with-build-sysroot
1315@itemx --with-build-sysroot=@var{dir}
1316Tells GCC to consider @var{dir} as the system root (see
526635cb 1317@option{--with-sysroot}) while building target libraries, instead of
160633c6
MM
1318the directory specified with @option{--with-sysroot}. This option is
1319only useful when you are already using @option{--with-sysroot}. You
526635cb 1320can use @option{--with-build-sysroot} when you are configuring with
160633c6 1321@option{--prefix} set to a directory that is different from the one in
526635cb
MM
1322which you are installing GCC and your target libraries.
1323
1324This option affects the system root for the compiler used to build
1325target libraries (which runs on the build system); it does not affect
1326the compiler which is used to build GCC itself.
160633c6 1327
65a824f6
JT
1328@item --with-headers
1329@itemx --with-headers=@var{dir}
4977bab6 1330Deprecated in favor of @option{--with-sysroot}.
65a824f6
JT
1331Specifies that target headers are available when building a cross compiler.
1332The @var{dir} argument specifies a directory which has the target include
1333files. These include files will be copied into the @file{gcc} install
1334directory. @emph{This option with the @var{dir} argument is required} when
1335building a cross compiler, if @file{@var{prefix}/@var{target}/sys-include}
1336doesn't pre-exist. If @file{@var{prefix}/@var{target}/sys-include} does
1337pre-exist, the @var{dir} argument may be omitted. @command{fixincludes}
8a36672b 1338will be run on these files to make them compatible with GCC@.
264d65c1
AP
1339
1340@item --without-headers
1341Tells GCC not use any target headers from a libc when building a cross
2dd76960 1342compiler. When crossing to GNU/Linux, you need the headers so GCC
264d65c1 1343can build the exception handling for libgcc.
264d65c1 1344
65a824f6
JT
1345@item --with-libs
1346@itemx --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}''
4977bab6 1347Deprecated in favor of @option{--with-sysroot}.
38209993
LG
1348Specifies a list of directories which contain the target runtime
1349libraries. These libraries will be copied into the @file{gcc} install
65a824f6
JT
1350directory. If the directory list is omitted, this option has no
1351effect.
cc11cc9b 1352
ef88b07d 1353@item --with-newlib
eea81d3e 1354Specifies that @samp{newlib} is
38209993 1355being used as the target C library. This causes @code{__eprintf} to be
eea81d3e
RO
1356omitted from @file{libgcc.a} on the assumption that it will be provided by
1357@samp{newlib}.
cc11cc9b
PB
1358
1359@item --with-build-time-tools=@var{dir}
1360Specifies where to find the set of target tools (assembler, linker, etc.)
1361that will be used while building GCC itself. This option can be useful
1362if the directory layouts are different between the system you are building
1363GCC on, and the system where you will deploy it.
1364
1365For example, on a @option{ia64-hp-hpux} system, you may have the GNU
1366assembler and linker in @file{/usr/bin}, and the native tools in a
1367different path, and build a toolchain that expects to find the
1368native tools in @file{/usr/bin}.
1369
1370When you use this option, you should ensure that @var{dir} includes
1371@command{ar}, @command{as}, @command{ld}, @command{nm},
1372@command{ranlib} and @command{strip} if necessary, and possibly
1373@command{objdump}. Otherwise, GCC may use an inconsistent set of
1374tools.
ef88b07d 1375@end table
f9047ed3 1376
f8ef405c 1377@subheading Fortran-Specific Options
bda4d063
TS
1378
1379The following options apply to the build of the Fortran front end.
1380
1381@table @code
1382
1383@item --with-gmp=@var{pathname}
bebf829d 1384@itemx --with-mpfr=@var{pathname}
bda4d063 1385@itemx --with-gmp-dir=@var{pathname}
bebf829d 1386@itemx --with-mpfr-dir=@var{pathname}
f0eb93a8 1387If you don't have GMP (the GNU Multiple Precision library) and the MPFR
bebf829d
PB
1388Libraries installed in a standard location and you want to build the Fortran
1389front-end, you can explicitly specify the directory where they are installed
1390(@samp{--with-gmp=gmpinstalldir}, @samp{--with-mpfr=mpfrinstalldir}) or where
1391you built them without installing (@samp{--with-gmp-dir=gmpbuilddir},
1392@samp{--with-mpfr-dir=gmpbuilddir}).
bda4d063
TS
1393
1394@end table
1395
c1c3bb0c
ME
1396@subheading Java-Specific Options
1397
1398The following option applies to the build of the Java front end.
1399
1400@table @code
1401@item --disable-libgcj
1402Specify that the run-time libraries
1403used by GCJ should not be built. This is useful in case you intend
1404to use GCJ with some other run-time, or you're going to install it
1405separately, or it just happens not to build on your particular
1406machine. In general, if the Java front end is enabled, the GCJ
1407libraries will be enabled too, unless they're known to not work on
1408the target platform. If GCJ is enabled but @samp{libgcj} isn't built, you
1409may need to port it; in this case, before modifying the top-level
1410@file{configure.in} so that @samp{libgcj} is enabled by default on this platform,
1411you may use @option{--enable-libgcj} to override the default.
1412
1413@end table
1414
1415The following options apply to building @samp{libgcj}.
1416
1417@subsubheading General Options
1418
1419@table @code
1420@item --disable-getenv-properties
1421Don't set system properties from @env{GCJ_PROPERTIES}.
1422
1423@item --enable-hash-synchronization
8a36672b 1424Use a global hash table for monitor locks. Ordinarily,
c1c3bb0c 1425@samp{libgcj}'s @samp{configure} script automatically makes
8a36672b 1426the correct choice for this option for your platform. Only use
c1c3bb0c
ME
1427this if you know you need the library to be configured differently.
1428
1429@item --enable-interpreter
8a36672b
JM
1430Enable the Java interpreter. The interpreter is automatically
1431enabled by default on all platforms that support it. This option
c1c3bb0c
ME
1432is really only useful if you want to disable the interpreter
1433(using @option{--disable-interpreter}).
1434
1435@item --disable-java-net
8a36672b 1436Disable java.net. This disables the native part of java.net only,
c1c3bb0c
ME
1437using non-functional stubs for native method implementations.
1438
1439@item --disable-jvmpi
1440Disable JVMPI support.
1441
1442@item --with-ecos
1443Enable runtime eCos target support.
1444
1445@item --without-libffi
8a36672b 1446Don't use @samp{libffi}. This will disable the interpreter and JNI
c1c3bb0c
ME
1447support as well, as these require @samp{libffi} to work.
1448
1449@item --enable-libgcj-debug
1450Enable runtime debugging code.
1451
1452@item --enable-libgcj-multifile
1453If specified, causes all @file{.java} source files to be
1454compiled into @file{.class} files in one invocation of
8a36672b
JM
1455@samp{gcj}. This can speed up build time, but is more
1456resource-intensive. If this option is unspecified or
c1c3bb0c
ME
1457disabled, @samp{gcj} is invoked once for each @file{.java}
1458file to compile into a @file{.class} file.
1459
1460@item --with-libiconv-prefix=DIR
1461Search for libiconv in @file{DIR/include} and @file{DIR/lib}.
1462
1463@item --enable-sjlj-exceptions
4f6c2131
EB
1464Force use of the @code{setjmp}/@code{longjmp}-based scheme for exceptions.
1465@samp{configure} ordinarily picks the correct value based on the platform.
1466Only use this option if you are sure you need a different setting.
c1c3bb0c
ME
1467
1468@item --with-system-zlib
1469Use installed @samp{zlib} rather than that included with GCC@.
1470
1471@item --with-win32-nlsapi=ansi, unicows or unicode
1472Indicates how MinGW @samp{libgcj} translates between UNICODE
8a36672b 1473characters and the Win32 API@.
c1c3bb0c
ME
1474@table @code
1475@item ansi
1476Use the single-byte @code{char} and the Win32 A functions natively,
8a36672b 1477translating to and from UNICODE when using these functions. If
c1c3bb0c
ME
1478unspecified, this is the default.
1479
1480@item unicows
8a36672b 1481Use the @code{WCHAR} and Win32 W functions natively. Adds
c1c3bb0c
ME
1482@code{-lunicows} to @file{libgcj.spec} to link with @samp{libunicows}.
1483@file{unicows.dll} needs to be deployed on Microsoft Windows 9X machines
8a36672b 1484running built executables. @file{libunicows.a}, an open-source
c1c3bb0c
ME
1485import library around Microsoft's @code{unicows.dll}, is obtained from
1486@uref{http://libunicows.sourceforge.net/}, which also gives details
1487on getting @file{unicows.dll} from Microsoft.
1488
1489@item unicode
8a36672b
JM
1490Use the @code{WCHAR} and Win32 W functions natively. Does @emph{not}
1491add @code{-lunicows} to @file{libgcj.spec}. The built executables will
c1c3bb0c
ME
1492only run on Microsoft Windows NT and above.
1493@end table
1494@end table
1495
1496@subsubheading AWT-Specific Options
1497
1498@table @code
1499@item --with-x
1500Use the X Window System.
1501
1502@item --enable-java-awt=PEER(S)
1503Specifies the AWT peer library or libraries to build alongside
8a36672b
JM
1504@samp{libgcj}. If this option is unspecified or disabled, AWT
1505will be non-functional. Current valid values are @option{gtk} and
1506@option{xlib}. Multiple libraries should be separated by a
431ae0bf 1507comma (i.e.@: @option{--enable-java-awt=gtk,xlib}).
c1c3bb0c
ME
1508
1509@item --enable-gtk-cairo
8a36672b 1510Build the cairo Graphics2D implementation on GTK@.
c1c3bb0c
ME
1511
1512@item --enable-java-gc=TYPE
8a36672b 1513Choose garbage collector. Defaults to @option{boehm} if unspecified.
c1c3bb0c
ME
1514
1515@item --disable-gtktest
1516Do not try to compile and run a test GTK+ program.
1517
1518@item --disable-glibtest
1519Do not try to compile and run a test GLIB program.
1520
1521@item --with-libart-prefix=PFX
1522Prefix where libart is installed (optional).
1523
1524@item --with-libart-exec-prefix=PFX
1525Exec prefix where libart is installed (optional).
1526
1527@item --disable-libarttest
1528Do not try to compile and run a test libart program.
1529
1530@end table
f42974dc
DW
1531
1532@html
b8db17af 1533<hr />
f42974dc
DW
1534<p>
1535@end html
1536@ifhtml
1537@uref{./index.html,,Return to the GCC Installation page}
1538@end ifhtml
1539@end ifset
1540
1541@c ***Building****************************************************************
6cfb3f16 1542@ifnothtml
f42974dc
DW
1543@comment node-name, next, previous, up
1544@node Building, Testing, Configuration, Installing GCC
6cfb3f16 1545@end ifnothtml
f42974dc 1546@ifset buildhtml
f42974dc
DW
1547@ifnothtml
1548@chapter Building
1549@end ifnothtml
1550@cindex Installing GCC: Building
1551
1552Now that GCC is configured, you are ready to build the compiler and
1553runtime libraries.
1554
b8df899a 1555Some commands executed when making the compiler may fail (return a
7ba4ca63 1556nonzero status) and be ignored by @command{make}. These failures, which
b8df899a
JM
1557are often due to files that were not found, are expected, and can safely
1558be ignored.
1559
1560It is normal to have compiler warnings when compiling certain files.
1561Unless you are a GCC developer, you can generally ignore these warnings
dd859b8a
KG
1562unless they cause compilation to fail. Developers should attempt to fix
1563any warnings encountered, however they can temporarily continue past
1564warnings-as-errors by specifying the configure flag
1565@option{--disable-werror}.
b8df899a
JM
1566
1567On certain old systems, defining certain environment variables such as
6cfb3f16 1568@env{CC} can interfere with the functioning of @command{make}.
b8df899a
JM
1569
1570If you encounter seemingly strange errors when trying to build the
1571compiler in a directory other than the source directory, it could be
1572because you have previously configured the compiler in the source
1573directory. Make sure you have done all the necessary preparations.
1574
1575If you build GCC on a BSD system using a directory stored in an old System
4c64396e 1576V file system, problems may occur in running @command{fixincludes} if the
b8df899a
JM
1577System V file system doesn't support symbolic links. These problems
1578result in a failure to fix the declaration of @code{size_t} in
1579@file{sys/types.h}. If you find that @code{size_t} is a signed type and
1580that type mismatches occur, this could be the cause.
1581
161d7b59 1582The solution is not to use such a directory for building GCC@.
f42974dc 1583
80521187
GP
1584When building from SVN or snapshots, or if you modify parser sources,
1585you need the Bison parser generator installed. If you do not modify
f85b8d1a
JM
1586parser sources, releases contain the Bison-generated files and you do
1587not need Bison installed to build them.
1588
80521187 1589When building from SVN or snapshots, or if you modify Texinfo
1a598a97 1590documentation, you need version 4.4 or later of Texinfo installed if you
f85b8d1a
JM
1591want Info documentation to be regenerated. Releases contain Info
1592documentation pre-built for the unmodified documentation in the release.
1593
f42974dc
DW
1594@section Building a native compiler
1595
f5c3bb4b
PB
1596For a native build, the default configuration is to perform
1597a 3-stage bootstrap of the compiler when @samp{make} is invoked.
1598This will build the entire GCC system and ensure that it compiles
1599itself correctly. It can be disabled with the @option{--disable-bootstrap}
1600parameter to @samp{configure}, but bootstrapping is suggested because
1601the compiler will be tested more completely and could also have
1602better performance.
1603
1604The bootstrapping process will complete the following steps:
f42974dc
DW
1605
1606@itemize @bullet
1607@item
80521187 1608Build tools necessary to build the compiler.
f42974dc
DW
1609
1610@item
cc11cc9b
PB
1611Perform a 3-stage bootstrap of the compiler. This includes building
1612three times the target tools for use by the compiler such as binutils
1613(bfd, binutils, gas, gprof, ld, and opcodes) if they have been
1614individually linked or moved into the top level GCC source tree before
1615configuring.
f42974dc
DW
1616
1617@item
1618Perform a comparison test of the stage2 and stage3 compilers.
1619
1620@item
1621Build runtime libraries using the stage3 compiler from the previous step.
f9047ed3 1622
f42974dc
DW
1623@end itemize
1624
38209993 1625If you are short on disk space you might consider @samp{make
cc11cc9b
PB
1626bootstrap-lean} instead. The sequence of compilation is the
1627same described above, but object files from the stage1 and
f42974dc
DW
1628stage2 of the 3-stage bootstrap of the compiler are deleted as
1629soon as they are no longer needed.
1630
f42974dc
DW
1631If you want to save additional space during the bootstrap and in
1632the final installation as well, you can build the compiler binaries
8c085f6f 1633without debugging information as in the following example. This will save
f42974dc
DW
1634roughly 40% of disk space both for the bootstrap and the final installation.
1635(Libraries will still contain debugging information.)
1636
3ab51846 1637@smallexample
8c085f6f
JJ
1638 make CFLAGS='-O' LIBCFLAGS='-g -O2' \
1639 LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap
3ab51846 1640@end smallexample
8c085f6f 1641
eea81d3e
RO
1642If you wish to use non-default GCC flags when compiling the stage2 and
1643stage3 compilers, set @code{BOOT_CFLAGS} on the command line when doing
cc11cc9b 1644@samp{make}. Non-default optimization flags are less well
f85b8d1a
JM
1645tested here than the default of @samp{-g -O2}, but should still work.
1646In a few cases, you may find that you need to specify special flags such
1647as @option{-msoft-float} here to complete the bootstrap; or, if the
1648native compiler miscompiles the stage1 compiler, you may need to work
1649around this, by choosing @code{BOOT_CFLAGS} to avoid the parts of the
1650stage1 compiler that were miscompiled, or by using @samp{make
1651bootstrap4} to increase the number of stages of bootstrap.
1652
cc11cc9b
PB
1653Note that using non-standard @code{CFLAGS} can cause bootstrap to fail
1654if these trigger a warning with the new compiler. For example using
1655@samp{-O2 -g -mcpu=i686} on @code{i686-pc-linux-gnu} will cause bootstrap
1656failure as @option{-mcpu=} is deprecated in 3.4.0 and above.
c872077c
AP
1657
1658
6cfb3f16 1659If you used the flag @option{--enable-languages=@dots{}} to restrict
f42974dc 1660the compilers to be built, only those you've actually enabled will be
767094dd 1661built. This will of course only build those runtime libraries, for
f42974dc 1662which the particular compiler has been built. Please note,
cc11cc9b 1663that re-defining @env{LANGUAGES} when calling @samp{make}
ef88b07d 1664@strong{does not} work anymore!
f42974dc 1665
f85b8d1a 1666If the comparison of stage2 and stage3 fails, this normally indicates
eea81d3e 1667that the stage2 compiler has compiled GCC incorrectly, and is therefore
f85b8d1a
JM
1668a potentially serious bug which you should investigate and report. (On
1669a few systems, meaningful comparison of object files is impossible; they
1670always appear ``different''. If you encounter this problem, you will
1671need to disable comparison in the @file{Makefile}.)
f42974dc 1672
cc11cc9b
PB
1673If you do not want to bootstrap your compiler, you can configure with
1674@option{--disable-bootstrap}. In particular cases, you may want to
1675bootstrap your compiler even if the target system is not the same as
1676the one you are building on: for example, you could build a
1677@code{powerpc-unknown-linux-gnu} toolchain on a
1678@code{powerpc64-unknown-linux-gnu} host. In this case, pass
1679@option{--enable-bootstrap} to the configure script.
1680
1681
f42974dc
DW
1682@section Building a cross compiler
1683
f42974dc
DW
1684When building a cross compiler, it is not generally possible to do a
16853-stage bootstrap of the compiler. This makes for an interesting problem
161d7b59 1686as parts of GCC can only be built with GCC@.
f42974dc
DW
1687
1688To build a cross compiler, we first recommend building and installing a
1689native compiler. You can then use the native GCC compiler to build the
635771af
JM
1690cross compiler. The installed native compiler needs to be GCC version
16912.95 or later.
f42974dc
DW
1692
1693Assuming you have already installed a native copy of GCC and configured
6cfb3f16 1694your cross compiler, issue the command @command{make}, which performs the
f42974dc
DW
1695following steps:
1696
1697@itemize @bullet
1698@item
80521187 1699Build host tools necessary to build the compiler.
f42974dc
DW
1700
1701@item
1702Build target tools for use by the compiler such as binutils (bfd,
1703binutils, gas, gprof, ld, and opcodes)
1704if they have been individually linked or moved into the top level GCC source
1705tree before configuring.
1706
1707@item
1708Build the compiler (single stage only).
1709
1710@item
1711Build runtime libraries using the compiler from the previous step.
1712@end itemize
1713
1714Note that if an error occurs in any step the make process will exit.
1715
01e97976
JM
1716If you are not building GNU binutils in the same source tree as GCC,
1717you will need a cross-assembler and cross-linker installed before
1718configuring GCC@. Put them in the directory
1719@file{@var{prefix}/@var{target}/bin}. Here is a table of the tools
1720you should put in this directory:
1721
1722@table @file
1723@item as
1724This should be the cross-assembler.
1725
1726@item ld
1727This should be the cross-linker.
1728
1729@item ar
1730This should be the cross-archiver: a program which can manipulate
1731archive files (linker libraries) in the target machine's format.
1732
1733@item ranlib
1734This should be a program to construct a symbol table in an archive file.
1735@end table
1736
1737The installation of GCC will find these programs in that directory,
1738and copy or link them to the proper place to for the cross-compiler to
1739find them when run later.
1740
1741The easiest way to provide these files is to build the Binutils package.
1742Configure it with the same @option{--host} and @option{--target}
1743options that you use for configuring GCC, then build and install
1744them. They install their executables automatically into the proper
1745directory. Alas, they do not support all the targets that GCC
1746supports.
1747
1748If you are not building a C library in the same source tree as GCC,
1749you should also provide the target libraries and headers before
1750configuring GCC, specifying the directories with
1751@option{--with-sysroot} or @option{--with-headers} and
1752@option{--with-libs}. Many targets also require ``start files'' such
1753as @file{crt0.o} and
1754@file{crtn.o} which are linked into each executable. There may be several
1755alternatives for @file{crt0.o}, for use with profiling or other
1756compilation options. Check your target's definition of
1757@code{STARTFILE_SPEC} to find out what start files it uses.
1758
f42974dc
DW
1759@section Building in parallel
1760
d7f755c3
PB
1761GNU Make 3.79 and above, which is necessary to build GCC, support
1762building in parallel. To activate this, you can use @samp{make -j 2}
1763instead of @samp{make}. You can also specify a bigger number, and
cc11cc9b
PB
1764in most cases using a value greater than the number of processors in
1765your machine will result in fewer and shorter I/O latency hits, thus
1766improving overall throughput; this is especially true for slow drives
1767and network filesystems.
f42974dc 1768
e23381df
GB
1769@section Building the Ada compiler
1770
1771In order to build GNAT, the Ada compiler, you need a working GNAT
cc11cc9b
PB
1772compiler (GNAT version 3.14 or later, or GCC version 3.1 or later).
1773This includes GNAT tools such as @command{gnatmake} and
1774@command{gnatlink}, since the Ada front end is written in Ada and
1775uses some GNAT-specific extensions.
1776
1777In order to build a cross compiler, it is suggested to install
1778the new compiler as native first, and then use it to build the cross
1779compiler.
e23381df 1780
38e23049
JM
1781@command{configure} does not test whether the GNAT installation works
1782and has a sufficiently recent version; if too old a GNAT version is
1783installed, the build will fail unless @option{--enable-languages} is
1784used to disable building the Ada front end.
e23381df 1785
8f231b5d
JH
1786@section Building with profile feedback
1787
1788It is possible to use profile feedback to optimize the compiler itself. This
1789should result in a faster compiler binary. Experiments done on x86 using gcc
17903.3 showed approximately 7 percent speedup on compiling C programs. To
cc11cc9b 1791bootstrap the compiler with profile feedback, use @code{make profiledbootstrap}.
8f231b5d
JH
1792
1793When @samp{make profiledbootstrap} is run, it will first build a @code{stage1}
1794compiler. This compiler is used to build a @code{stageprofile} compiler
1795instrumented to collect execution counts of instruction and branch
1796probabilities. Then runtime libraries are compiled with profile collected.
1797Finally a @code{stagefeedback} compiler is built using the information collected.
1798
cc11cc9b 1799Unlike standard bootstrap, several additional restrictions apply. The
8f231b5d
JH
1800compiler used to build @code{stage1} needs to support a 64-bit integral type.
1801It is recommended to only use GCC for this. Also parallel make is currently
1802not supported since collisions in profile collecting may occur.
1803
f42974dc 1804@html
b8db17af 1805<hr />
f42974dc
DW
1806<p>
1807@end html
1808@ifhtml
1809@uref{./index.html,,Return to the GCC Installation page}
1810@end ifhtml
1811@end ifset
1812
1813@c ***Testing*****************************************************************
6cfb3f16 1814@ifnothtml
f42974dc
DW
1815@comment node-name, next, previous, up
1816@node Testing, Final install, Building, Installing GCC
6cfb3f16 1817@end ifnothtml
f42974dc 1818@ifset testhtml
f42974dc
DW
1819@ifnothtml
1820@chapter Installing GCC: Testing
1821@end ifnothtml
1822@cindex Testing
1823@cindex Installing GCC: Testing
1824@cindex Testsuite
1825
f97903cc
JJ
1826Before you install GCC, we encourage you to run the testsuites and to
1827compare your results with results from a similar configuration that have
1828been submitted to the
1829@uref{http://gcc.gnu.org/ml/gcc-testresults/,,gcc-testresults mailing list}.
05253aed
JJ
1830Some of these archived results are linked from the build status lists
1831at @uref{http://gcc.gnu.org/buildstat.html}, although not everyone who
1832reports a successful build runs the testsuites and submits the results.
f97903cc
JJ
1833This step is optional and may require you to download additional software,
1834but it can give you confidence in your new GCC installation or point out
8a36672b 1835problems before you install and start using your new GCC@.
f42974dc 1836
f9047ed3 1837First, you must have @uref{download.html,,downloaded the testsuites}.
f97903cc
JJ
1838These are part of the full distribution, but if you downloaded the
1839``core'' compiler plus any front ends, you must download the testsuites
1840separately.
f42974dc 1841
f97903cc 1842Second, you must have the testing tools installed. This includes
80521187
GP
1843@uref{http://www.gnu.org/software/dejagnu/,,DejaGnu}, Tcl, and Expect;
1844the DejaGnu site has links to these.
f42974dc 1845
8cacda7c
GP
1846If the directories where @command{runtest} and @command{expect} were
1847installed are not in the @env{PATH}, you may need to set the following
1848environment variables appropriately, as in the following example (which
1849assumes that DejaGnu has been installed under @file{/usr/local}):
f42974dc 1850
3ab51846 1851@smallexample
f42974dc
DW
1852 TCL_LIBRARY = /usr/local/share/tcl8.0
1853 DEJAGNULIBS = /usr/local/share/dejagnu
3ab51846 1854@end smallexample
f42974dc 1855
8cacda7c 1856(On systems such as Cygwin, these paths are required to be actual
f42974dc 1857paths, not mounts or links; presumably this is due to some lack of
8cacda7c 1858portability in the DejaGnu code.)
ecb7d6b3 1859
f42974dc
DW
1860
1861Finally, you can run the testsuite (which may take a long time):
3ab51846 1862@smallexample
ef88b07d 1863 cd @var{objdir}; make -k check
3ab51846 1864@end smallexample
f42974dc 1865
794aca5d
WB
1866This will test various components of GCC, such as compiler
1867front ends and runtime libraries. While running the testsuite, DejaGnu
1868might emit some harmless messages resembling
daf2f129 1869@samp{WARNING: Couldn't find the global config file.} or
794aca5d 1870@samp{WARNING: Couldn't find tool init file} that can be ignored.
06809951 1871
962e6e00 1872@section How can you run the testsuite on selected tests?
f42974dc 1873
794aca5d
WB
1874In order to run sets of tests selectively, there are targets
1875@samp{make check-gcc} and @samp{make check-g++}
1876in the @file{gcc} subdirectory of the object directory. You can also
1877just run @samp{make check} in a subdirectory of the object directory.
1878
1879
1880A more selective way to just run all @command{gcc} execute tests in the
1881testsuite is to use
f42974dc 1882
3ab51846 1883@smallexample
6cfb3f16 1884 make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}"
3ab51846 1885@end smallexample
f42974dc 1886
794aca5d
WB
1887Likewise, in order to run only the @command{g++} ``old-deja'' tests in
1888the testsuite with filenames matching @samp{9805*}, you would use
f42974dc 1889
3ab51846 1890@smallexample
6cfb3f16 1891 make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}"
3ab51846 1892@end smallexample
f42974dc 1893
6cfb3f16
JM
1894The @file{*.exp} files are located in the testsuite directories of the GCC
1895source, the most important ones being @file{compile.exp},
1896@file{execute.exp}, @file{dg.exp} and @file{old-deja.exp}.
1897To get a list of the possible @file{*.exp} files, pipe the
38209993 1898output of @samp{make check} into a file and look at the
6cfb3f16 1899@samp{Running @dots{} .exp} lines.
f42974dc 1900
e08737dc
PE
1901@section Passing options and running multiple testsuites
1902
1903You can pass multiple options to the testsuite using the
1904@samp{--target_board} option of DejaGNU, either passed as part of
1905@samp{RUNTESTFLAGS}, or directly to @command{runtest} if you prefer to
1906work outside the makefiles. For example,
1907
3ab51846 1908@smallexample
e08737dc 1909 make check-g++ RUNTESTFLAGS="--target_board=unix/-O3/-fno-strength-reduce"
3ab51846 1910@end smallexample
e08737dc
PE
1911
1912will run the standard @command{g++} testsuites (``unix'' is the target name
1913for a standard native testsuite situation), passing
1914@samp{-O3 -fno-strength-reduce} to the compiler on every test, i.e.,
1915slashes separate options.
1916
1917You can run the testsuites multiple times using combinations of options
1918with a syntax similar to the brace expansion of popular shells:
1919
3ab51846 1920@smallexample
d817041f 1921 @dots{}"--target_board=arm-sim/@{-mhard-float,-msoft-float@}@{-O1,-O2,-O3,@}"
3ab51846 1922@end smallexample
e08737dc
PE
1923
1924(Note the empty option caused by the trailing comma in the final group.)
1925The following will run each testsuite eight times using the @samp{arm-sim}
1926target, as if you had specified all possible combinations yourself:
1927
3ab51846 1928@smallexample
e08737dc
PE
1929 --target_board=arm-sim/-mhard-float/-O1
1930 --target_board=arm-sim/-mhard-float/-O2
1931 --target_board=arm-sim/-mhard-float/-O3
1932 --target_board=arm-sim/-mhard-float
1933 --target_board=arm-sim/-msoft-float/-O1
1934 --target_board=arm-sim/-msoft-float/-O2
1935 --target_board=arm-sim/-msoft-float/-O3
1936 --target_board=arm-sim/-msoft-float
3ab51846 1937@end smallexample
e08737dc
PE
1938
1939They can be combined as many times as you wish, in arbitrary ways. This
1940list:
1941
3ab51846 1942@smallexample
e08737dc 1943 @dots{}"--target_board=unix/-Wextra@{-O3,-fno-strength-reduce@}@{-fomit-frame-pointer,@}"
3ab51846 1944@end smallexample
e08737dc
PE
1945
1946will generate four combinations, all involving @samp{-Wextra}.
1947
1948The disadvantage to this method is that the testsuites are run in serial,
1949which is a waste on multiprocessor systems. For users with GNU Make and
1950a shell which performs brace expansion, you can run the testsuites in
1951parallel by having the shell perform the combinations and @command{make}
1952do the parallel runs. Instead of using @samp{--target_board}, use a
1953special makefile target:
1954
3ab51846 1955@smallexample
e08737dc 1956 make -j@var{N} check-@var{testsuite}//@var{test-target}/@var{option1}/@var{option2}/@dots{}
3ab51846 1957@end smallexample
e08737dc
PE
1958
1959For example,
1960
3ab51846 1961@smallexample
e08737dc 1962 make -j3 check-gcc//sh-hms-sim/@{-m1,-m2,-m3,-m3e,-m4@}/@{,-nofpu@}
3ab51846 1963@end smallexample
e08737dc
PE
1964
1965will run three concurrent ``make-gcc'' testsuites, eventually testing all
1966ten combinations as described above. Note that this is currently only
1967supported in the @file{gcc} subdirectory. (To see how this works, try
1968typing @command{echo} before the example given here.)
1969
1970
1971@section Additional testing for Java Class Libraries
1972
688d8b84
RM
1973The Java runtime tests can be executed via @samp{make check}
1974in the @file{@var{target}/libjava/testsuite} directory in
1975the build tree.
f702e700 1976
f702e700
JJ
1977The @uref{http://sources.redhat.com/mauve/,,Mauve Project} provides
1978a suite of tests for the Java Class Libraries. This suite can be run
1979as part of libgcj testing by placing the Mauve tree within the libjava
1980testsuite at @file{libjava/testsuite/libjava.mauve/mauve}, or by
1981specifying the location of that tree when invoking @samp{make}, as in
1982@samp{make MAUVEDIR=~/mauve check}.
1983
07a647a3 1984@uref{http://sources.redhat.com/mauve/jacks.html,,Jacks}
2eac577f 1985is a free testsuite that tests Java compiler front ends. This suite
3b41afd9 1986can be run as part of libgcj testing by placing the Jacks tree within
582f6e6d
TT
1987the libjava testsuite at @file{libjava/testsuite/libjava.jacks/jacks}.
1988
f42974dc
DW
1989@section How to interpret test results
1990
794aca5d 1991The result of running the testsuite are various @file{*.sum} and @file{*.log}
767094dd 1992files in the testsuite subdirectories. The @file{*.log} files contain a
f42974dc 1993detailed log of the compiler invocations and the corresponding
daf2f129
JM
1994results, the @file{*.sum} files summarize the results. These summaries
1995contain status codes for all tests:
f42974dc
DW
1996
1997@itemize @bullet
1998@item
1999PASS: the test passed as expected
2000@item
2001XPASS: the test unexpectedly passed
2002@item
2003FAIL: the test unexpectedly failed
2004@item
2005XFAIL: the test failed as expected
2006@item
2007UNSUPPORTED: the test is not supported on this platform
2008@item
2009ERROR: the testsuite detected an error
2010@item
2011WARNING: the testsuite detected a possible problem
2012@end itemize
2013
38209993 2014It is normal for some tests to report unexpected failures. At the
962e6e00
JM
2015current time the testing harness does not allow fine grained control
2016over whether or not a test is expected to fail. This problem should
2017be fixed in future releases.
f42974dc
DW
2018
2019
2020@section Submitting test results
2021
2022If you want to report the results to the GCC project, use the
767094dd 2023@file{contrib/test_summary} shell script. Start it in the @var{objdir} with
f42974dc 2024
3ab51846 2025@smallexample
6cfb3f16
JM
2026 @var{srcdir}/contrib/test_summary -p your_commentary.txt \
2027 -m gcc-testresults@@gcc.gnu.org |sh
3ab51846 2028@end smallexample
f42974dc 2029
6cfb3f16 2030This script uses the @command{Mail} program to send the results, so
767094dd 2031make sure it is in your @env{PATH}. The file @file{your_commentary.txt} is
f42974dc 2032prepended to the testsuite summary and should contain any special
767094dd 2033remarks you have on your results or your build environment. Please
f42974dc 2034do not edit the testsuite result block or the subject line, as these
05c425a9 2035messages may be automatically processed.
f42974dc 2036
aed5964b 2037@html
b8db17af 2038<hr />
aed5964b
JM
2039<p>
2040@end html
2041@ifhtml
2042@uref{./index.html,,Return to the GCC Installation page}
2043@end ifhtml
f42974dc
DW
2044@end ifset
2045
2046@c ***Final install***********************************************************
6cfb3f16 2047@ifnothtml
f42974dc
DW
2048@comment node-name, next, previous, up
2049@node Final install, , Testing, Installing GCC
6cfb3f16 2050@end ifnothtml
f42974dc 2051@ifset finalinstallhtml
f42974dc
DW
2052@ifnothtml
2053@chapter Installing GCC: Final installation
2054@end ifnothtml
2055
eea81d3e 2056Now that GCC has been built (and optionally tested), you can install it with
3ab51846 2057@smallexample
eea81d3e 2058cd @var{objdir}; make install
3ab51846 2059@end smallexample
f42974dc 2060
06809951
GP
2061We strongly recommend to install into a target directory where there is
2062no previous version of GCC present.
2063
f42974dc 2064That step completes the installation of GCC; user level binaries can
8e5f33ff
GK
2065be found in @file{@var{prefix}/bin} where @var{prefix} is the value
2066you specified with the @option{--prefix} to configure (or
2067@file{/usr/local} by default). (If you specified @option{--bindir},
2068that directory will be used instead; otherwise, if you specified
2069@option{--exec-prefix}, @file{@var{exec-prefix}/bin} will be used.)
2070Headers for the C++ and Java libraries are installed in
2071@file{@var{prefix}/include}; libraries in @file{@var{libdir}}
2072(normally @file{@var{prefix}/lib}); internal parts of the compiler in
2073@file{@var{libdir}/gcc} and @file{@var{libexecdir}/gcc}; documentation
2074in info format in @file{@var{infodir}} (normally
2075@file{@var{prefix}/info}).
f42974dc 2076
53b50ac1
CC
2077When installing cross-compilers, GCC's executables
2078are not only installed into @file{@var{bindir}}, that
2079is, @file{@var{exec-prefix}/bin}, but additionally into
2080@file{@var{exec-prefix}/@var{target-alias}/bin}, if that directory
2081exists. Typically, such @dfn{tooldirs} hold target-specific
2082binutils, including assembler and linker.
2083
2084Installation into a temporary staging area or into a @command{chroot}
2085jail can be achieved with the command
2086
3ab51846 2087@smallexample
53b50ac1 2088make DESTDIR=@var{path-to-rootdir} install
3ab51846 2089@end smallexample
53b50ac1
CC
2090
2091@noindent where @var{path-to-rootdir} is the absolute path of
2092a directory relative to which all installation paths will be
2093interpreted. Note that the directory specified by @code{DESTDIR}
2094need not exist yet; it will be created if necessary.
2095
2096There is a subtle point with tooldirs and @code{DESTDIR}:
2097If you relocate a cross-compiler installation with
2098e.g.@: @samp{DESTDIR=@var{rootdir}}, then the directory
2099@file{@var{rootdir}/@var{exec-prefix}/@var{target-alias}/bin} will
2100be filled with duplicated GCC executables only if it already exists,
2101it will not be created otherwise. This is regarded as a feature,
2102not as a bug, because it gives slightly more control to the packagers
2103using the @code{DESTDIR} feature.
2104
cc11cc9b 2105If you are bootstrapping a released version of GCC then please
f97a5bda
JJ
2106quickly review the build status page for your release, available from
2107@uref{http://gcc.gnu.org/buildstat.html}.
c5997381
JJ
2108If your system is not listed for the version of GCC that you built,
2109send a note to
eea81d3e 2110@email{gcc@@gcc.gnu.org} indicating
8a36672b 2111that you successfully built and installed GCC@.
c5997381 2112Include the following information:
f42974dc 2113
c5997381
JJ
2114@itemize @bullet
2115@item
962e6e00 2116Output from running @file{@var{srcdir}/config.guess}. Do not send
c5997381
JJ
2117that file itself, just the one-line output from running it.
2118
2119@item
2dd76960 2120The output of @samp{gcc -v} for your newly installed @command{gcc}.
c5997381
JJ
2121This tells us which version of GCC you built and the options you passed to
2122configure.
2123
2b46bc67
JJ
2124@item
2125Whether you enabled all languages or a subset of them. If you used a
2126full distribution then this information is part of the configure
2127options in the output of @samp{gcc -v}, but if you downloaded the
2128``core'' compiler plus additional front ends then it isn't apparent
2129which ones you built unless you tell us about it.
2130
c5997381
JJ
2131@item
2132If the build was for GNU/Linux, also include:
2133@itemize @bullet
2134@item
2135The distribution name and version (e.g., Red Hat 7.1 or Debian 2.2.3);
2136this information should be available from @file{/etc/issue}.
2137
2138@item
2139The version of the Linux kernel, available from @samp{uname --version}
2140or @samp{uname -a}.
2141
2142@item
2143The version of glibc you used; for RPM-based systems like Red Hat,
b9da07da
JJ
2144Mandrake, and SuSE type @samp{rpm -q glibc} to get the glibc version,
2145and on systems like Debian and Progeny use @samp{dpkg -l libc6}.
c5997381
JJ
2146@end itemize
2147For other systems, you can include similar information if you think it is
2148relevant.
2149
2150@item
2151Any other information that you think would be useful to people building
2152GCC on the same configuration. The new entry in the build status list
2153will include a link to the archived copy of your message.
2154@end itemize
c009f01f
JJ
2155
2156We'd also like to know if the
2157@ifnothtml
2158@ref{Specific, host/target specific installation notes}
2159@end ifnothtml
2160@ifhtml
2161@uref{specific.html,,host/target specific installation notes}
2162@end ifhtml
2163didn't include your host/target information or if that information is
2164incomplete or out of date. Send a note to
962e6e00 2165@email{gcc@@gcc.gnu.org} detailing how the information should be changed.
f42974dc 2166
962e6e00 2167If you find a bug, please report it following the
f42974dc
DW
2168@uref{../bugs.html,,bug reporting guidelines}.
2169
ab130aa5 2170If you want to print the GCC manuals, do @samp{cd @var{objdir}; make
1a598a97 2171dvi}. You will need to have @command{texi2dvi} (version at least 4.4)
ab130aa5
JM
2172and @TeX{} installed. This creates a number of @file{.dvi} files in
2173subdirectories of @file{@var{objdir}}; these may be converted for
cc5c2741
BM
2174printing with programs such as @command{dvips}. Alternately, by using
2175@samp{make pdf} in place of @samp{make dvi}, you can create documentation
2176in the form of @file{.pdf} files; this requires @command{texi2pdf}, which
2177is included with Texinfo version 4.8 and later. You can also
ab130aa5
JM
2178@uref{http://www.gnu.org/order/order.html,,buy printed manuals from the
2179Free Software Foundation}, though such manuals may not be for the most
161d7b59 2180recent version of GCC@.
ab130aa5 2181
9d65c5cb 2182If you would like to generate online HTML documentation, do @samp{cd
f995c51f
JW
2183@var{objdir}; make html} and HTML will be generated for the gcc manuals in
2184@file{@var{objdir}/gcc/HTML}.
9d65c5cb 2185
f42974dc 2186@html
b8db17af 2187<hr />
f42974dc
DW
2188<p>
2189@end html
2190@ifhtml
2191@uref{./index.html,,Return to the GCC Installation page}
2192@end ifhtml
2193@end ifset
2194
2195@c ***Binaries****************************************************************
6cfb3f16 2196@ifnothtml
f42974dc
DW
2197@comment node-name, next, previous, up
2198@node Binaries, Specific, Installing GCC, Top
6cfb3f16 2199@end ifnothtml
f42974dc 2200@ifset binarieshtml
f42974dc
DW
2201@ifnothtml
2202@chapter Installing GCC: Binaries
2203@end ifnothtml
2204@cindex Binaries
2205@cindex Installing GCC: Binaries
2206
161d7b59 2207We are often asked about pre-compiled versions of GCC@. While we cannot
f42974dc
DW
2208provide these for all platforms, below you'll find links to binaries for
2209various platforms where creating them by yourself is not easy due to various
2210reasons.
2211
2212Please note that we did not create these binaries, nor do we
2213support them. If you have any problems installing them, please
2214contact their makers.
2215
2216@itemize
2217@item
df002c7d
DE
2218AIX:
2219@itemize
2220@item
ff4c5e7b 2221@uref{http://www.bullfreeware.com,,Bull's Freeware and Shareware Archive for AIX};
df002c7d
DE
2222
2223@item
8d5362b7 2224@uref{http://aixpdslib.seas.ucla.edu,,UCLA Software Library for AIX}.
df002c7d 2225@end itemize
f42974dc
DW
2226
2227@item
8d5362b7
GP
2228DOS---@uref{http://www.delorie.com/djgpp/,,DJGPP}.
2229
2230@item
71c6b994
KH
2231Renesas H8/300[HS]---@uref{http://h8300-hms.sourceforge.net/,,GNU
2232Development Tools for the Renesas H8/300[HS] Series}.
f42974dc 2233
f404402c
MW
2234@item
2235HP-UX:
2236@itemize
f42974dc 2237@item
1d7887ca 2238@uref{http://hpux.cs.utah.edu/,,HP-UX Porting Center};
f42974dc 2239
f404402c
MW
2240@item
2241@uref{ftp://sunsite.informatik.rwth-aachen.de/pub/packages/gcc_hpux/,,Binaries for HP-UX 11.00 at Aachen University of Technology}.
2242@end itemize
2243
3e35d143
SC
2244@item
2245Motorola 68HC11/68HC12---@uref{http://www.gnu-m68hc11.org,,GNU
2246Development Tools for the Motorola 68HC11/68HC12}.
2247
f42974dc 2248@item
38209993 2249@uref{http://www.sco.com/skunkware/devtools/index.html#gcc,,SCO
8d5362b7 2250OpenServer/Unixware}.
f42974dc 2251
8d5362b7
GP
2252@item
2253Solaris 2 (SPARC, Intel)---@uref{http://www.sunfreeware.com/,,Sunfreeware}.
f42974dc
DW
2254
2255@item
8d5362b7 2256SGI---@uref{http://freeware.sgi.com/,,SGI Freeware}.
f42974dc
DW
2257
2258@item
05c425a9 2259Microsoft Windows:
f42974dc
DW
2260@itemize
2261@item
2262The @uref{http://sources.redhat.com/cygwin/,,Cygwin} project;
2263@item
cc92b8ab 2264The @uref{http://www.mingw.org/,,MinGW} project.
f42974dc
DW
2265@end itemize
2266
2267@item
616de62f
GP
2268@uref{ftp://ftp.thewrittenword.com/packages/by-name/,,The
2269Written Word} offers binaries for
2270AIX 4.3.2.
2271IRIX 6.5,
2272Digital UNIX 4.0D and 5.1,
2273GNU/Linux (i386),
2274HP-UX 10.20, 11.00, and 11.11, and
e4652e37 2275Solaris/SPARC 2.5.1, 2.6, 7, 8, and 9.
6512c54a
GP
2276
2277@item
2278@uref{http://www.openpkg.org/,,OpenPKG} offers binaries for quite a
2279number of platforms.
eae50c87
PB
2280
2281@item
2282The @uref{http://gcc.gnu.org/wiki/GFortranBinaries,,GFortran Wiki} has
92922512 2283links to GNU Fortran binaries for several platforms.
f42974dc
DW
2284@end itemize
2285
2286In addition to those specific offerings, you can get a binary
2287distribution CD-ROM from the
1d7887ca 2288@uref{http://www.gnu.org/order/order.html,,Free Software Foundation}.
f42974dc 2289It contains binaries for a number of platforms, and
767094dd 2290includes not only GCC, but other stuff as well. The current CD does
f42974dc 2291not contain the latest version of GCC, but it should allow
767094dd 2292bootstrapping the compiler. An updated version of that disk is in the
f42974dc
DW
2293works.
2294
2295@html
b8db17af 2296<hr />
f42974dc
DW
2297<p>
2298@end html
2299@ifhtml
2300@uref{./index.html,,Return to the GCC Installation page}
2301@end ifhtml
2302@end ifset
2303
2304@c ***Specific****************************************************************
6cfb3f16 2305@ifnothtml
f42974dc 2306@comment node-name, next, previous, up
73e2155a 2307@node Specific, Old, Binaries, Top
6cfb3f16 2308@end ifnothtml
f42974dc 2309@ifset specifichtml
f42974dc
DW
2310@ifnothtml
2311@chapter Host/target specific installation notes for GCC
2312@end ifnothtml
2313@cindex Specific
2314@cindex Specific installation notes
2315@cindex Target specific installation
2316@cindex Host specific installation
2317@cindex Target specific installation notes
2318
2319Please read this document carefully @emph{before} installing the
2320GNU Compiler Collection on your machine.
2321
c9936427
DD
2322Note that this list of install notes is @emph{not} a list of supported
2323hosts or targets. Not all supported hosts and targets are listed
2324here, only the ones that require host-specific or target-specific
2325information are.
2326
ef88b07d 2327@ifhtml
f42974dc
DW
2328@itemize
2329@item
5a4c9b10 2330@uref{#alpha-x-x,,alpha*-*-*}
f42974dc 2331@item
5a4c9b10 2332@uref{#alpha-dec-osf,,alpha*-dec-osf*}
f42974dc 2333@item
5a4c9b10 2334@uref{#alphaev5-cray-unicosmk,,alphaev5-cray-unicosmk*}
71b96724 2335@item
5a4c9b10 2336@uref{#arc-x-elf,,arc-*-elf}
b8df899a 2337@item
5a4c9b10
GP
2338@uref{#arm-x-elf,,arm-*-elf}
2339@uref{#arm-x-coff,,arm-*-coff}
2340@uref{#arm-x-aout,,arm-*-aout}
b8df899a 2341@item
5a4c9b10 2342@uref{#xscale-x-x,,xscale-*-*}
476c334e 2343@item
f42974dc
DW
2344@uref{#avr,,avr}
2345@item
0d4a78eb
BS
2346@uref{#bfin,,Blackfin}
2347@item
0132e321
MH
2348@uref{#c4x,,c4x}
2349@item
f42974dc
DW
2350@uref{#dos,,DOS}
2351@item
5a4c9b10 2352@uref{#x-x-freebsd,,*-*-freebsd*}
021c4bfd 2353@item
f42974dc
DW
2354@uref{#h8300-hms,,h8300-hms}
2355@item
5a4c9b10 2356@uref{#hppa-hp-hpux,,hppa*-hp-hpux*}
f42974dc 2357@item
5a4c9b10 2358@uref{#hppa-hp-hpux10,,hppa*-hp-hpux10}
f42974dc 2359@item
5a4c9b10 2360@uref{#hppa-hp-hpux11,,hppa*-hp-hpux11}
f42974dc 2361@item
5a4c9b10 2362@uref{#x-x-linux-gnu,,*-*-linux-gnu}
f42974dc 2363@item
5a4c9b10 2364@uref{#ix86-x-linuxaout,,i?86-*-linux*aout}
b8df899a 2365@item
5a4c9b10 2366@uref{#ix86-x-linux,,i?86-*-linux*}
f42974dc 2367@item
d8fcd085 2368@uref{#ix86-x-sco32v5,,i?86-*-sco3.2v5*}
f42974dc 2369@item
d8fcd085 2370@uref{#ix86-x-solaris210,,i?86-*-solaris2.10}
8f47c084 2371@item
5a4c9b10 2372@uref{#ix86-x-udk,,i?86-*-udk}
f42974dc 2373@item
5a4c9b10 2374@uref{#ia64-x-linux,,ia64-*-linux}
b8df899a 2375@item
5a4c9b10 2376@uref{#ia64-x-hpux,,ia64-*-hpux*}
b499d9ab 2377@item
5a4c9b10 2378@uref{#x-ibm-aix,,*-ibm-aix*}
959a73a4 2379@item
5a4c9b10 2380@uref{#iq2000-x-elf,,iq2000-*-elf}
e3223ea2 2381@item
38b2d076
DD
2382@uref{#m32c-x-elf,,m32c-*-elf}
2383@item
5a4c9b10 2384@uref{#m32r-x-elf,,m32r-*-elf}
b8df899a 2385@item
b8df899a
JM
2386@uref{#m6811-elf,,m6811-elf}
2387@item
2388@uref{#m6812-elf,,m6812-elf}
2389@item
b8df899a
JM
2390@uref{#m68k-hp-hpux,,m68k-hp-hpux}
2391@item
5a4c9b10 2392@uref{#mips-x-x,,mips-*-*}
b8df899a 2393@item
b953cc4b 2394@uref{#mips-sgi-irix5,,mips-sgi-irix5}
f42974dc 2395@item
b953cc4b 2396@uref{#mips-sgi-irix6,,mips-sgi-irix6}
f42974dc 2397@item
5a4c9b10 2398@uref{#powerpc-x-x,,powerpc*-*-*, powerpc-*-sysv4}
4f2b1139 2399@item
5a4c9b10 2400@uref{#powerpc-x-darwin,,powerpc-*-darwin*}
b8df899a 2401@item
5a4c9b10 2402@uref{#powerpc-x-elf,,powerpc-*-elf, powerpc-*-sysv4}
f42974dc 2403@item
5a4c9b10 2404@uref{#powerpc-x-linux-gnu,,powerpc*-*-linux-gnu*}
edf1b3f3 2405@item
5a4c9b10 2406@uref{#powerpc-x-netbsd,,powerpc-*-netbsd*}
b8df899a 2407@item
5a4c9b10 2408@uref{#powerpc-x-eabisim,,powerpc-*-eabisim}
b8df899a 2409@item
5a4c9b10 2410@uref{#powerpc-x-eabi,,powerpc-*-eabi}
b8df899a 2411@item
5a4c9b10 2412@uref{#powerpcle-x-elf,,powerpcle-*-elf, powerpcle-*-sysv4}
b8df899a 2413@item
5a4c9b10 2414@uref{#powerpcle-x-eabisim,,powerpcle-*-eabisim}
b8df899a 2415@item
5a4c9b10 2416@uref{#powerpcle-x-eabi,,powerpcle-*-eabi}
b8df899a 2417@item
5a4c9b10 2418@uref{#s390-x-linux,,s390-*-linux*}
91abf72d 2419@item
5a4c9b10 2420@uref{#s390x-x-linux,,s390x-*-linux*}
91abf72d 2421@item
5a4c9b10 2422@uref{#s390x-ibm-tpf,,s390x-ibm-tpf*}
8bf06993 2423@item
5a4c9b10 2424@uref{#x-x-solaris2,,*-*-solaris2*}
f42974dc 2425@item
5a4c9b10 2426@uref{#sparc-sun-solaris2,,sparc-sun-solaris2*}
f42974dc 2427@item
d8fcd085 2428@uref{#sparc-sun-solaris27,,sparc-sun-solaris2.7}
f42974dc 2429@item
5a4c9b10 2430@uref{#sparc-x-linux,,sparc-*-linux*}
c6fa9728 2431@item
5a4c9b10 2432@uref{#sparc64-x-solaris2,,sparc64-*-solaris2*}
f42974dc 2433@item
5a4c9b10 2434@uref{#sparcv9-x-solaris2,,sparcv9-*-solaris2*}
e403b4bc 2435@item
5a4c9b10 2436@uref{#x-x-sysv,,*-*-sysv*}
b8df899a
JM
2437@item
2438@uref{#vax-dec-ultrix,,vax-dec-ultrix}
2439@item
5a4c9b10 2440@uref{#x-x-vxworks,,*-*-vxworks*}
4977bab6 2441@item
d8fcd085 2442@uref{#x86-64-x-x,,x86_64-*-*, amd64-*-*}
7e081a0c 2443@item
5a4c9b10 2444@uref{#xtensa-x-elf,,xtensa-*-elf}
fd29f6ea 2445@item
5a4c9b10 2446@uref{#xtensa-x-linux,,xtensa-*-linux*}
fd29f6ea 2447@item
f42974dc
DW
2448@uref{#windows,,Microsoft Windows}
2449@item
2450@uref{#os2,,OS/2}
2451@item
2452@uref{#older,,Older systems}
2453@end itemize
2454
2455@itemize
2456@item
d8fcd085 2457@uref{#elf,,all ELF targets} (SVR4, Solaris 2, etc.)
f42974dc 2458@end itemize
ef88b07d 2459@end ifhtml
f42974dc
DW
2460
2461
2462@html
2463<!-- -------- host/target specific issues start here ---------------- -->
b8db17af 2464<hr />
f42974dc 2465@end html
5a4c9b10 2466@heading @anchor{alpha-x-x}alpha*-*-*
333e14b0
LR
2467
2468This section contains general configuration information for all
2469alpha-based platforms using ELF (in particular, ignore this section for
161d7b59 2470DEC OSF/1, Digital UNIX and Tru64 UNIX)@. In addition to reading this
f2541106 2471section, please read all other sections that match your target.
333e14b0 2472
021c4bfd
RO
2473We require binutils 2.11.2 or newer.
2474Previous binutils releases had a number of problems with DWARF 2
333e14b0
LR
2475debugging information, not the least of which is incorrect linking of
2476shared libraries.
2477
b8df899a 2478@html
b8db17af 2479<hr />
b8df899a 2480@end html
5a4c9b10 2481@heading @anchor{alpha-dec-osf}alpha*-dec-osf*
b8df899a 2482Systems using processors that implement the DEC Alpha architecture and
f2541106
RO
2483are running the DEC/Compaq Unix (DEC OSF/1, Digital UNIX, or Compaq
2484Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
2485
c7bdf0a6
ZW
2486As of GCC 3.2, versions before @code{alpha*-dec-osf4} are no longer
2487supported. (These are the versions which identify themselves as DEC
2488OSF/1.)
9340544b 2489
6e92b3a1
RB
2490In Digital Unix V4.0, virtual memory exhausted bootstrap failures
2491may be fixed by configuring with @option{--with-gc=simple},
2492reconfiguring Kernel Virtual Memory and Swap parameters
2493per the @command{/usr/sbin/sys_check} Tuning Suggestions,
2494or applying the patch in
2495@uref{http://gcc.gnu.org/ml/gcc/2002-08/msg00822.html}.
2496
f2541106
RO
2497In Tru64 UNIX V5.1, Compaq introduced a new assembler that does not
2498currently (2001-06-13) work with @command{mips-tfile}. As a workaround,
2499we need to use the old assembler, invoked via the barely documented
2500@option{-oldas} option. To bootstrap GCC, you either need to use the
2501Compaq C Compiler:
2502
3ab51846 2503@smallexample
eea81d3e 2504 % CC=cc @var{srcdir}/configure [@var{options}] [@var{target}]
3ab51846 2505@end smallexample
f2541106
RO
2506
2507or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0:
2508
3ab51846 2509@smallexample
eea81d3e 2510 % CC=gcc -Wa,-oldas @var{srcdir}/configure [@var{options}] [@var{target}]
3ab51846 2511@end smallexample
b8df899a 2512
b953cc4b
RO
2513As of GNU binutils 2.11.2, neither GNU @command{as} nor GNU @command{ld}
2514are supported on Tru64 UNIX, so you must not configure GCC with
2515@option{--with-gnu-as} or @option{--with-gnu-ld}.
2516
f0523f02 2517GCC writes a @samp{.verstamp} directive to the assembler output file
b8df899a
JM
2518unless it is built as a cross-compiler. It gets the version to use from
2519the system header file @file{/usr/include/stamp.h}. If you install a
2520new version of DEC Unix, you should rebuild GCC to pick up the new version
2521stamp.
2522
2523Note that since the Alpha is a 64-bit architecture, cross-compilers from
252432-bit machines will not generate code as efficient as that generated
2525when the compiler is running on a 64-bit machine because many
2526optimizations that depend on being able to represent a word on the
2527target in an integral value on the host cannot be performed. Building
2528cross-compilers on the Alpha for 32-bit machines has only been tested in
2529a few cases and may not work properly.
2530
7ba4ca63 2531@samp{make compare} may fail on old versions of DEC Unix unless you add
6cfb3f16 2532@option{-save-temps} to @code{CFLAGS}. On these systems, the name of the
b8df899a
JM
2533assembler input file is stored in the object file, and that makes
2534comparison fail if it differs between the @code{stage1} and
6cfb3f16 2535@code{stage2} compilations. The option @option{-save-temps} forces a
b8df899a 2536fixed name to be used for the assembler input file, instead of a
6cfb3f16 2537randomly chosen name in @file{/tmp}. Do not add @option{-save-temps}
b8df899a 2538unless the comparisons fail without that option. If you add
6cfb3f16 2539@option{-save-temps}, you will have to manually delete the @samp{.i} and
b8df899a
JM
2540@samp{.s} files after each series of compilations.
2541
f0523f02 2542GCC now supports both the native (ECOFF) debugging format used by DBX
161d7b59 2543and GDB and an encapsulated STABS format for use only with GDB@. See the
6cfb3f16 2544discussion of the @option{--with-stabs} option of @file{configure} above
b8df899a
JM
2545for more information on these formats and how to select them.
2546
2547There is a bug in DEC's assembler that produces incorrect line numbers
2548for ECOFF format when the @samp{.align} directive is used. To work
f0523f02 2549around this problem, GCC will not emit such alignment directives
b8df899a
JM
2550while writing ECOFF format debugging information even if optimization is
2551being performed. Unfortunately, this has the very undesirable
6cfb3f16
JM
2552side-effect that code addresses when @option{-O} is specified are
2553different depending on whether or not @option{-g} is also specified.
b8df899a 2554
6cfb3f16 2555To avoid this behavior, specify @option{-gstabs+} and use GDB instead of
161d7b59 2556DBX@. DEC is now aware of this problem with the assembler and hopes to
b8df899a
JM
2557provide a fix shortly.
2558
71b96724 2559@html
b8db17af 2560<hr />
71b96724 2561@end html
5a4c9b10 2562@heading @anchor{alphaev5-cray-unicosmk}alphaev5-cray-unicosmk*
71b96724
RL
2563Cray T3E systems running Unicos/Mk.
2564
2565This port is incomplete and has many known bugs. We hope to improve the
2566support for this target soon. Currently, only the C front end is supported,
2567and it is not possible to build parallel applications. Cray modules are not
2568supported; in particular, Craylibs are assumed to be in
2569@file{/opt/ctl/craylibs/craylibs}.
2570
cc11cc9b
PB
2571On this platform, you need to tell GCC where to find the assembler and
2572the linker. The simplest way to do so is by providing @option{--with-as}
2573and @option{--with-ld} to @file{configure}, e.g.@:
71b96724 2574
3ab51846 2575@smallexample
8c085f6f
JJ
2576 configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld \
2577 --enable-languages=c
3ab51846 2578@end smallexample
71b96724 2579
cc11cc9b 2580The comparison test at the end of the bootstrapping process fails on Unicos/Mk
71b96724
RL
2581because the assembler inserts timestamps into object files. You should
2582be able to work around this by doing @samp{make all} after getting this
2583failure.
2584
b8df899a 2585@html
b8db17af 2586<hr />
b8df899a 2587@end html
5a4c9b10 2588@heading @anchor{arc-x-elf}arc-*-elf
b8df899a
JM
2589Argonaut ARC processor.
2590This configuration is intended for embedded systems.
2591
2592@html
b8db17af 2593<hr />
b8df899a 2594@end html
5a4c9b10
GP
2595@heading @anchor{arm-x-elf}arm-*-elf
2596@heading @anchor{xscale-x-x}xscale-*-*
34e8290f
NC
2597ARM-family processors. Subtargets that use the ELF object format
2598require GNU binutils 2.13 or newer. Such subtargets include:
2599@code{arm-*-freebsd}, @code{arm-*-netbsdelf}, @code{arm-*-*linux},
2600@code{arm-*-rtems} and @code{arm-*-kaos}.
2601
2602@html
2603<hr />
2604@end html
5a4c9b10 2605@heading @anchor{arm-x-coff}arm-*-coff
61aeb06f 2606ARM-family processors. Note that there are two different varieties
34e8290f
NC
2607of PE format subtarget supported: @code{arm-wince-pe} and
2608@code{arm-pe} as well as a standard COFF target @code{arm-*-coff}.
2609
34e8290f
NC
2610@html
2611<hr />
2612@end html
5a4c9b10 2613@heading @anchor{arm-x-aout}arm-*-aout
34e8290f
NC
2614ARM-family processors. These targets support the AOUT file format:
2615@code{arm-*-aout}, @code{arm-*-netbsd}.
476c334e 2616
f42974dc 2617@html
b8db17af 2618<hr />
f42974dc 2619@end html
ef88b07d 2620@heading @anchor{avr}avr
f42974dc 2621
b8df899a 2622ATMEL AVR-family micro controllers. These are used in embedded
ca52d046
GP
2623applications. There are no standard Unix configurations.
2624@ifnothtml
7f970b70 2625@xref{AVR Options,, AVR Options, gcc, Using the GNU Compiler
ca52d046
GP
2626Collection (GCC)},
2627@end ifnothtml
98999d8b 2628@ifhtml
ca52d046 2629See ``AVR Options'' in the main manual
98999d8b 2630@end ifhtml
ca52d046 2631for the list of supported MCU types.
b8df899a 2632
161d7b59 2633Use @samp{configure --target=avr --enable-languages="c"} to configure GCC@.
f42974dc
DW
2634
2635Further installation notes and other useful information about AVR tools
2636can also be obtained from:
2637
2638@itemize @bullet
2639@item
1d7887ca 2640@uref{http://www.nongnu.org/avr/,,http://www.nongnu.org/avr/}
de7999ba 2641@item
d1a86812 2642@uref{http://home.overta.ru/users/denisc/,,http://home.overta.ru/users/denisc/}
f42974dc 2643@item
d1a86812 2644@uref{http://www.amelek.gda.pl/avr/,,http://www.amelek.gda.pl/avr/}
f42974dc
DW
2645@end itemize
2646
de7999ba 2647We @emph{strongly} recommend using binutils 2.13 or newer.
f42974dc
DW
2648
2649The following error:
3ab51846 2650@smallexample
f42974dc 2651 Error: register required
3ab51846 2652@end smallexample
f42974dc
DW
2653
2654indicates that you should upgrade to a newer version of the binutils.
2655
0d4a78eb
BS
2656@html
2657<hr />
2658@end html
2659@heading @anchor{bfin}Blackfin
2660
2661The Blackfin processor, an Analog Devices DSP.
2662@ifnothtml
7f970b70
AM
2663@xref{Blackfin Options,, Blackfin Options, gcc, Using the GNU Compiler
2664Collection (GCC)},
0d4a78eb
BS
2665@end ifnothtml
2666@ifhtml
2667See ``Blackfin Options'' in the main manual
2668@end ifhtml
2669
2670More information, and a version of binutils with support for this processor,
2671is available at @uref{http://blackfin.uclinux.org}
2672
0132e321 2673@html
b8db17af 2674<hr />
0132e321
MH
2675@end html
2676@heading @anchor{c4x}c4x
2677
2678Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital Signal
2679Processors. These are used in embedded applications. There are no
d8393f64
GP
2680standard Unix configurations.
2681@ifnothtml
7f970b70
AM
2682@xref{TMS320C3x/C4x Options,, TMS320C3x/C4x Options, gcc, Using the
2683GNU Compiler Collection (GCC)},
d8393f64 2684@end ifnothtml
98999d8b 2685@ifhtml
d8393f64 2686See ``TMS320C3x/C4x Options'' in the main manual
98999d8b 2687@end ifhtml
d8393f64 2688for the list of supported MCU types.
0132e321
MH
2689
2690GCC can be configured as a cross compiler for both the C3x and C4x
2691architectures on the same system. Use @samp{configure --target=c4x
2692--enable-languages="c,c++"} to configure.
2693
2694
2695Further installation notes and other useful information about C4x tools
2696can also be obtained from:
2697
2698@itemize @bullet
2699@item
d8393f64 2700@uref{http://www.elec.canterbury.ac.nz/c4x/,,http://www.elec.canterbury.ac.nz/c4x/}
0132e321
MH
2701@end itemize
2702
0b85d816 2703@html
b8db17af 2704<hr />
0b85d816
HPN
2705@end html
2706@heading @anchor{cris}CRIS
2707
2708CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip
2709series. These are used in embedded applications.
2710
2711@ifnothtml
7f970b70 2712@xref{CRIS Options,, CRIS Options, gcc, Using the GNU Compiler
0b85d816
HPN
2713Collection (GCC)},
2714@end ifnothtml
2715@ifhtml
2716See ``CRIS Options'' in the main manual
2717@end ifhtml
2718for a list of CRIS-specific options.
2719
2720There are a few different CRIS targets:
2721@table @code
2722@item cris-axis-aout
2723Old target. Includes a multilib for the @samp{elinux} a.out-based
2724target. No multilibs for newer architecture variants.
2725@item cris-axis-elf
2726Mainly for monolithic embedded systems. Includes a multilib for the
2727@samp{v10} core used in @samp{ETRAX 100 LX}.
2728@item cris-axis-linux-gnu
2729A GNU/Linux port for the CRIS architecture, currently targeting
2730@samp{ETRAX 100 LX} by default.
2731@end table
2732
2733For @code{cris-axis-aout} and @code{cris-axis-elf} you need binutils 2.11
2734or newer. For @code{cris-axis-linux-gnu} you need binutils 2.12 or newer.
2735
2736Pre-packaged tools can be obtained from
2737@uref{ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/}. More
2738information about this platform is available at
2739@uref{http://developer.axis.com/}.
2740
53054e77
PW
2741@html
2742<hr />
2743@end html
2744@heading @anchor{crx}CRX
2745
2746The CRX CompactRISC architecture is a low-power 32-bit architecture with
2747fast context switching and architectural extensibility features.
2748
2749@ifnothtml
2750@xref{CRX Options,, CRX Options, gcc, Using and Porting the GNU Compiler
2751Collection (GCC)},
2752@end ifnothtml
2753
2754@ifhtml
2755See ``CRX Options'' in the main manual for a list of CRX-specific options.
2756@end ifhtml
2757
2758Use @samp{configure --target=crx-elf --enable-languages=c,c++} to configure
2759GCC@ for building a CRX cross-compiler. The option @samp{--target=crx-elf}
2760is also used to build the @samp{newlib} C library for CRX.
2761
2762It is also possible to build libstdc++-v3 for the CRX architecture. This
a4d05547 2763needs to be done in a separate step with the following configure settings:
53054e77
PW
2764@samp{gcc/libstdc++-v3/configure --host=crx-elf --with-newlib
2765--enable-sjlj-exceptions --enable-cxx-flags='-fexceptions -frtti'}
2766
f42974dc 2767@html
b8db17af 2768<hr />
f42974dc 2769@end html
ef88b07d 2770@heading @anchor{dos}DOS
f42974dc 2771
962e6e00 2772Please have a look at the @uref{binaries.html,,binaries page}.
f42974dc 2773
f0523f02 2774You cannot install GCC by itself on MSDOS; it will not compile under
f85b8d1a
JM
2775any MSDOS compiler except itself. You need to get the complete
2776compilation package DJGPP, which includes binaries as well as sources,
2777and includes all the necessary compilation tools and libraries.
2778
021c4bfd 2779@html
b8db17af 2780<hr />
021c4bfd 2781@end html
5a4c9b10 2782@heading @anchor{x-x-freebsd}*-*-freebsd*
021c4bfd 2783
f08dc6c1 2784The version of binutils installed in @file{/usr/bin} probably works with
8a36672b 2785this release of GCC@. However, on FreeBSD 4, bootstrapping against the
f08dc6c1
LR
2786latest FSF binutils is known to improve overall testsuite results; and,
2787on FreeBSD/alpha, using binutils 2.14 or later is required to build libjava.
021c4bfd 2788
6a1dbbaf 2789Support for FreeBSD 1 was discontinued in GCC 3.2.
c7bdf0a6 2790
f08dc6c1
LR
2791Support for FreeBSD 2 will be discontinued after GCC 3.4. The
2792following was true for GCC 3.1 but the current status is unknown.
c7bdf0a6 2793For FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All
021c4bfd
RO
2794configuration support and files as shipped with GCC 2.95 are still in
2795place. FreeBSD 2.2.7 has been known to bootstrap completely; however,
2796it is unknown which version of binutils was used (it is assumed that it
2797was the system copy in @file{/usr/bin}) and C++ EH failures were noted.
2798
2799For FreeBSD using the ELF file format: DWARF 2 debugging is now the
2800default for all CPU architectures. It had been the default on
2801FreeBSD/alpha since its inception. You may use @option{-gstabs} instead
2802of @option{-g}, if you really want the old debugging format. There are
2803no known issues with mixing object files and libraries with different
2804debugging formats. Otherwise, this release of GCC should now match more
8a36672b 2805of the configuration used in the stock FreeBSD configuration of GCC@. In
021c4bfd
RO
2806particular, @option{--enable-threads} is now configured by default.
2807However, as a general user, do not attempt to replace the system
2808compiler with this release. Known to bootstrap and check with good
f08dc6c1 2809results on FreeBSD 4.9-STABLE and 5-CURRENT@. In the past, known to
e4e7d312 2810bootstrap and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2,
f08dc6c1 28114.3, 4.4, 4.5, 4.8-STABLE@.
46fc709d
LR
2812
2813In principle, @option{--enable-threads} is now compatible with
2814@option{--enable-libgcj} on FreeBSD@. However, it has only been built
e4e7d312 2815and tested on @samp{i386-*-freebsd[45]} and @samp{alpha-*-freebsd[45]}.
8c085f6f 2816The static
6b976d99
LR
2817library may be incorrectly built (symbols are missing at link time).
2818There is a rare timing-based startup hang (probably involves an
c0478a66 2819assumption about the thread library). Multi-threaded boehm-gc (required for
46fc709d 2820libjava) exposes severe threaded signal-handling bugs on FreeBSD before
e4e7d312 28214.5-RELEASE@. Other CPU architectures
46fc709d
LR
2822supported by FreeBSD will require additional configuration tuning in, at
2823the very least, both boehm-gc and libffi.
021c4bfd 2824
bc3a44db
LR
2825Shared @file{libgcc_s.so} is now built and installed by default.
2826
f42974dc 2827@html
b8db17af 2828<hr />
f42974dc 2829@end html
ef88b07d 2830@heading @anchor{h8300-hms}h8300-hms
71c6b994 2831Renesas H8/300 series of processors.
f42974dc 2832
962e6e00 2833Please have a look at the @uref{binaries.html,,binaries page}.
f42974dc 2834
b8df899a
JM
2835The calling convention and structure layout has changed in release 2.6.
2836All code must be recompiled. The calling convention now passes the
2837first three arguments in function calls in registers. Structures are no
2838longer a multiple of 2 bytes.
2839
f42974dc 2840@html
b8db17af 2841<hr />
f42974dc 2842@end html
5a4c9b10 2843@heading @anchor{hppa-hp-hpux}hppa*-hp-hpux*
6a1dbbaf 2844Support for HP-UX version 9 and older was discontinued in GCC 3.4.
f42974dc 2845
dbad5e72
SE
2846We require using gas/binutils on all hppa platforms;
2847you may encounter a variety of problems if you try to use the HP assembler.
f42974dc
DW
2848
2849Specifically, @option{-g} does not work on HP-UX (since that system
d711cf67 2850uses a peculiar debugging format which GCC does not know about), unless
8a36672b 2851you use GAS and GDB@. It may be helpful to configure GCC with the
38209993 2852@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and
8a36672b 2853@option{--with-as=@dots{}} options to ensure that GCC can find GAS@.
f42974dc 2854
08b3d104 2855If you wish to use the pa-risc 2.0 architecture support with a 32-bit
dbad5e72 2856runtime, you must use gas/binutils 2.11 or newer.
f42974dc 2857
d5355cb2
JDA
2858There are two default scheduling models for instructions. These are
2859PROCESSOR_7100LC and PROCESSOR_8000. They are selected from the pa-risc
2860architecture specified for the target machine when configuring.
2861PROCESSOR_8000 is the default. PROCESSOR_7100LC is selected when
2862the target is a @samp{hppa1*} machine.
806bf413
JDA
2863
2864The PROCESSOR_8000 model is not well suited to older processors. Thus,
2865it is important to completely specify the machine architecture when
2866configuring if you want a model other than PROCESSOR_8000. The macro
2867TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different
2868default scheduling model is desired.
2869
25f710ba 2870As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10
d711cf67
JDA
2871through 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later.
2872This namespace change might cause problems when bootstrapping with
2873an earlier version of GCC or the HP compiler as essentially the same
2874namespace is required for an entire build. This problem can be avoided
2875in a number of ways. With HP cc, @env{UNIX_STD} can be set to @samp{95}
2876or @samp{98}. Another way is to add an appropriate set of predefines
2877to @env{CC}. The description for the @option{munix=} option contains
2878a list of the predefines used with each standard.
2879
dcf966bd
JDA
2880As of GCC 4.1, @env{DWARF2} exception handling is available on HP-UX.
2881It is now the default. This exposed a bug in the handling of data
2882relocations in the GAS assembler. The handling of 64-bit data relocations
2883was seriously broken, affecting debugging and exception support on all
353f74e8 2884@samp{hppa64-*-*} targets. Under some circumstances, 32-bit data relocations
dcf966bd
JDA
2885could also be handled incorrectly. This problem is fixed in GAS version
28862.16.91 20051125.
2887
2888GCC versions prior to 4.1 incorrectly passed and returned complex
2889values. They are now passed in the same manner as aggregates.
2890
021c4bfd 2891More specific information to @samp{hppa*-hp-hpux*} targets follows.
f42974dc 2892
f42974dc 2893@html
b8db17af 2894<hr />
f42974dc 2895@end html
5a4c9b10 2896@heading @anchor{hppa-hp-hpux10}hppa*-hp-hpux10
f42974dc 2897
f9047ed3 2898For hpux10.20, we @emph{highly} recommend you pick up the latest sed patch
161d7b59 2899@code{PHCO_19798} from HP@. HP has two sites which provide patches free of
f42974dc
DW
2900charge:
2901
2902@itemize @bullet
2903@item
2904@html
f401d0f5 2905<a href="http://us.itrc.hp.com/service/home/home.do">US, Canada, Asia-Pacific, and
f42974dc
DW
2906Latin-America</a>
2907@end html
2908@ifnothtml
f401d0f5
JDA
2909@uref{http://us.itrc.hp.com/service/home/home.do,,} US, Canada, Asia-Pacific,
2910and Latin-America.
f42974dc
DW
2911@end ifnothtml
2912@item
f401d0f5 2913@uref{http://europe.itrc.hp.com/service/home/home.do,,} Europe.
f42974dc
DW
2914@end itemize
2915
2aea0b53
ZW
2916The HP assembler on these systems has some problems. Most notably the
2917assembler inserts timestamps into each object file it creates, causing
cc11cc9b
PB
2918the 3-stage comparison test to fail during a bootstrap.
2919You should be able to continue by saying @samp{make all-host all-target}
2920after getting the failure from @samp{make}.
f42974dc 2921
25f710ba 2922GCC 4.0 requires CVS binutils as of April 28, 2004 or later. Earlier
9a55eab3
JDA
2923versions require binutils 2.8 or later.
2924
25f710ba 2925The C++ ABI has changed incompatibly in GCC 4.0. COMDAT subspaces are
9a55eab3
JDA
2926used for one-only code and data. This resolves many of the previous
2927problems in using C++ on this target. However, the ABI is not compatible
2928with the one implemented under HP-UX 11 using secondary definitions.
f42974dc
DW
2929
2930@html
b8db17af 2931<hr />
f42974dc 2932@end html
5a4c9b10 2933@heading @anchor{hppa-hp-hpux11}hppa*-hp-hpux11
f42974dc 2934
c5124497
JDA
2935GCC 3.0 and up support HP-UX 11. GCC 2.95.x is not supported and cannot
2936be used to compile GCC 3.0 and up.
f269f54f 2937
c5124497 2938Refer to @uref{binaries.html,,binaries} for information about obtaining
8a36672b
JM
2939precompiled GCC binaries for HP-UX@. Precompiled binaries must be obtained
2940to build the Ada language as it can't be bootstrapped using C@. Ada is
c5124497
JDA
2941only available for the 32-bit PA-RISC runtime. The libffi and libjava
2942haven't been ported to HP-UX and don't build.
f401d0f5 2943
02809848
PB
2944Starting with GCC 3.4 an ISO C compiler is required to bootstrap. The
2945bundled compiler supports only traditional C; you will need either HP's
2946unbundled compiler, or a binary distribution of GCC@.
2947
c5124497
JDA
2948It is possible to build GCC 3.3 starting with the bundled HP compiler,
2949but the process requires several steps. GCC 3.3 can then be used to
2950build later versions. The fastjar program contains ISO C code and
2951can't be built with the HP bundled compiler. This problem can be
2952avoided by not building the Java language. For example, use the
2953@option{--enable-languages="c,c++,f77,objc"} option in your configure
2954command.
08b3d104 2955
c5124497
JDA
2956There are several possible approaches to building the distribution.
2957Binutils can be built first using the HP tools. Then, the GCC
2958distribution can be built. The second approach is to build GCC
8a36672b 2959first using the HP tools, then build binutils, then rebuild GCC@.
c5124497
JDA
2960There have been problems with various binary distributions, so it
2961is best not to start from a binary distribution.
2962
2963On 64-bit capable systems, there are two distinct targets. Different
2964installation prefixes must be used if both are to be installed on
2965the same system. The @samp{hppa[1-2]*-hp-hpux11*} target generates code
2966for the 32-bit PA-RISC runtime architecture and uses the HP linker.
2967The @samp{hppa64-hp-hpux11*} target generates 64-bit code for the
2968PA-RISC 2.0 architecture. The HP and GNU linkers are both supported
2969for this target.
2970
2971The script config.guess now selects the target type based on the compiler
2972detected during configuration. You must define @env{PATH} or @env{CC} so
2973that configure finds an appropriate compiler for the initial bootstrap.
2974When @env{CC} is used, the definition should contain the options that are
2975needed whenever @env{CC} is used.
2976
2977Specifically, options that determine the runtime architecture must be
2978in @env{CC} to correctly select the target for the build. It is also
f0eb93a8 2979convenient to place many other compiler options in @env{CC}. For example,
c5124497
JDA
2980@env{CC="cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE"}
2981can be used to bootstrap the GCC 3.3 branch with the HP compiler in
298264-bit K&R/bundled mode. The @option{+DA2.0W} option will result in
2983the automatic selection of the @samp{hppa64-hp-hpux11*} target. The
2984macro definition table of cpp needs to be increased for a successful
2985build with the HP compiler. _CLASSIC_TYPES and _HPUX_SOURCE need to
2986be defined when building with the bundled compiler, or when using the
2987@option{-Ac} option. These defines aren't necessary with @option{-Ae}.
8c085f6f 2988
c5124497
JDA
2989It is best to explicitly configure the @samp{hppa64-hp-hpux11*} target
2990with the @option{--with-ld=@dots{}} option. This overrides the standard
2991search for ld. The two linkers supported on this target require different
2992commands. The default linker is determined during configuration. As a
2993result, it's not possible to switch linkers in the middle of a GCC build.
2994This has been been reported to sometimes occur in unified builds of
8a36672b 2995binutils and GCC@.
c5124497 2996
9a55eab3 2997GCC 3.0 through 3.2 require binutils 2.11 or above. GCC 3.3 through
25f710ba 2998GCC 4.0 require binutils 2.14 or later.
c5124497
JDA
2999
3000Although the HP assembler can be used for an initial build, it shouldn't
3001be used with any languages other than C and perhaps Fortran due to its
3002many limitations. For example, it does not support weak symbols or alias
3003definitions. As a result, explicit template instantiations are required
3004when using C++. This makes it difficult if not impossible to build many
3005C++ applications. You can't generate debugging information when using
cc11cc9b 3006the HP assembler. Finally, bootstrapping fails in the final
c5124497
JDA
3007comparison of object modules due to the time stamps that it inserts into
3008the modules. The bootstrap can be continued from this point with
cc11cc9b 3009@samp{make all-host all-target}.
c5124497
JDA
3010
3011A recent linker patch must be installed for the correct operation of
3012GCC 3.3 and later. @code{PHSS_26559} and @code{PHSS_24304} are the
3013oldest linker patches that are known to work. They are for HP-UX
301411.00 and 11.11, respectively. @code{PHSS_24303}, the companion to
3015@code{PHSS_24304}, might be usable but it hasn't been tested. These
3016patches have been superseded. Consult the HP patch database to obtain
3017the currently recommended linker patch for your system.
3018
3019The patches are necessary for the support of weak symbols on the
302032-bit port, and for the running of initializers and finalizers. Weak
3021symbols are implemented using SOM secondary definition symbols. Prior
3022to HP-UX 11, there are bugs in the linker support for secondary symbols.
3023The patches correct a problem of linker core dumps creating shared
3024libraries containing secondary symbols, as well as various other
3025linking issues involving secondary symbols.
3026
3027GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to
3028run initializers and finalizers on the 64-bit port. The 32-bit port
3029uses the linker @option{+init} and @option{+fini} options for the same
3030purpose. The patches correct various problems with the +init/+fini
3031options, including program core dumps. Binutils 2.14 corrects a
3032problem on the 64-bit port resulting from HP's non-standard use of
3033the .init and .fini sections for array initializers and finalizers.
f401d0f5
JDA
3034
3035There are a number of issues to consider in selecting which linker to
c5124497 3036use with the 64-bit port. The GNU 64-bit linker can only create dynamic
f401d0f5
JDA
3037binaries. The @option{-static} option causes linking with archive
3038libraries but doesn't produce a truly static binary. Dynamic binaries
3039still require final binding by the dynamic loader to resolve a set of
3040dynamic-loader-defined symbols. The default behavior of the HP linker
3041is the same as the GNU linker. However, it can generate true 64-bit
3042static binaries using the @option{+compat} option.
3043
3044The HP 64-bit linker doesn't support linkonce semantics. As a
3045result, C++ programs have many more sections than they should.
3046
3047The GNU 64-bit linker has some issues with shared library support
3048and exceptions. As a result, we only support libgcc in archive
3049format. For similar reasons, dwarf2 unwind and exception support
3050are disabled. The GNU linker also has problems creating binaries
3051with @option{-static}. It doesn't provide stubs for internal
3052calls to global functions in shared libraries, so these calls
3053can't be overloaded.
581d9404 3054
c5124497
JDA
3055Thread support is not implemented in GCC 3.0 through 3.2, so the
3056@option{--enable-threads} configure option does not work. In 3.3
3057and later, POSIX threads are supported. The optional DCE thread
3058library is not supported.
581d9404
JDA
3059
3060This port still is undergoing significant development.
08b3d104 3061
f42974dc 3062@html
b8db17af 3063<hr />
f42974dc 3064@end html
5a4c9b10 3065@heading @anchor{x-x-linux-gnu}*-*-linux-gnu
f42974dc 3066
9e80ada7
PE
3067Versions of libstdc++-v3 starting with 3.2.1 require bugfixes present
3068in glibc 2.2.5 and later. More information is available in the
3069libstdc++-v3 documentation.
3070
b8df899a 3071@html
b8db17af 3072<hr />
b8df899a 3073@end html
5a4c9b10 3074@heading @anchor{ix86-x-linuxaout}i?86-*-linux*aout
b8df899a 3075Use this configuration to generate @file{a.out} binaries on Linux-based
41ca24de 3076GNU systems. This configuration is being superseded.
b8df899a 3077
f42974dc 3078@html
b8db17af 3079<hr />
f42974dc 3080@end html
5a4c9b10 3081@heading @anchor{ix86-x-linux}i?86-*-linux*
f42974dc 3082
1ea6f4c8
DH
3083As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
3084See @uref{http://gcc.gnu.org/PR10877,,bug 10877} for more information.
f42974dc
DW
3085
3086If you receive Signal 11 errors when building on GNU/Linux, then it is
3087possible you have a hardware problem. Further information on this can be
3088found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}.
3089
3090@html
b8db17af 3091<hr />
f42974dc 3092@end html
d8fcd085 3093@heading @anchor{ix86-x-sco32v5}i?86-*-sco3.2v5*
b8df899a 3094Use this for the SCO OpenServer Release 5 family of operating systems.
f42974dc
DW
3095
3096Unlike earlier versions of GCC, the ability to generate COFF with this
3097target is no longer provided.
3098
021c4bfd 3099Earlier versions of GCC emitted DWARF 1 when generating ELF to allow
f42974dc 3100the system debugger to be used. That support was too burdensome to
021c4bfd 3101maintain. GCC now emits only DWARF 2 for this target. This means you
f42974dc 3102may use either the UDK debugger or GDB to debug programs built by this
161d7b59 3103version of GCC@.
f42974dc 3104
ac24fc99
KJ
3105GCC is now only supported on releases 5.0.4 and later, and requires that
3106you install Support Level Supplement OSS646B or later, and Support Level
3107Supplement OSS631C or later. If you are using release 5.0.7 of
3108OpenServer, you must have at least the first maintenance pack installed
3109(this includes the relevant portions of OSS646). OSS646, also known as
78466c0e 3110the ``Execution Environment Update'', provides updated link editors and
ac24fc99
KJ
3111assemblers, as well as updated standard C and math libraries. The C
3112startup modules are also updated to support the System V gABI draft, and
0b4be7de 3113GCC relies on that behavior. OSS631 provides a collection of commonly
ac24fc99
KJ
3114used open source libraries, some of which GCC depends on (such as GNU
3115gettext and zlib). SCO OpenServer Release 5.0.7 has all of this built
3116in by default, but OSS631C and later also apply to that release. Please
3117visit
3118@uref{ftp://ftp.sco.com/pub/openserver5,,ftp://ftp.sco.com/pub/openserver5}
3119for the latest versions of these (and other potentially useful)
3120supplements.
3121
3122Although there is support for using the native assembler, it is
3123recommended that you configure GCC to use the GNU assembler. You do
3124this by using the flags
3125@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}}. You should
3126use a modern version of GNU binutils. Version 2.13.2.1 was used for all
3127testing. In general, only the @option{--with-gnu-as} option is tested.
3128A modern bintuils (as well as a plethora of other development related
3129GNU utilities) can be found in Support Level Supplement OSS658A, the
78466c0e
JM
3130``GNU Development Tools'' package. See the SCO web and ftp sites for details.
3131That package also contains the currently ``officially supported'' version of
daf2f129 3132GCC, version 2.95.3. It is useful for bootstrapping this version.
f42974dc 3133
8f47c084
JM
3134@html
3135<hr />
3136@end html
d8fcd085 3137@heading @anchor{ix86-x-solaris210}i?86-*-solaris2.10
8f47c084
JM
3138Use this for Solaris 10 or later on x86 and x86-64 systems. This
3139configuration is supported by GCC 4.0 and later versions only.
3140
3141It is recommended that you configure GCC to use the GNU assembler in
3142@file{/usr/sfw/bin/gas} but the Sun linker, using the options
3143@option{--with-gnu-as --with-as=/usr/sfw/bin/gas --without-gnu-ld
3144--with-ld=/usr/ccs/bin/ld}.
3145
f42974dc 3146@html
b8db17af 3147<hr />
f42974dc 3148@end html
5a4c9b10 3149@heading @anchor{ix86-x-udk}i?86-*-udk
f42974dc
DW
3150
3151This target emulates the SCO Universal Development Kit and requires that
f9047ed3
JM
3152package be installed. (If it is installed, you will have a
3153@file{/udk/usr/ccs/bin/cc} file present.) It's very much like the
b953cc4b 3154@samp{i?86-*-unixware7*} target
f42974dc
DW
3155but is meant to be used when hosting on a system where UDK isn't the
3156default compiler such as OpenServer 5 or Unixware 2. This target will
f9047ed3 3157generate binaries that will run on OpenServer, Unixware 2, or Unixware 7,
161d7b59 3158with the same warnings and caveats as the SCO UDK@.
f42974dc 3159
f42974dc
DW
3160This target is a little tricky to build because we have to distinguish
3161it from the native tools (so it gets headers, startups, and libraries
f9047ed3 3162from the right place) while making the tools not think we're actually
f42974dc
DW
3163building a cross compiler. The easiest way to do this is with a configure
3164command like this:
3165
3ab51846 3166@smallexample
8c085f6f
JJ
3167 CC=/udk/usr/ccs/bin/cc @var{/your/path/to}/gcc/configure \
3168 --host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk-
3ab51846 3169@end smallexample
f42974dc 3170
6cfb3f16 3171@emph{You should substitute @samp{i686} in the above command with the appropriate
f42974dc
DW
3172processor for your host.}
3173
cc11cc9b 3174After the usual @samp{make} and
021c4bfd 3175@samp{make install}, you can then access the UDK-targeted GCC
38209993
LG
3176tools by adding @command{udk-} before the commonly known name. For
3177example, to invoke the C compiler, you would use @command{udk-gcc}.
3178They will coexist peacefully with any native-target GCC tools you may
3179have installed.
f42974dc
DW
3180
3181
b499d9ab 3182@html
b8db17af 3183<hr />
b499d9ab 3184@end html
5a4c9b10 3185@heading @anchor{ia64-x-linux}ia64-*-linux
b499d9ab
JJ
3186IA-64 processor (also known as IPF, or Itanium Processor Family)
3187running GNU/Linux.
3188
443728bb
L
3189If you are using the installed system libunwind library with
3190@option{--with-system-libunwind}, then you must use libunwind 0.98 or
3191later.
bcd11e5e 3192
b499d9ab
JJ
3193None of the following versions of GCC has an ABI that is compatible
3194with any of the other versions in this list, with the exception that
3195Red Hat 2.96 and Trillian 000171 are compatible with each other:
41ca24de 31963.1, 3.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717.
b499d9ab 3197This primarily affects C++ programs and programs that create shared libraries.
41ca24de
DH
3198GCC 3.1 or later is recommended for compiling linux, the kernel.
3199As of version 3.1 GCC is believed to be fully ABI compliant, and hence no
3200more major ABI changes are expected.
b499d9ab 3201
959a73a4
DH
3202@html
3203<hr />
3204@end html
5a4c9b10 3205@heading @anchor{ia64-x-hpux}ia64-*-hpux*
8a36672b
JM
3206Building GCC on this target requires the GNU Assembler. The bundled HP
3207assembler will not work. To prevent GCC from using the wrong assembler,
959a73a4
DH
3208the option @option{--with-gnu-as} may be necessary.
3209
8a36672b 3210The GCC libunwind library has not been ported to HPUX@. This means that for
959a73a4 3211GCC versions 3.2.3 and earlier, @option{--enable-libunwind-exceptions}
8a36672b 3212is required to build GCC@. For GCC 3.3 and later, this is the default.
443728bb
L
3213For gcc 3.4.3 and later, @option{--enable-libunwind-exceptions} is
3214removed and the system libunwind library will always be used.
959a73a4 3215
f42974dc 3216@html
b8db17af 3217<hr />
f42974dc
DW
3218<!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
3219@end html
5a4c9b10 3220@heading @anchor{x-ibm-aix}*-ibm-aix*
6a1dbbaf 3221Support for AIX version 3 and older was discontinued in GCC 3.4.
f42974dc 3222
7cc654b8
DE
3223``out of memory'' bootstrap failures may indicate a problem with
3224process resource limits (ulimit). Hard limits are configured in the
71fc0c16 3225@file{/etc/security/limits} system configuration file.
7cc654b8 3226
e8d8a034
DE
3227To speed up the configuration phases of bootstrapping and installing GCC,
3228one may use GNU Bash instead of AIX @command{/bin/sh}, e.g.,
3229
3230@smallexample
3231 % CONFIG_SHELL=/opt/freeware/bin/bash
3232 % export CONFIG_SHELL
3233@end smallexample
3234
cc11cc9b
PB
3235and then proceed as described in @uref{build.html,,the build
3236instructions}, where we strongly recommend specifying an absolute path
e8d8a034
DE
3237to invoke @var{srcdir}/configure.
3238
d3a95f27
DE
3239Because GCC on AIX is built as a 32-bit executable by default,
3240(although it can generate 64-bit programs) the GMP and MPFR libraries
3241required by gfortran must be 32-bit libraries. Building GMP and MPFR
3242as static archive libraries works better than shared libraries.
3243
6cfb3f16 3244Errors involving @code{alloca} when building GCC generally are due
021c4bfd 3245to an incorrect definition of @code{CC} in the Makefile or mixing files
161d7b59 3246compiled with the native C compiler and GCC@. During the stage1 phase of
6cfb3f16
JM
3247the build, the native AIX compiler @strong{must} be invoked as @command{cc}
3248(not @command{xlc}). Once @command{configure} has been informed of
3249@command{xlc}, one needs to use @samp{make distclean} to remove the
38209993 3250configure cache files and ensure that @env{CC} environment variable
f42974dc
DW
3251does not provide a definition that will confuse @command{configure}.
3252If this error occurs during stage2 or later, then the problem most likely
3253is the version of Make (see above).
3254
f0483418 3255The native @command{as} and @command{ld} are recommended for bootstrapping
8a36672b 3256on AIX 4 and required for bootstrapping on AIX 5L@. The GNU Assembler
f0483418
DE
3257reports that it supports WEAK symbols on AIX 4, which causes GCC to try to
3258utilize weak symbol functionality although it is not supported. The GNU
8a36672b 3259Assembler and Linker do not support AIX 5L sufficiently to bootstrap GCC@.
f0483418 3260The native AIX tools do interoperate with GCC@.
df002c7d 3261
04d2be8e 3262Building @file{libstdc++.a} requires a fix for an AIX Assembler bug
bb674cef
DE
3263APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1). It also requires a
3264fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
06e7f299 3265referenced as APAR IY53606 (AIX 5.2) or a APAR IY54774 (AIX 5.1)
2705baf5 3266
bb674cef 3267@samp{libstdc++} in GCC 3.4 increments the major version number of the
fdf68669 3268shared object and GCC installation places the @file{libstdc++.a}
bb674cef
DE
3269shared library in a common location which will overwrite the and GCC
32703.3 version of the shared library. Applications either need to be
3271re-linked against the new shared library or the GCC 3.1 and GCC 3.3
3272versions of the @samp{libstdc++} shared object needs to be available
3273to the AIX runtime loader. The GCC 3.1 @samp{libstdc++.so.4}, if
3274present, and GCC 3.3 @samp{libstdc++.so.5} shared objects can be
3275installed for runtime dynamic loading using the following steps to set
3276the @samp{F_LOADONLY} flag in the shared object for @emph{each}
fdf68669
DE
3277multilib @file{libstdc++.a} installed:
3278
bb674cef
DE
3279Extract the shared objects from the currently installed
3280@file{libstdc++.a} archive:
3ab51846 3281@smallexample
bb674cef 3282 % ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
3ab51846 3283@end smallexample
fdf68669
DE
3284
3285Enable the @samp{F_LOADONLY} flag so that the shared object will be
3286available for runtime dynamic loading, but not linking:
3ab51846 3287@smallexample
bb674cef 3288 % strip -e libstdc++.so.4 libstdc++.so.5
3ab51846 3289@end smallexample
fdf68669 3290
bb674cef 3291Archive the runtime-only shared object in the GCC 3.4
fdf68669 3292@file{libstdc++.a} archive:
3ab51846 3293@smallexample
bb674cef 3294 % ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
3ab51846 3295@end smallexample
fdf68669 3296
df002c7d
DE
3297Linking executables and shared libraries may produce warnings of
3298duplicate symbols. The assembly files generated by GCC for AIX always
3299have included multiple symbol definitions for certain global variable
3300and function declarations in the original program. The warnings should
3301not prevent the linker from producing a correct library or runnable
3302executable.
3303
6cfb3f16 3304AIX 4.3 utilizes a ``large format'' archive to support both 32-bit and
df002c7d
DE
330564-bit object modules. The routines provided in AIX 4.3.0 and AIX 4.3.1
3306to parse archive libraries did not handle the new format correctly.
3307These routines are used by GCC and result in error messages during
6cfb3f16 3308linking such as ``not a COFF file''. The version of the routines shipped
df002c7d
DE
3309with AIX 4.3.1 should work for a 32-bit environment. The @option{-g}
3310option of the archive command may be used to create archives of 32-bit
6cfb3f16 3311objects using the original ``small format''. A correct version of the
d5d8d540 3312routines is shipped with AIX 4.3.2 and above.
df002c7d 3313
f42974dc
DW
3314Some versions of the AIX binder (linker) can fail with a relocation
3315overflow severe error when the @option{-bbigtoc} option is used to link
161d7b59 3316GCC-produced object files into an executable that overflows the TOC@. A fix
f42974dc
DW
3317for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
3318available from IBM Customer Support and from its
d5d8d540 3319@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
f42974dc
DW
3320website as PTF U455193.
3321
df002c7d 3322The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
161d7b59 3323with a segmentation fault when invoked by any version of GCC@. A fix for
df002c7d 3324APAR IX87327 is available from IBM Customer Support and from its
d5d8d540 3325@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
df002c7d 3326website as PTF U461879. This fix is incorporated in AIX 4.3.3 and above.
f42974dc
DW
3327
3328The initial assembler shipped with AIX 4.3.0 generates incorrect object
3329files. A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS
3330TO ASSEMBLE/BIND) is available from IBM Customer Support and from its
d5d8d540 3331@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
f42974dc
DW
3332website as PTF U453956. This fix is incorporated in AIX 4.3.1 and above.
3333
161d7b59 3334AIX provides National Language Support (NLS)@. Compilers and assemblers
df002c7d 3335use NLS to support locale-specific representations of various data
6cfb3f16 3336formats including floating-point numbers (e.g., @samp{.} vs @samp{,} for
df002c7d
DE
3337separating decimal fractions). There have been problems reported where
3338GCC does not produce the same floating-point formats that the assembler
c771326b 3339expects. If one encounters this problem, set the @env{LANG}
6cfb3f16 3340environment variable to @samp{C} or @samp{En_US}.
f42974dc 3341
5791e6da
DE
3342By default, GCC for AIX 4.1 and above produces code that can be used on
3343both Power or PowerPC processors.
3344
d5d8d540
DE
3345A default can be specified with the @option{-mcpu=@var{cpu_type}}
3346switch and using the configure option @option{--with-cpu-@var{cpu_type}}.
f42974dc 3347
6b3d1e47
SC
3348@html
3349<hr />
3350@end html
5a4c9b10 3351@heading @anchor{iq2000-x-elf}iq2000-*-elf
6b3d1e47
SC
3352Vitesse IQ2000 processors. These are used in embedded
3353applications. There are no standard Unix configurations.
3354
38b2d076
DD
3355@html
3356<hr />
3357@end html
3358@heading @anchor{m32c-x-elf}m32c-*-elf
3359Renesas M32C processor.
3360This configuration is intended for embedded systems.
3361
b8df899a 3362@html
b8db17af 3363<hr />
b8df899a 3364@end html
5a4c9b10 3365@heading @anchor{m32r-x-elf}m32r-*-elf
25f47a4c 3366Renesas M32R processor.
b8df899a
JM
3367This configuration is intended for embedded systems.
3368
b8df899a 3369@html
b8db17af 3370<hr />
b8df899a
JM
3371@end html
3372@heading @anchor{m6811-elf}m6811-elf
3373Motorola 68HC11 family micro controllers. These are used in embedded
3374applications. There are no standard Unix configurations.
3375
3376@html
b8db17af 3377<hr />
b8df899a
JM
3378@end html
3379@heading @anchor{m6812-elf}m6812-elf
3380Motorola 68HC12 family micro controllers. These are used in embedded
3381applications. There are no standard Unix configurations.
3382
b8df899a 3383@html
b8db17af 3384<hr />
b8df899a
JM
3385@end html
3386@heading @anchor{m68k-hp-hpux}m68k-hp-hpux
161d7b59
JM
3387HP 9000 series 300 or 400 running HP-UX@. HP-UX version 8.0 has a bug in
3388the assembler that prevents compilation of GCC@. This
b8df899a
JM
3389bug manifests itself during the first stage of compilation, while
3390building @file{libgcc2.a}:
3391
3392@smallexample
3393_floatdisf
3394cc1: warning: `-g' option not supported on this version of GCC
3395cc1: warning: `-g1' option not supported on this version of GCC
3396./xgcc: Internal compiler error: program as got fatal signal 11
3397@end smallexample
3398
3399A patched version of the assembler is available as the file
3400@uref{ftp://altdorf.ai.mit.edu/archive/cph/hpux-8.0-assembler}. If you
3401have HP software support, the patch can also be obtained directly from
3402HP, as described in the following note:
3403
3404@quotation
3405This is the patched assembler, to patch SR#1653-010439, where the
3406assembler aborts on floating point constants.
3407
3408The bug is not really in the assembler, but in the shared library
3409version of the function ``cvtnum(3c)''. The bug on ``cvtnum(3c)'' is
3410SR#4701-078451. Anyway, the attached assembler uses the archive
3411library version of ``cvtnum(3c)'' and thus does not exhibit the bug.
3412@end quotation
3413
3414This patch is also known as PHCO_4484.
3415
41ca24de 3416In addition gdb does not understand that native HP-UX format, so
b8df899a
JM
3417you must use gas if you wish to use gdb.
3418
3419On HP-UX version 8.05, but not on 8.07 or more recent versions, the
7ba4ca63 3420@command{fixproto} shell script triggers a bug in the system shell. If you
b8df899a 3421encounter this problem, upgrade your operating system or use BASH (the
7ba4ca63 3422GNU shell) to run @command{fixproto}. This bug will cause the fixproto
b8df899a
JM
3423program to report an error of the form:
3424
3ab51846 3425@smallexample
b8df899a 3426./fixproto: sh internal 1K buffer overflow
3ab51846 3427@end smallexample
b8df899a
JM
3428
3429To fix this, you can also change the first line of the fixproto script
3430to look like:
3431
3ab51846 3432@smallexample
b8df899a 3433#!/bin/ksh
3ab51846 3434@end smallexample
b8df899a 3435
b8df899a 3436@html
b8db17af 3437<hr />
b8df899a 3438@end html
5a4c9b10 3439@heading @anchor{mips-x-x}mips-*-*
b8df899a
JM
3440If on a MIPS system you get an error message saying ``does not have gp
3441sections for all it's [sic] sectons [sic]'', don't worry about it. This
3442happens whenever you use GAS with the MIPS linker, but there is not
3443really anything wrong, and it is okay to use the output file. You can
3444stop such warnings by installing the GNU linker.
3445
3446It would be nice to extend GAS to produce the gp tables, but they are
3447optional, and there should not be a warning about their absence.
3448
26979a17
PE
3449The libstdc++ atomic locking routines for MIPS targets requires MIPS II
3450and later. A patch went in just after the GCC 3.3 release to
3451make @samp{mips*-*-*} use the generic implementation instead. You can also
3452configure for @samp{mipsel-elf} as a workaround. The
3453@samp{mips*-*-linux*} target continues to use the MIPS II routines. More
3454work on this is expected in future releases.
3455
9f0df97a
DD
3456MIPS systems check for division by zero (unless
3457@option{-mno-check-zero-division} is passed to the compiler) by
3458generating either a conditional trap or a break instruction. Using
3459trap results in smaller code, but is only supported on MIPS II and
3460later. Also, some versions of the Linux kernel have a bug that
8a36672b 3461prevents trap from generating the proper signal (@code{SIGFPE}). To enable
9f0df97a 3462the use of break, use the @option{--with-divide=breaks}
8a36672b 3463@command{configure} option when configuring GCC@. The default is to
9f0df97a
DD
3464use traps on systems that support them.
3465
a4d05547 3466Cross-compilers for the MIPS as target using the MIPS assembler
01e97976
JM
3467currently do not work, because the auxiliary programs
3468@file{mips-tdump.c} and @file{mips-tfile.c} can't be compiled on
a4d05547 3469anything but a MIPS. It does work to cross compile for a MIPS
01e97976
JM
3470if you use the GNU assembler and linker.
3471
549fb079
DD
3472The linker from GNU binutils versions prior to 2.17 has a bug which
3473causes the runtime linker stubs in @file{libgcj.so} to be incorrectly
3474generated. If you want to use libgcj, either use binutils 2.17 or
3475later to build it or export @samp{LD_BIND_NOW=1} in your runtime environment.
3476
5fb57097
EB
3477@html
3478<hr />
3479@end html
b953cc4b
RO
3480@heading @anchor{mips-sgi-irix5}mips-sgi-irix5
3481
7e270317
RO
3482In order to compile GCC on an SGI running IRIX 5, the @samp{compiler_dev.hdr}
3483subsystem must be installed from the IDO CD-ROM supplied by SGI@.
3484It is also available for download from
8df5a2b4 3485@uref{ftp://ftp.sgi.com/sgi/IRIX5.3/iris-development-option-5.3.tardist}.
f42974dc 3486
213ba345
RO
3487If you use the MIPS C compiler to bootstrap, it may be necessary
3488to increase its table size for switch statements with the
3489@option{-Wf,-XNg1500} option. If you use the @option{-O2}
3490optimization option, you also need to use @option{-Olimit 3000}.
f42974dc 3491
7e270317 3492To enable debugging under IRIX 5, you must use GNU binutils 2.15 or
82563d35
RS
3493later, and use the @option{--with-gnu-ld} @command{configure} option
3494when configuring GCC@. You need to use GNU @command{ar} and @command{nm},
3495also distributed with GNU binutils.
f42974dc 3496
c5e1045b
RS
3497Some users have reported that @command{/bin/sh} will hang during bootstrap.
3498This problem can be avoided by running the commands:
3499
3500@smallexample
3501 % CONFIG_SHELL=/bin/ksh
3502 % export CONFIG_SHELL
3503@end smallexample
3504
3505before starting the build.
3506
f42974dc 3507@html
b8db17af 3508<hr />
f42974dc 3509@end html
b953cc4b 3510@heading @anchor{mips-sgi-irix6}mips-sgi-irix6
f42974dc 3511
7e270317 3512If you are using SGI's MIPSpro @command{cc} as your bootstrap compiler, you must
f42974dc
DW
3513ensure that the N32 ABI is in use. To test this, compile a simple C
3514file with @command{cc} and then run @command{file} on the
3515resulting object file. The output should look like:
3516
3ab51846 3517@smallexample
213ba345 3518test.o: ELF N32 MSB @dots{}
3ab51846 3519@end smallexample
f42974dc
DW
3520
3521If you see:
213ba345 3522
3ab51846 3523@smallexample
213ba345 3524test.o: ELF 32-bit MSB @dots{}
3ab51846 3525@end smallexample
213ba345
RO
3526
3527or
3528
3ab51846 3529@smallexample
213ba345 3530test.o: ELF 64-bit MSB @dots{}
3ab51846 3531@end smallexample
f42974dc 3532
213ba345 3533then your version of @command{cc} uses the O32 or N64 ABI by default. You
38209993 3534should set the environment variable @env{CC} to @samp{cc -n32}
82563d35 3535before configuring GCC@.
f42974dc 3536
0fca60ab 3537If you want the resulting @command{gcc} to run on old 32-bit systems
7e270317 3538with the MIPS R4400 CPU, you need to ensure that only code for the @samp{mips3}
0fca60ab
RO
3539instruction set architecture (ISA) is generated. While GCC 3.x does
3540this correctly, both GCC 2.95 and SGI's MIPSpro @command{cc} may change
3541the ISA depending on the machine where GCC is built. Using one of them
7e270317
RO
3542as the bootstrap compiler may result in @samp{mips4} code, which won't run at
3543all on @samp{mips3}-only systems. For the test program above, you should see:
0fca60ab 3544
3ab51846 3545@smallexample
0fca60ab 3546test.o: ELF N32 MSB mips-3 @dots{}
3ab51846 3547@end smallexample
0fca60ab
RO
3548
3549If you get:
3550
3ab51846 3551@smallexample
0fca60ab 3552test.o: ELF N32 MSB mips-4 @dots{}
3ab51846 3553@end smallexample
0fca60ab
RO
3554
3555instead, you should set the environment variable @env{CC} to @samp{cc
3556-n32 -mips3} or @samp{gcc -mips3} respectively before configuring GCC@.
3557
82563d35
RS
3558MIPSpro C 7.4 may cause bootstrap failures, due to a bug when inlining
3559@code{memcmp}. Either add @code{-U__INLINE_INTRINSICS} to the @env{CC}
3560environment variable as a workaround or upgrade to MIPSpro C 7.4.1m.
3561
7e270317
RO
3562GCC on IRIX 6 is usually built to support the N32, O32 and N64 ABIs. If
3563you build GCC on a system that doesn't have the N64 libraries installed
3564or cannot run 64-bit binaries,
213ba345 3565you need to configure with @option{--disable-multilib} so GCC doesn't
7e270317
RO
3566try to use them. This will disable building the O32 libraries, too.
3567Look for @file{/usr/lib64/libc.so.1} to see if you
213ba345
RO
3568have the 64-bit libraries installed.
3569
7e270317
RO
3570To enable debugging for the O32 ABI, you must use GNU @command{as} from
3571GNU binutils 2.15 or later. You may also use GNU @command{ld}, but
3572this is not required and currently causes some problems with Ada.
f42974dc 3573
b953cc4b
RO
3574The @option{--enable-threads} option doesn't currently work, a patch is
3575in preparation for a future release. The @option{--enable-libgcj}
3576option is disabled by default: IRIX 6 uses a very low default limit
7e270317 3577(20480) for the command line length. Although @command{libtool} contains a
b953cc4b
RO
3578workaround for this problem, at least the N64 @samp{libgcj} is known not
3579to build despite this, running into an internal error of the native
3580@command{ld}. A sure fix is to increase this limit (@samp{ncargs}) to
3581its maximum of 262144 bytes. If you have root access, you can use the
3582@command{systune} command to do this.
3583
93e89068
PC
3584@code{wchar_t} support in @samp{libstdc++} is not available for old
3585IRIX 6.5.x releases, @math{x < 19}. The problem cannot be autodetected
3586and in order to build GCC for such targets you need to configure with
3587@option{--disable-wchar_t}.
3588
7e270317 3589See @uref{http://freeware.sgi.com/} for more
3aa8219e 3590information about using GCC on IRIX platforms.
f42974dc 3591
b8df899a 3592@html
b8db17af 3593<hr />
b8df899a 3594@end html
5a4c9b10 3595@heading @anchor{powerpc-x-x}powerpc-*-*
b8df899a 3596
6cfb3f16
JM
3597You can specify a default version for the @option{-mcpu=@var{cpu_type}}
3598switch by using the configure option @option{--with-cpu-@var{cpu_type}}.
b8df899a 3599
4f2b1139 3600@html
b8db17af 3601<hr />
4f2b1139 3602@end html
5a4c9b10 3603@heading @anchor{powerpc-x-darwin}powerpc-*-darwin*
4f2b1139
SS
3604PowerPC running Darwin (Mac OS X kernel).
3605
4f2b1139
SS
3606Pre-installed versions of Mac OS X may not include any developer tools,
3607meaning that you will not be able to build GCC from source. Tool
3608binaries are available at
beb5f807 3609@uref{http://developer.apple.com/darwin/projects/compiler/} (free
4f2b1139
SS
3610registration required).
3611
960ac6e1 3612This version of GCC requires at least cctools-590.7.
b89a3806
GK
3613
3614The version of GCC shipped by Apple typically includes a number of
3615extensions not available in a standard GCC release. These extensions
aeb732c1 3616are generally for backwards compatibility and best avoided.
4f2b1139 3617
021c4bfd 3618@html
b8db17af 3619<hr />
021c4bfd 3620@end html
5a4c9b10 3621@heading @anchor{powerpc-x-elf}powerpc-*-elf, powerpc-*-sysv4
021c4bfd
RO
3622PowerPC system in big endian mode, running System V.4.
3623
f42974dc 3624@html
b8db17af 3625<hr />
f42974dc 3626@end html
5a4c9b10 3627@heading @anchor{powerpc-x-linux-gnu}powerpc*-*-linux-gnu*
f42974dc 3628
f9047ed3 3629You will need
c3a2edb6 3630@uref{ftp://ftp.kernel.org/pub/linux/devel/binutils,,binutils 2.15}
791a949f 3631or newer for a working GCC@.
f42974dc 3632
edf1b3f3 3633@html
b8db17af 3634<hr />
edf1b3f3 3635@end html
5a4c9b10 3636@heading @anchor{powerpc-x-netbsd}powerpc-*-netbsd*
edf1b3f3 3637PowerPC system in big endian mode running NetBSD@. To build the
1a598a97 3638documentation you will need Texinfo version 4.4 (NetBSD 1.5.1 included
edf1b3f3
AC
3639Texinfo version 3.12).
3640
b8df899a 3641@html
b8db17af 3642<hr />
b8df899a 3643@end html
5a4c9b10 3644@heading @anchor{powerpc-x-eabisim}powerpc-*-eabisim
b8df899a
JM
3645Embedded PowerPC system in big endian mode for use in running under the
3646PSIM simulator.
3647
b8df899a 3648@html
b8db17af 3649<hr />
b8df899a 3650@end html
5a4c9b10 3651@heading @anchor{powerpc-x-eabi}powerpc-*-eabi
b8df899a
JM
3652Embedded PowerPC system in big endian mode.
3653
b8df899a 3654@html
b8db17af 3655<hr />
b8df899a 3656@end html
5a4c9b10 3657@heading @anchor{powerpcle-x-elf}powerpcle-*-elf, powerpcle-*-sysv4
b8df899a
JM
3658PowerPC system in little endian mode, running System V.4.
3659
b8df899a 3660@html
b8db17af 3661<hr />
b8df899a 3662@end html
5a4c9b10 3663@heading @anchor{powerpcle-x-eabisim}powerpcle-*-eabisim
b8df899a
JM
3664Embedded PowerPC system in little endian mode for use in running under
3665the PSIM simulator.
3666
3667@html
b8db17af 3668<hr />
b8df899a 3669@end html
5a4c9b10 3670@heading @anchor{powerpcle-x-eabi}powerpcle-*-eabi
b8df899a
JM
3671Embedded PowerPC system in little endian mode.
3672
91abf72d 3673@html
b8db17af 3674<hr />
91abf72d 3675@end html
5a4c9b10 3676@heading @anchor{s390-x-linux}s390-*-linux*
95fef11f 3677S/390 system running GNU/Linux for S/390@.
91abf72d
HP
3678
3679@html
b8db17af 3680<hr />
91abf72d 3681@end html
5a4c9b10 3682@heading @anchor{s390x-x-linux}s390x-*-linux*
95fef11f 3683zSeries system (64-bit) running GNU/Linux for zSeries@.
91abf72d 3684
8bf06993
UW
3685@html
3686<hr />
3687@end html
5a4c9b10 3688@heading @anchor{s390x-ibm-tpf}s390x-ibm-tpf*
8a36672b 3689zSeries system (64-bit) running TPF@. This platform is
8bf06993
UW
3690supported as cross-compilation target only.
3691
f42974dc 3692@html
b8db17af 3693<hr />
f42974dc 3694@end html
250d5688 3695@c Please use Solaris 2 to refer to all release of Solaris, starting
1460af95 3696@c with 2.0 until 2.6, 7, 8, etc. Solaris 1 was a marketing name for
250d5688
RO
3697@c SunOS 4 releases which we don't use to avoid confusion. Solaris
3698@c alone is too unspecific and must be avoided.
5a4c9b10 3699@heading @anchor{x-x-solaris2}*-*-solaris2*
f42974dc 3700
250d5688 3701Sun does not ship a C compiler with Solaris 2. To bootstrap and install
962e6e00 3702GCC you first have to install a pre-built compiler, see the
dbd210ef 3703@uref{binaries.html,,binaries page} for details.
f42974dc 3704
250d5688 3705The Solaris 2 @command{/bin/sh} will often fail to configure
92441f83 3706@file{libstdc++-v3}, @file{boehm-gc} or @file{libjava}. We therefore
1da1ce3f 3707recommend using the following initial sequence of commands
bc890961
EB
3708
3709@smallexample
3710 % CONFIG_SHELL=/bin/ksh
3711 % export CONFIG_SHELL
bc890961
EB
3712@end smallexample
3713
1da1ce3f 3714and proceed as described in @uref{configure.html,,the configure instructions}.
37de1373
GP
3715In addition we strongly recommend specifying an absolute path to invoke
3716@var{srcdir}/configure.
e6855a2d 3717
b8df899a 3718Solaris 2 comes with a number of optional OS packages. Some of these
92441f83 3719are needed to use GCC fully, namely @code{SUNWarc},
dbd210ef
KC
3720@code{SUNWbtool}, @code{SUNWesu}, @code{SUNWhea}, @code{SUNWlibm},
3721@code{SUNWsprot}, and @code{SUNWtoo}. If you did not install all
250d5688 3722optional packages when installing Solaris 2, you will need to verify that
b8df899a
JM
3723the packages that GCC needs are installed.
3724
3725To check whether an optional package is installed, use
dbd210ef 3726the @command{pkginfo} command. To add an optional package, use the
250d5688 3727@command{pkgadd} command. For further details, see the Solaris 2
b8df899a
JM
3728documentation.
3729
250d5688 3730Trying to use the linker and other tools in
b8df899a
JM
3731@file{/usr/ucb} to install GCC has been observed to cause trouble.
3732For example, the linker may hang indefinitely. The fix is to remove
250d5688 3733@file{/usr/ucb} from your @env{PATH}.
f42974dc 3734
bc890961
EB
3735The build process works more smoothly with the legacy Sun tools so, if you
3736have @file{/usr/xpg4/bin} in your @env{PATH}, we recommend that you place
3737@file{/usr/bin} before @file{/usr/xpg4/bin} for the duration of the build.
3738
021c4bfd 3739All releases of GNU binutils prior to 2.11.2 have known bugs on this
51e9a60c
EB
3740platform. We recommend the use of GNU binutils 2.11.2 or later, or the
3741vendor tools (Sun @command{as}, Sun @command{ld}). Note that your mileage
3742may vary if you use a combination of the GNU tools and the Sun tools: while
3743the combination GNU @command{as} + Sun @command{ld} should reasonably work,
3744the reverse combination Sun @command{as} + GNU @command{ld} is known to
3745cause memory corruption at runtime in some cases for C++ programs.
3746
3747The stock GNU binutils 2.15 release is broken on this platform because of a
3748single bug. It has been fixed on the 2.15 branch in the CVS repository.
3749You can obtain a working version by checking out the binutils-2_15-branch
3750from the CVS repository or applying the patch
224edf72 3751@uref{http://sources.redhat.com/ml/binutils-cvs/2004-09/msg00036.html} to the
51e9a60c 3752release.
f42974dc 3753
ff8f80f2
EB
3754We recommend using GNU binutils 2.16 or later in conjunction with GCC 4.x,
3755or the vendor tools (Sun @command{as}, Sun @command{ld}). However, for
3756Solaris 10 and above, an additional patch is required in order for the GNU
3757linker to be able to cope with a new flavor of shared libraries. You
3758can obtain a working version by checking out the binutils-2_16-branch from
3759the CVS repository or applying the patch
2c00bd42
EB
3760@uref{http://sourceware.org/ml/binutils-cvs/2005-07/msg00122.html} to the
3761release.
3762
250d5688
RO
3763Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or
3764newer: @command{g++} will complain that types are missing. These headers assume
3765that omitting the type means @code{int}; this assumption worked for C89 but
3766is wrong for C++, and is now wrong for C99 also.
3767
13ba36b4 3768@command{g++} accepts such (invalid) constructs with the option
250d5688
RO
3769@option{-fpermissive}; it
3770will assume that any missing type is @code{int} (as defined by C89).
3771
3772There are patches for Solaris 2.6 (105633-56 or newer for SPARC,
3773106248-42 or newer for Intel), Solaris 7 (108376-21 or newer for SPARC,
3774108377-20 for Intel), and Solaris 8 (108652-24 or newer for SPARC,
3775108653-22 for Intel) that fix this bug.
f42974dc 3776
c7525a64
KG
3777Sun bug 4927647 sometimes causes random spurious testsuite failures
3778related to missing diagnostic output. This bug doesn't affect GCC
3779itself, rather it is a kernel bug triggered by the @command{expect}
3780program which is used only by the GCC testsuite driver. When the bug
3781causes the @command{expect} program to miss anticipated output, extra
3782testsuite failures appear.
3783
3784There are patches for Solaris 8 (117350-12 or newer for SPARC,
3785117351-12 or newer for Intel) and Solaris 9 (117171-11 or newer for
3786SPARC, 117172-11 or newer for Intel) that address this problem.
3787
dbd210ef 3788@html
b8db17af 3789<hr />
dbd210ef 3790@end html
5a4c9b10 3791@heading @anchor{sparc-sun-solaris2}sparc-sun-solaris2*
dbd210ef 3792
1405141b
DN
3793When GCC is configured to use binutils 2.11.2 or later the binaries
3794produced are smaller than the ones produced using Sun's native tools;
3795this difference is quite significant for binaries containing debugging
3796information.
3797
250d5688 3798Sun @command{as} 4.x is broken in that it cannot cope with long symbol names.
dbd210ef
KC
3799A typical error message might look similar to the following:
3800
8c085f6f
JJ
3801@smallexample
3802/usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: error:
3803 can't compute value of an expression involving an external symbol.
3804@end smallexample
dbd210ef 3805
250d5688
RO
3806This is Sun bug 4237974. This is fixed with patch 108908-02 for Solaris
38072.6 and has been fixed in later (5.x) versions of the assembler,
3808starting with Solaris 7.
dbd210ef 3809
03b272d2 3810Starting with Solaris 7, the operating system is capable of executing
975c6e4e
RO
381164-bit SPARC V9 binaries. GCC 3.1 and later properly supports
3812this; the @option{-m64} option enables 64-bit code generation.
3813However, if all you want is code tuned for the UltraSPARC CPU, you
3814should try the @option{-mtune=ultrasparc} option instead, which produces
3815code that, unlike full 64-bit code, can still run on non-UltraSPARC
edf1c8df 3816machines.
03b272d2 3817
975c6e4e 3818When configuring on a Solaris 7 or later system that is running a kernel
8947df0c
RH
3819that supports only 32-bit binaries, one must configure with
3820@option{--disable-multilib}, since we will not be able to build the
382164-bit target libraries.
3fc602a0 3822
ae81c844
EB
3823GCC 3.3 and GCC 3.4 trigger code generation bugs in earlier versions of
3824the GNU compiler (especially GCC 3.0.x versions), which lead to the
3825miscompilation of the stage1 compiler and the subsequent failure of the
3826bootstrap process. A workaround is to use GCC 3.2.3 as an intermediary
431ae0bf 3827stage, i.e.@: to bootstrap that compiler with the base compiler and then
ae81c844
EB
3828use it to bootstrap the final compiler.
3829
94b18ec1
EB
3830GCC 3.4 triggers a code generation bug in versions 5.4 (Sun ONE Studio 7)
3831and 5.5 (Sun ONE Studio 8) of the Sun compiler, which causes a bootstrap
3832failure in form of a miscompilation of the stage1 compiler by the Sun
3833compiler. This is Sun bug 4974440. This is fixed with patch 112760-07.
3834
1460af95 3835GCC 3.4 changed the default debugging format from STABS to DWARF-2 for
dd48afcd
EB
383632-bit code on Solaris 7 and later. If you use the Sun assembler, this
3837change apparently runs afoul of Sun bug 4910101 (which is referenced as
3838a x86-only problem by Sun, probably because they do not use DWARF-2).
3839A symptom of the problem is that you cannot compile C++ programs like
3840@command{groff} 1.19.1 without getting messages similar to the following:
7c2f2b41
EB
3841
3842@smallexample
3843ld: warning: relocation error: R_SPARC_UA32: @dots{}
3844 external symbolic relocation against non-allocatable section
3845 .debug_info cannot be processed at runtime: relocation ignored.
3846@end smallexample
3847
3848To work around this problem, compile with @option{-gstabs+} instead of
3849plain @option{-g}.
1460af95 3850
bb2ffd7f
EB
3851When configuring the GNU Multiple Precision Library (GMP) version 4.1.x
3852on a Solaris 7 or later system, the canonical target triplet must be
3853specified as the @command{build} parameter on the configure line:
25c62e24
EB
3854
3855@smallexample
3856./configure --build=sparc-sun-solaris2.7 --prefix=xxx --enable-mpfr
3857@end smallexample
3858
f42974dc 3859@html
b8db17af 3860<hr />
f42974dc 3861@end html
d8fcd085 3862@heading @anchor{sparc-sun-solaris27}sparc-sun-solaris2.7
f42974dc 3863
250d5688 3864Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug in
f42974dc
DW
3865the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8
3866and later, including all EGCS releases. Sun formerly recommended
3867107058-01 for all Solaris 7 users, but around 1999-09-01 it started to
3868recommend it only for people who use Sun's compilers.
f9047ed3 3869
f42974dc
DW
3870Here are some workarounds to this problem:
3871@itemize @bullet
3872@item
3873Do not install Sun patch 107058-01 until after Sun releases a
3874complete patch for bug 4210064. This is the simplest course to take,
3875unless you must also use Sun's C compiler. Unfortunately 107058-01
250d5688 3876is preinstalled on some new Solaris 7-based hosts, so you may have to
f42974dc 3877back it out.
f9047ed3 3878
f42974dc
DW
3879@item
3880Copy the original, unpatched Solaris 7
3881@command{/usr/ccs/bin/as} into
8e5f33ff 3882@command{/usr/local/libexec/gcc/sparc-sun-solaris2.7/3.4/as},
f42974dc
DW
3883adjusting the latter name to fit your local conventions and software
3884version numbers.
3885
3886@item
3887Install Sun patch 106950-03 (1999-05-25) or later. Nobody with
3888both 107058-01 and 106950-03 installed has reported the bug with GCC
3889and Sun's dynamic linker. This last course of action is riskiest,
3890for two reasons. First, you must install 106950 on all hosts that
3891run code generated by GCC; it doesn't suffice to install it only on
3892the hosts that run GCC itself. Second, Sun says that 106950-03 is
3893only a partial fix for bug 4210064, but Sun doesn't know whether the
161d7b59 3894partial fix is adequate for GCC@. Revision -08 or later should fix
1460af95 3895the bug. The current (as of 2004-05-23) revision is -24, and is included in
f282ffb3 3896the Solaris 7 Recommended Patch Cluster.
f9047ed3 3897@end itemize
f42974dc 3898
fdbf04c8
EB
3899GCC 3.3 triggers a bug in version 5.0 Alpha 03/27/98 of the Sun assembler,
3900which causes a bootstrap failure when linking the 64-bit shared version of
8a36672b 3901libgcc. A typical error message is:
fdbf04c8
EB
3902
3903@smallexample
3904ld: fatal: relocation error: R_SPARC_32: file libgcc/sparcv9/_muldi3.o:
3905 symbol <unknown>: offset 0xffffffff7ec133e7 is non-aligned.
3906@end smallexample
3907
3908This bug has been fixed in the final 5.0 version of the assembler.
f42974dc 3909
661f4f90
EB
3910A similar problem was reported for version Sun WorkShop 6 99/08/18 of the
3911Sun assembler, which causes a bootstrap failure with GCC 4.0.0:
3912
3913@smallexample
3914ld: fatal: relocation error: R_SPARC_DISP32:
3915 file .libs/libstdc++.lax/libsupc++convenience.a/vterminate.o:
3916 symbol <unknown>: offset 0xfccd33ad is non-aligned
3917@end smallexample
3918
3919This bug has been fixed in more recent revisions of the assembler.
3920
c6fa9728 3921@html
b8db17af 3922<hr />
c6fa9728 3923@end html
5a4c9b10 3924@heading @anchor{sparc-x-linux}sparc-*-linux*
c6fa9728
JS
3925
3926GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4
3927or newer on this platform. All earlier binutils and glibc
3928releases mishandled unaligned relocations on @code{sparc-*-*} targets.
3929
3930
f42974dc 3931@html
b8db17af 3932<hr />
f42974dc 3933@end html
5a4c9b10 3934@heading @anchor{sparc64-x-solaris2}sparc64-*-solaris2*
e403b4bc
CR
3935
3936The following compiler flags must be specified in the configure
3937step in order to bootstrap this target with the Sun compiler:
3938
3ab51846 3939@smallexample
e403b4bc 3940 % CC="cc -xildoff -xarch=v9" @var{srcdir}/configure [@var{options}] [@var{target}]
3ab51846 3941@end smallexample
e403b4bc
CR
3942
3943@option{-xildoff} turns off the incremental linker, and @option{-xarch=v9}
0dc7ee3c
EB
3944specifies the SPARC-V9 architecture to the Sun linker and assembler.
3945
3946@html
3947<hr />
3948@end html
5a4c9b10 3949@heading @anchor{sparcv9-x-solaris2}sparcv9-*-solaris2*
0dc7ee3c
EB
3950
3951This is a synonym for sparc64-*-solaris2*.
f42974dc 3952
b8df899a 3953@html
b8db17af 3954<hr />
b8df899a 3955@end html
5a4c9b10 3956@heading @anchor{x-x-sysv}*-*-sysv*
b8df899a
JM
3957On System V release 3, you may get this error message
3958while linking:
3959
3960@smallexample
3961ld fatal: failed to write symbol name @var{something}
3962 in strings table for file @var{whatever}
3963@end smallexample
3964
021c4bfd 3965This probably indicates that the disk is full or your ulimit won't allow
b8df899a
JM
3966the file to be as large as it needs to be.
3967
3968This problem can also result because the kernel parameter @code{MAXUMEM}
3969is too small. If so, you must regenerate the kernel and make the value
3970much larger. The default value is reported to be 1024; a value of 32768
3971is said to work. Smaller values may also work.
3972
3973On System V, if you get an error like this,
3974
3ab51846 3975@smallexample
b8df899a
JM
3976/usr/local/lib/bison.simple: In function `yyparse':
3977/usr/local/lib/bison.simple:625: virtual memory exhausted
3ab51846 3978@end smallexample
b8df899a
JM
3979
3980@noindent
021c4bfd 3981that too indicates a problem with disk space, ulimit, or @code{MAXUMEM}.
b8df899a 3982
f85b8d1a 3983On a System V release 4 system, make sure @file{/usr/bin} precedes
7ba4ca63 3984@file{/usr/ucb} in @code{PATH}. The @command{cc} command in
f85b8d1a 3985@file{/usr/ucb} uses libraries which have bugs.
b8df899a
JM
3986
3987@html
b8db17af 3988<hr />
b8df899a
JM
3989@end html
3990@heading @anchor{vax-dec-ultrix}vax-dec-ultrix
7ba4ca63 3991Don't try compiling with VAX C (@command{vcc}). It produces incorrect code
b8df899a
JM
3992in some cases (for example, when @code{alloca} is used).
3993
4977bab6
ZW
3994@html
3995<hr />
3996@end html
5a4c9b10 3997@heading @anchor{x-x-vxworks}*-*-vxworks*
4977bab6 3998Support for VxWorks is in flux. At present GCC supports @emph{only} the
8a36672b 3999very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC@.
4977bab6
ZW
4000We welcome patches for other architectures supported by VxWorks 5.5.
4001Support for VxWorks AE would also be welcome; we believe this is merely
4002a matter of writing an appropriate ``configlette'' (see below). We are
4003not interested in supporting older, a.out or COFF-based, versions of
4004VxWorks in GCC 3.
4005
4006VxWorks comes with an older version of GCC installed in
4007@file{@var{$WIND_BASE}/host}; we recommend you do not overwrite it.
4008Choose an installation @var{prefix} entirely outside @var{$WIND_BASE}.
4009Before running @command{configure}, create the directories @file{@var{prefix}}
4010and @file{@var{prefix}/bin}. Link or copy the appropriate assembler,
8a36672b 4011linker, etc.@: into @file{@var{prefix}/bin}, and set your @var{PATH} to
4977bab6
ZW
4012include that directory while running both @command{configure} and
4013@command{make}.
4014
4015You must give @command{configure} the
4016@option{--with-headers=@var{$WIND_BASE}/target/h} switch so that it can
4017find the VxWorks system headers. Since VxWorks is a cross compilation
4018target only, you must also specify @option{--target=@var{target}}.
4019@command{configure} will attempt to create the directory
4020@file{@var{prefix}/@var{target}/sys-include} and copy files into it;
4021make sure the user running @command{configure} has sufficient privilege
4022to do so.
4023
4024GCC's exception handling runtime requires a special ``configlette''
4025module, @file{contrib/gthr_supp_vxw_5x.c}. Follow the instructions in
4026that file to add the module to your kernel build. (Future versions of
daf2f129 4027VxWorks will incorporate this module.)
4977bab6 4028
7e081a0c
AJ
4029@html
4030<hr />
4031@end html
d8fcd085 4032@heading @anchor{x86-64-x-x}x86_64-*-*, amd64-*-*
7e081a0c
AJ
4033
4034GCC supports the x86-64 architecture implemented by the AMD64 processor
8a36672b 4035(amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD@.
7e081a0c
AJ
4036On GNU/Linux the default is a bi-arch compiler which is able to generate
4037both 64-bit x86-64 and 32-bit x86 code (via the @option{-m32} switch).
4038
fd29f6ea 4039@html
b8db17af 4040<hr />
fd29f6ea 4041@end html
5a4c9b10 4042@heading @anchor{xtensa-x-elf}xtensa-*-elf
fd29f6ea
BW
4043
4044This target is intended for embedded Xtensa systems using the
4045@samp{newlib} C library. It uses ELF but does not support shared
4046objects. Designed-defined instructions specified via the
4047Tensilica Instruction Extension (TIE) language are only supported
4048through inline assembly.
4049
4050The Xtensa configuration information must be specified prior to
e677f70c 4051building GCC@. The @file{include/xtensa-config.h} header
fd29f6ea
BW
4052file contains the configuration information. If you created your
4053own Xtensa configuration with the Xtensa Processor Generator, the
4054downloaded files include a customized copy of this header file,
4055which you can use to replace the default header file.
4056
4057@html
b8db17af 4058<hr />
fd29f6ea 4059@end html
5a4c9b10 4060@heading @anchor{xtensa-x-linux}xtensa-*-linux*
fd29f6ea
BW
4061
4062This target is for Xtensa systems running GNU/Linux. It supports ELF
4063shared objects and the GNU C library (glibc). It also generates
4064position-independent code (PIC) regardless of whether the
4065@option{-fpic} or @option{-fPIC} options are used. In other
f282ffb3 4066respects, this target is the same as the
fd29f6ea
BW
4067@uref{#xtensa-*-elf,,@samp{xtensa-*-elf}} target.
4068
f42974dc 4069@html
b8db17af 4070<hr />
f42974dc 4071@end html
57694e40 4072@heading @anchor{windows}Microsoft Windows (32-bit)
f42974dc 4073
5b65d351 4074Ports of GCC are included with the
f42974dc
DW
4075@uref{http://www.cygwin.com/,,Cygwin environment}.
4076
5b65d351
GP
4077GCC will build under Cygwin without modification; it does not build
4078with Microsoft's C++ compiler and there are no plans to make it do so.
ccc1ce6e 4079
f42974dc 4080@html
b8db17af 4081<hr />
f42974dc 4082@end html
ef88b07d 4083@heading @anchor{os2}OS/2
f42974dc
DW
4084
4085GCC does not currently support OS/2. However, Andrew Zabolotny has been
14976c58 4086working on a generic OS/2 port with pgcc. The current code can be found
f42974dc
DW
4087at @uref{http://www.goof.com/pcg/os2/,,http://www.goof.com/pcg/os2/}.
4088
f42974dc 4089@html
b8db17af 4090<hr />
f42974dc 4091@end html
ef88b07d 4092@heading @anchor{older}Older systems
f9047ed3
JM
4093
4094GCC contains support files for many older (1980s and early
40951990s) Unix variants. For the most part, support for these systems
4096has not been deliberately removed, but it has not been maintained for
c7bdf0a6 4097several years and may suffer from bitrot.
f9047ed3 4098
c7bdf0a6 4099Starting with GCC 3.1, each release has a list of ``obsoleted'' systems.
9340544b
ZW
4100Support for these systems is still present in that release, but
4101@command{configure} will fail unless the @option{--enable-obsolete}
c7bdf0a6
ZW
4102option is given. Unless a maintainer steps forward, support for these
4103systems will be removed from the next release of GCC@.
f9047ed3
JM
4104
4105Support for old systems as hosts for GCC can cause problems if the
4106workarounds for compiler, library and operating system bugs affect the
161d7b59 4107cleanliness or maintainability of the rest of GCC@. In some cases, to
f9047ed3
JM
4108bring GCC up on such a system, if still possible with current GCC, may
4109require first installing an old version of GCC which did work on that
c7bdf0a6
ZW
4110system, and using it to compile a more recent GCC, to avoid bugs in the
4111vendor compiler. Old releases of GCC 1 and GCC 2 are available in the
4112@file{old-releases} directory on the @uref{../mirrors.html,,GCC mirror
4113sites}. Header bugs may generally be avoided using
4114@command{fixincludes}, but bugs or deficiencies in libraries and the
4115operating system may still cause problems.
4116
4117Support for older systems as targets for cross-compilation is less
4118problematic than support for them as hosts for GCC; if an enthusiast
4119wishes to make such a target work again (including resurrecting any of
80521187 4120the targets that never worked with GCC 2, starting from the last
c7bdf0a6
ZW
4121version before they were removed), patches
4122@uref{../contribute.html,,following the usual requirements} would be
4123likely to be accepted, since they should not affect the support for more
4124modern targets.
f9047ed3
JM
4125
4126For some systems, old versions of GNU binutils may also be useful,
021c4bfd 4127and are available from @file{pub/binutils/old-releases} on
f42974dc 4128@uref{http://sources.redhat.com/mirrors.html,,sources.redhat.com mirror sites}.
f9047ed3
JM
4129
4130Some of the information on specific systems above relates to
4131such older systems, but much of the information
4132about GCC on such systems (which may no longer be applicable to
f42974dc 4133current GCC) is to be found in the GCC texinfo manual.
f9047ed3 4134
f42974dc 4135@html
b8db17af 4136<hr />
f42974dc 4137@end html
d8fcd085 4138@heading @anchor{elf}all ELF targets (SVR4, Solaris 2, etc.)
f42974dc 4139
38209993
LG
4140C++ support is significantly better on ELF targets if you use the
4141@uref{./configure.html#with-gnu-ld,,GNU linker}; duplicate copies of
4142inlines, vtables and template instantiations will be discarded
4143automatically.
f42974dc
DW
4144
4145
4146@html
b8db17af 4147<hr />
f42974dc
DW
4148<p>
4149@end html
4150@ifhtml
4151@uref{./index.html,,Return to the GCC Installation page}
4152@end ifhtml
4153@end ifset
4154
73e2155a
JM
4155@c ***Old documentation******************************************************
4156@ifset oldhtml
4157@include install-old.texi
4158@html
b8db17af 4159<hr />
73e2155a
JM
4160<p>
4161@end html
4162@ifhtml
4163@uref{./index.html,,Return to the GCC Installation page}
4164@end ifhtml
4165@end ifset
4166
aed5964b
JM
4167@c ***GFDL********************************************************************
4168@ifset gfdlhtml
4169@include fdl.texi
4170@html
b8db17af 4171<hr />
aed5964b
JM
4172<p>
4173@end html
4174@ifhtml
4175@uref{./index.html,,Return to the GCC Installation page}
4176@end ifhtml
4177@end ifset
4178
f42974dc
DW
4179@c ***************************************************************************
4180@c Part 6 The End of the Document
4181@ifinfo
4182@comment node-name, next, previous, up
aed5964b 4183@node Concept Index, , GNU Free Documentation License, Top
f42974dc
DW
4184@end ifinfo
4185
4186@ifinfo
4187@unnumbered Concept Index
4188
4189@printindex cp
4190
4191@contents
4192@end ifinfo
4193@bye