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