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