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