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