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