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