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