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