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