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-2013 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.sunfreeware.com/,,Sunfreeware} 2919 2920@item 2921@uref{http://www.blastwave.org/,,Blastwave} 2922 2923@item 2924@uref{http://www.opencsw.org/,,OpenCSW} 2925 2926@item 2927@uref{http://jupiterrise.com/tgcware/,,TGCware} 2928@end itemize 2929 2930@item 2931Microsoft Windows: 2932@itemize 2933@item 2934The @uref{http://sourceware.org/cygwin/,,Cygwin} project; 2935@item 2936The @uref{http://www.mingw.org/,,MinGW} project. 2937@end itemize 2938 2939@item 2940@uref{ftp://ftp.thewrittenword.com/packages/by-name/,,The 2941Written Word} offers binaries for 2942AIX 4.3.3, 5.1 and 5.2, 2943GNU/Linux (i386), 2944HP-UX 10.20, 11.00, and 11.11, and 2945Solaris/SPARC 2.5.1, 2.6, 7, 8, 9 and 10. 2946 2947@item 2948@uref{http://www.openpkg.org/,,OpenPKG} offers binaries for quite a 2949number of platforms. 2950 2951@item 2952The @uref{http://gcc.gnu.org/wiki/GFortranBinaries,,GFortran Wiki} has 2953links to GNU Fortran binaries for several platforms. 2954@end itemize 2955 2956@html 2957<hr /> 2958<p> 2959@end html 2960@ifhtml 2961@uref{./index.html,,Return to the GCC Installation page} 2962@end ifhtml 2963@end ifset 2964 2965@c ***Specific**************************************************************** 2966@ifnothtml 2967@comment node-name, next, previous, up 2968@node Specific, Old, Binaries, Top 2969@end ifnothtml 2970@ifset specifichtml 2971@ifnothtml 2972@chapter Host/target specific installation notes for GCC 2973@end ifnothtml 2974@cindex Specific 2975@cindex Specific installation notes 2976@cindex Target specific installation 2977@cindex Host specific installation 2978@cindex Target specific installation notes 2979 2980Please read this document carefully @emph{before} installing the 2981GNU Compiler Collection on your machine. 2982 2983Note that this list of install notes is @emph{not} a list of supported 2984hosts or targets. Not all supported hosts and targets are listed 2985here, only the ones that require host-specific or target-specific 2986information have to. 2987 2988@ifhtml 2989@itemize 2990@item 2991@uref{#alpha-x-x,,alpha*-*-*} 2992@item 2993@uref{#alpha-dec-osf51,,alpha*-dec-osf5.1} 2994@item 2995@uref{#amd64-x-solaris210,,amd64-*-solaris2.10} 2996@item 2997@uref{#arm-x-eabi,,arm-*-eabi} 2998@item 2999@uref{#avr,,avr} 3000@item 3001@uref{#bfin,,Blackfin} 3002@item 3003@uref{#dos,,DOS} 3004@item 3005@uref{#x-x-freebsd,,*-*-freebsd*} 3006@item 3007@uref{#h8300-hms,,h8300-hms} 3008@item 3009@uref{#hppa-hp-hpux,,hppa*-hp-hpux*} 3010@item 3011@uref{#hppa-hp-hpux10,,hppa*-hp-hpux10} 3012@item 3013@uref{#hppa-hp-hpux11,,hppa*-hp-hpux11} 3014@item 3015@uref{#x-x-linux-gnu,,*-*-linux-gnu} 3016@item 3017@uref{#ix86-x-linux,,i?86-*-linux*} 3018@item 3019@uref{#ix86-x-solaris289,,i?86-*-solaris2.9} 3020@item 3021@uref{#ix86-x-solaris210,,i?86-*-solaris2.10} 3022@item 3023@uref{#ia64-x-linux,,ia64-*-linux} 3024@item 3025@uref{#ia64-x-hpux,,ia64-*-hpux*} 3026@item 3027@uref{#x-ibm-aix,,*-ibm-aix*} 3028@item 3029@uref{#iq2000-x-elf,,iq2000-*-elf} 3030@item 3031@uref{#lm32-x-elf,,lm32-*-elf} 3032@item 3033@uref{#lm32-x-uclinux,,lm32-*-uclinux} 3034@item 3035@uref{#m32c-x-elf,,m32c-*-elf} 3036@item 3037@uref{#m32r-x-elf,,m32r-*-elf} 3038@item 3039@uref{#m68k-x-x,,m68k-*-*} 3040@item 3041@uref{#m68k-uclinux,,m68k-uclinux} 3042@item 3043@uref{#mep-x-elf,,mep-*-elf} 3044@item 3045@uref{#microblaze-x-elf,,microblaze-*-elf} 3046@item 3047@uref{#mips-x-x,,mips-*-*} 3048@item 3049@uref{#mips-sgi-irix5,,mips-sgi-irix5} 3050@item 3051@uref{#mips-sgi-irix6,,mips-sgi-irix6} 3052@item 3053@uref{#powerpc-x-x,,powerpc*-*-*} 3054@item 3055@uref{#powerpc-x-darwin,,powerpc-*-darwin*} 3056@item 3057@uref{#powerpc-x-elf,,powerpc-*-elf} 3058@item 3059@uref{#powerpc-x-linux-gnu,,powerpc*-*-linux-gnu*} 3060@item 3061@uref{#powerpc-x-netbsd,,powerpc-*-netbsd*} 3062@item 3063@uref{#powerpc-x-eabisim,,powerpc-*-eabisim} 3064@item 3065@uref{#powerpc-x-eabi,,powerpc-*-eabi} 3066@item 3067@uref{#powerpcle-x-elf,,powerpcle-*-elf} 3068@item 3069@uref{#powerpcle-x-eabisim,,powerpcle-*-eabisim} 3070@item 3071@uref{#powerpcle-x-eabi,,powerpcle-*-eabi} 3072@item 3073@uref{#s390-x-linux,,s390-*-linux*} 3074@item 3075@uref{#s390x-x-linux,,s390x-*-linux*} 3076@item 3077@uref{#s390x-ibm-tpf,,s390x-ibm-tpf*} 3078@item 3079@uref{#x-x-solaris2,,*-*-solaris2*} 3080@item 3081@uref{#sparc-x-x,,sparc*-*-*} 3082@item 3083@uref{#sparc-sun-solaris2,,sparc-sun-solaris2*} 3084@item 3085@uref{#sparc-sun-solaris210,,sparc-sun-solaris2.10} 3086@item 3087@uref{#sparc-x-linux,,sparc-*-linux*} 3088@item 3089@uref{#sparc64-x-solaris2,,sparc64-*-solaris2*} 3090@item 3091@uref{#sparcv9-x-solaris2,,sparcv9-*-solaris2*} 3092@item 3093@uref{#c6x-x-x,,c6x-*-*} 3094@item 3095@uref{#tilegx-x-linux,,tilegx-*-linux*} 3096@item 3097@uref{#tilepro-x-linux,,tilepro-*-linux*} 3098@item 3099@uref{#x-x-vxworks,,*-*-vxworks*} 3100@item 3101@uref{#x86-64-x-x,,x86_64-*-*, amd64-*-*} 3102@item 3103@uref{#x86-64-x-solaris210,,x86_64-*-solaris2.1[0-9]*} 3104@item 3105@uref{#xtensa-x-elf,,xtensa*-*-elf} 3106@item 3107@uref{#xtensa-x-linux,,xtensa*-*-linux*} 3108@item 3109@uref{#windows,,Microsoft Windows} 3110@item 3111@uref{#x-x-cygwin,,*-*-cygwin} 3112@item 3113@uref{#x-x-interix,,*-*-interix} 3114@item 3115@uref{#x-x-mingw32,,*-*-mingw32} 3116@item 3117@uref{#os2,,OS/2} 3118@item 3119@uref{#older,,Older systems} 3120@end itemize 3121 3122@itemize 3123@item 3124@uref{#elf,,all ELF targets} (SVR4, Solaris 2, etc.) 3125@end itemize 3126@end ifhtml 3127 3128 3129@html 3130<!-- -------- host/target specific issues start here ---------------- --> 3131<hr /> 3132@end html 3133@heading @anchor{alpha-x-x}alpha*-*-* 3134 3135This section contains general configuration information for all 3136alpha-based platforms using ELF (in particular, ignore this section for 3137DEC OSF/1, Digital UNIX and Tru64 UNIX)@. In addition to reading this 3138section, please read all other sections that match your target. 3139 3140We require binutils 2.11.2 or newer. 3141Previous binutils releases had a number of problems with DWARF 2 3142debugging information, not the least of which is incorrect linking of 3143shared libraries. 3144 3145@html 3146<hr /> 3147@end html 3148@heading @anchor{alpha-dec-osf51}alpha*-dec-osf5.1 3149Systems using processors that implement the DEC Alpha architecture and 3150are running the DEC/Compaq/HP Unix (DEC OSF/1, Digital UNIX, or Compaq/HP 3151Tru64 UNIX) operating system, for example the DEC Alpha AXP systems. 3152 3153Support for Tru64 UNIX V5.1 has been removed in GCC 4.8. As of GCC 4.6, 3154support for Tru64 UNIX V4.0 and V5.0 has been removed. As of GCC 3.2, 3155versions before @code{alpha*-dec-osf4} are no longer supported. (These 3156are the versions which identify themselves as DEC OSF/1.) 3157 3158@html 3159<hr /> 3160@end html 3161@heading @anchor{amd64-x-solaris210}amd64-*-solaris2.1[0-9]* 3162 3163This is a synonym for @samp{x86_64-*-solaris2.1[0-9]*}. 3164 3165@html 3166<hr /> 3167@end html 3168@heading @anchor{arm-x-eabi}arm-*-eabi 3169ARM-family processors. Subtargets that use the ELF object format 3170require GNU binutils 2.13 or newer. Such subtargets include: 3171@code{arm-*-netbsdelf}, @code{arm-*-*linux-*} 3172and @code{arm-*-rtemseabi}. 3173 3174@html 3175<hr /> 3176@end html 3177@heading @anchor{avr}avr 3178 3179ATMEL AVR-family micro controllers. These are used in embedded 3180applications. There are no standard Unix configurations. 3181@ifnothtml 3182@xref{AVR Options,, AVR Options, gcc, Using the GNU Compiler 3183Collection (GCC)}, 3184@end ifnothtml 3185@ifhtml 3186See ``AVR Options'' in the main manual 3187@end ifhtml 3188for the list of supported MCU types. 3189 3190Use @samp{configure --target=avr --enable-languages="c"} to configure GCC@. 3191 3192Further installation notes and other useful information about AVR tools 3193can also be obtained from: 3194 3195@itemize @bullet 3196@item 3197@uref{http://www.nongnu.org/avr/,,http://www.nongnu.org/avr/} 3198@item 3199@uref{http://www.amelek.gda.pl/avr/,,http://www.amelek.gda.pl/avr/} 3200@end itemize 3201 3202We @emph{strongly} recommend using binutils 2.13 or newer. 3203 3204The following error: 3205@smallexample 3206Error: register required 3207@end smallexample 3208 3209indicates that you should upgrade to a newer version of the binutils. 3210 3211@html 3212<hr /> 3213@end html 3214@heading @anchor{bfin}Blackfin 3215 3216The Blackfin processor, an Analog Devices DSP. 3217@ifnothtml 3218@xref{Blackfin Options,, Blackfin Options, gcc, Using the GNU Compiler 3219Collection (GCC)}, 3220@end ifnothtml 3221@ifhtml 3222See ``Blackfin Options'' in the main manual 3223@end ifhtml 3224 3225More information, and a version of binutils with support for this processor, 3226is available at @uref{http://blackfin.uclinux.org} 3227 3228@html 3229<hr /> 3230@end html 3231@heading @anchor{cr16}CR16 3232 3233The CR16 CompactRISC architecture is a 16-bit architecture. This architecture is 3234used in embedded applications. 3235 3236@ifnothtml 3237@xref{CR16 Options,, CR16 Options, gcc, Using and Porting the GNU Compiler 3238Collection (GCC)}, 3239@end ifnothtml 3240 3241@ifhtml 3242See ``CR16 Options'' in the main manual for a list of CR16-specific options. 3243@end ifhtml 3244 3245Use @samp{configure --target=cr16-elf --enable-languages=c,c++} to configure 3246GCC@ for building a CR16 elf cross-compiler. 3247 3248Use @samp{configure --target=cr16-uclinux --enable-languages=c,c++} to configure 3249GCC@ for building a CR16 uclinux cross-compiler. 3250 3251@html 3252<hr /> 3253@end html 3254@heading @anchor{cris}CRIS 3255 3256CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip 3257series. These are used in embedded applications. 3258 3259@ifnothtml 3260@xref{CRIS Options,, CRIS Options, gcc, Using the GNU Compiler 3261Collection (GCC)}, 3262@end ifnothtml 3263@ifhtml 3264See ``CRIS Options'' in the main manual 3265@end ifhtml 3266for a list of CRIS-specific options. 3267 3268There are a few different CRIS targets: 3269@table @code 3270@item cris-axis-elf 3271Mainly for monolithic embedded systems. Includes a multilib for the 3272@samp{v10} core used in @samp{ETRAX 100 LX}. 3273@item cris-axis-linux-gnu 3274A GNU/Linux port for the CRIS architecture, currently targeting 3275@samp{ETRAX 100 LX} by default. 3276@end table 3277 3278For @code{cris-axis-elf} you need binutils 2.11 3279or newer. For @code{cris-axis-linux-gnu} you need binutils 2.12 or newer. 3280 3281Pre-packaged tools can be obtained from 3282@uref{ftp://ftp.axis.com/@/pub/@/axis/@/tools/@/cris/@/compiler-kit/}. More 3283information about this platform is available at 3284@uref{http://developer.axis.com/}. 3285 3286@html 3287<hr /> 3288@end html 3289@heading @anchor{dos}DOS 3290 3291Please have a look at the @uref{binaries.html,,binaries page}. 3292 3293You cannot install GCC by itself on MSDOS; it will not compile under 3294any MSDOS compiler except itself. You need to get the complete 3295compilation package DJGPP, which includes binaries as well as sources, 3296and includes all the necessary compilation tools and libraries. 3297 3298@html 3299<hr /> 3300@end html 3301@heading @anchor{epiphany-x-elf}epiphany-*-elf 3302Adapteva Epiphany. 3303This configuration is intended for embedded systems. 3304 3305@html 3306<hr /> 3307@end html 3308@heading @anchor{x-x-freebsd}*-*-freebsd* 3309 3310Support for FreeBSD 1 was discontinued in GCC 3.2. Support for 3311FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was 3312discontinued in GCC 4.0. 3313 3314In order to better utilize FreeBSD base system functionality and match 3315the configuration of the system compiler, GCC 4.5 and above as well as 3316GCC 4.4 past 2010-06-20 leverage SSP support in libc (which is present 3317on FreeBSD 7 or later) and the use of @code{__cxa_atexit} by default 3318(on FreeBSD 6 or later). The use of @code{dl_iterate_phdr} inside 3319@file{libgcc_s.so.1} and boehm-gc (on FreeBSD 7 or later) is enabled 3320by GCC 4.5 and above. 3321 3322We support FreeBSD using the ELF file format with DWARF 2 debugging 3323for all CPU architectures. You may use @option{-gstabs} instead of 3324@option{-g}, if you really want the old debugging format. There are 3325no known issues with mixing object files and libraries with different 3326debugging formats. Otherwise, this release of GCC should now match 3327more of the configuration used in the stock FreeBSD configuration of 3328GCC@. In particular, @option{--enable-threads} is now configured by 3329default. However, as a general user, do not attempt to replace the 3330system compiler with this release. Known to bootstrap and check with 3331good results on FreeBSD 7.2-STABLE@. In the past, known to bootstrap 3332and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4, 33334.5, 4.8, 4.9 and 5-CURRENT@. 3334 3335The version of binutils installed in @file{/usr/bin} probably works 3336with this release of GCC@. Bootstrapping against the latest GNU 3337binutils and/or the version found in @file{/usr/ports/devel/binutils} has 3338been known to enable additional features and improve overall testsuite 3339results. However, it is currently known that boehm-gc (which itself 3340is required for java) may not configure properly on FreeBSD prior to 3341the FreeBSD 7.0 release with GNU binutils after 2.16.1. 3342 3343@html 3344<hr /> 3345@end html 3346@heading @anchor{h8300-hms}h8300-hms 3347Renesas H8/300 series of processors. 3348 3349Please have a look at the @uref{binaries.html,,binaries page}. 3350 3351The calling convention and structure layout has changed in release 2.6. 3352All code must be recompiled. The calling convention now passes the 3353first three arguments in function calls in registers. Structures are no 3354longer a multiple of 2 bytes. 3355 3356@html 3357<hr /> 3358@end html 3359@heading @anchor{hppa-hp-hpux}hppa*-hp-hpux* 3360Support for HP-UX version 9 and older was discontinued in GCC 3.4. 3361 3362We require using gas/binutils on all hppa platforms. Version 2.19 or 3363later is recommended. 3364 3365It may be helpful to configure GCC with the 3366@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and 3367@option{--with-as=@dots{}} options to ensure that GCC can find GAS@. 3368 3369The HP assembler should not be used with GCC. It is rarely tested and may 3370not work. It shouldn't be used with any languages other than C due to its 3371many limitations. 3372 3373Specifically, @option{-g} does not work (HP-UX uses a peculiar debugging 3374format which GCC does not know about). It also inserts timestamps 3375into each object file it creates, causing the 3-stage comparison test to 3376fail during a bootstrap. You should be able to continue by saying 3377@samp{make all-host all-target} after getting the failure from @samp{make}. 3378 3379Various GCC features are not supported. For example, it does not support weak 3380symbols or alias definitions. As a result, explicit template instantiations 3381are required when using C++. This makes it difficult if not impossible to 3382build many C++ applications. 3383 3384There are two default scheduling models for instructions. These are 3385PROCESSOR_7100LC and PROCESSOR_8000. They are selected from the pa-risc 3386architecture specified for the target machine when configuring. 3387PROCESSOR_8000 is the default. PROCESSOR_7100LC is selected when 3388the target is a @samp{hppa1*} machine. 3389 3390The PROCESSOR_8000 model is not well suited to older processors. Thus, 3391it is important to completely specify the machine architecture when 3392configuring if you want a model other than PROCESSOR_8000. The macro 3393TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different 3394default scheduling model is desired. 3395 3396As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10 3397through 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later. 3398This namespace change might cause problems when bootstrapping with 3399an earlier version of GCC or the HP compiler as essentially the same 3400namespace is required for an entire build. This problem can be avoided 3401in a number of ways. With HP cc, @env{UNIX_STD} can be set to @samp{95} 3402or @samp{98}. Another way is to add an appropriate set of predefines 3403to @env{CC}. The description for the @option{munix=} option contains 3404a list of the predefines used with each standard. 3405 3406More specific information to @samp{hppa*-hp-hpux*} targets follows. 3407 3408@html 3409<hr /> 3410@end html 3411@heading @anchor{hppa-hp-hpux10}hppa*-hp-hpux10 3412 3413For hpux10.20, we @emph{highly} recommend you pick up the latest sed patch 3414@code{PHCO_19798} from HP@. 3415 3416The C++ ABI has changed incompatibly in GCC 4.0. COMDAT subspaces are 3417used for one-only code and data. This resolves many of the previous 3418problems in using C++ on this target. However, the ABI is not compatible 3419with the one implemented under HP-UX 11 using secondary definitions. 3420 3421@html 3422<hr /> 3423@end html 3424@heading @anchor{hppa-hp-hpux11}hppa*-hp-hpux11 3425 3426GCC 3.0 and up support HP-UX 11. GCC 2.95.x is not supported and cannot 3427be used to compile GCC 3.0 and up. 3428 3429The libffi and libjava libraries haven't been ported to 64-bit HP-UX@ 3430and don't build. 3431 3432Refer to @uref{binaries.html,,binaries} for information about obtaining 3433precompiled GCC binaries for HP-UX@. Precompiled binaries must be obtained 3434to build the Ada language as it can't be bootstrapped using C@. Ada is 3435only available for the 32-bit PA-RISC runtime. 3436 3437Starting with GCC 3.4 an ISO C compiler is required to bootstrap. The 3438bundled compiler supports only traditional C; you will need either HP's 3439unbundled compiler, or a binary distribution of GCC@. 3440 3441It is possible to build GCC 3.3 starting with the bundled HP compiler, 3442but the process requires several steps. GCC 3.3 can then be used to 3443build later versions. The fastjar program contains ISO C code and 3444can't be built with the HP bundled compiler. This problem can be 3445avoided by not building the Java language. For example, use the 3446@option{--enable-languages="c,c++,f77,objc"} option in your configure 3447command. 3448 3449There are several possible approaches to building the distribution. 3450Binutils can be built first using the HP tools. Then, the GCC 3451distribution can be built. The second approach is to build GCC 3452first using the HP tools, then build binutils, then rebuild GCC@. 3453There have been problems with various binary distributions, so it 3454is best not to start from a binary distribution. 3455 3456On 64-bit capable systems, there are two distinct targets. Different 3457installation prefixes must be used if both are to be installed on 3458the same system. The @samp{hppa[1-2]*-hp-hpux11*} target generates code 3459for the 32-bit PA-RISC runtime architecture and uses the HP linker. 3460The @samp{hppa64-hp-hpux11*} target generates 64-bit code for the 3461PA-RISC 2.0 architecture. 3462 3463The script config.guess now selects the target type based on the compiler 3464detected during configuration. You must define @env{PATH} or @env{CC} so 3465that configure finds an appropriate compiler for the initial bootstrap. 3466When @env{CC} is used, the definition should contain the options that are 3467needed whenever @env{CC} is used. 3468 3469Specifically, options that determine the runtime architecture must be 3470in @env{CC} to correctly select the target for the build. It is also 3471convenient to place many other compiler options in @env{CC}. For example, 3472@env{CC="cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE"} 3473can be used to bootstrap the GCC 3.3 branch with the HP compiler in 347464-bit K&R/bundled mode. The @option{+DA2.0W} option will result in 3475the automatic selection of the @samp{hppa64-hp-hpux11*} target. The 3476macro definition table of cpp needs to be increased for a successful 3477build with the HP compiler. _CLASSIC_TYPES and _HPUX_SOURCE need to 3478be defined when building with the bundled compiler, or when using the 3479@option{-Ac} option. These defines aren't necessary with @option{-Ae}. 3480 3481It is best to explicitly configure the @samp{hppa64-hp-hpux11*} target 3482with the @option{--with-ld=@dots{}} option. This overrides the standard 3483search for ld. The two linkers supported on this target require different 3484commands. The default linker is determined during configuration. As a 3485result, it's not possible to switch linkers in the middle of a GCC build. 3486This has been reported to sometimes occur in unified builds of binutils 3487and GCC@. 3488 3489A recent linker patch must be installed for the correct operation of 3490GCC 3.3 and later. @code{PHSS_26559} and @code{PHSS_24304} are the 3491oldest linker patches that are known to work. They are for HP-UX 349211.00 and 11.11, respectively. @code{PHSS_24303}, the companion to 3493@code{PHSS_24304}, might be usable but it hasn't been tested. These 3494patches have been superseded. Consult the HP patch database to obtain 3495the currently recommended linker patch for your system. 3496 3497The patches are necessary for the support of weak symbols on the 349832-bit port, and for the running of initializers and finalizers. Weak 3499symbols are implemented using SOM secondary definition symbols. Prior 3500to HP-UX 11, there are bugs in the linker support for secondary symbols. 3501The patches correct a problem of linker core dumps creating shared 3502libraries containing secondary symbols, as well as various other 3503linking issues involving secondary symbols. 3504 3505GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to 3506run initializers and finalizers on the 64-bit port. The 32-bit port 3507uses the linker @option{+init} and @option{+fini} options for the same 3508purpose. The patches correct various problems with the +init/+fini 3509options, including program core dumps. Binutils 2.14 corrects a 3510problem on the 64-bit port resulting from HP's non-standard use of 3511the .init and .fini sections for array initializers and finalizers. 3512 3513Although the HP and GNU linkers are both supported for the 3514@samp{hppa64-hp-hpux11*} target, it is strongly recommended that the 3515HP linker be used for link editing on this target. 3516 3517At this time, the GNU linker does not support the creation of long 3518branch stubs. As a result, it can't successfully link binaries 3519containing branch offsets larger than 8 megabytes. In addition, 3520there are problems linking shared libraries, linking executables 3521with @option{-static}, and with dwarf2 unwind and exception support. 3522It also doesn't provide stubs for internal calls to global functions 3523in shared libraries, so these calls can't be overloaded. 3524 3525The HP dynamic loader does not support GNU symbol versioning, so symbol 3526versioning is not supported. It may be necessary to disable symbol 3527versioning with @option{--disable-symvers} when using GNU ld. 3528 3529POSIX threads are the default. The optional DCE thread library is not 3530supported, so @option{--enable-threads=dce} does not work. 3531 3532@html 3533<hr /> 3534@end html 3535@heading @anchor{x-x-linux-gnu}*-*-linux-gnu 3536 3537Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present 3538in glibc 2.2.5 and later. More information is available in the 3539libstdc++-v3 documentation. 3540 3541@html 3542<hr /> 3543@end html 3544@heading @anchor{ix86-x-linux}i?86-*-linux* 3545 3546As of GCC 3.3, binutils 2.13.1 or later is required for this platform. 3547See @uref{http://gcc.gnu.org/PR10877,,bug 10877} for more information. 3548 3549If you receive Signal 11 errors when building on GNU/Linux, then it is 3550possible you have a hardware problem. Further information on this can be 3551found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}. 3552 3553@html 3554<hr /> 3555@end html 3556@heading @anchor{ix86-x-solaris29}i?86-*-solaris2.9 3557The Sun assembler in Solaris 9 has several bugs and limitations. 3558While GCC works around them, several features are missing, so it is 3559@c FIXME: which ones? 3560recommended to use the GNU assembler instead. There is no bundled 3561version, but the current version, from GNU binutils 2.22, is known to 3562work. 3563 3564Solaris@tie{}2/x86 doesn't support the execution of SSE/SSE2 instructions 3565before Solaris@tie{}9 4/04, even if the CPU supports them. Programs will 3566receive @code{SIGILL} if they try. The fix is available both in 3567Solaris@tie{}9 Update@tie{}6 and kernel patch 112234-12 or newer. To 3568avoid this problem, 3569@option{-march} defaults to @samp{pentiumpro} on Solaris 9. If 3570you have the patch installed, you can configure GCC with an appropriate 3571@option{--with-arch} option, but need GNU @command{as} for SSE2 support. 3572 3573@html 3574<hr /> 3575@end html 3576@heading @anchor{ix86-x-solaris210}i?86-*-solaris2.10 3577Use this for Solaris 10 or later on x86 and x86-64 systems. Starting 3578with GCC 4.7, there is also a 64-bit @samp{amd64-*-solaris2.1[0-9]*} or 3579@samp{x86_64-*-solaris2.1[0-9]*} configuration that corresponds to 3580@samp{sparcv9-sun-solaris2*}. 3581 3582It is recommended that you configure GCC to use the GNU assembler, in 3583@file{/usr/sfw/bin/gas}. The versions included in Solaris 10, from GNU 3584binutils 2.15, and Solaris 11, from GNU binutils 2.19, work fine, 3585although the current version, from GNU binutils 35862.22, is known to work, too. Recent versions of the Sun assembler in 3587@file{/usr/ccs/bin/as} work almost as well, though. 3588@c FIXME: as patch requirements? 3589 3590For linking, the Sun linker, is preferred. If you want to use the GNU 3591linker instead, which is available in @file{/usr/sfw/bin/gld}, note that 3592due to a packaging bug the version in Solaris 10, from GNU binutils 35932.15, cannot be used, while the version in Solaris 11, from GNU binutils 35942.19, works, as does the latest version, from GNU binutils 2.22. 3595 3596To use GNU @command{as}, configure with the options 3597@option{--with-gnu-as --with-as=@//usr/@/sfw/@/bin/@/gas}. It may be necessary 3598to configure with @option{--without-gnu-ld --with-ld=@//usr/@/ccs/@/bin/@/ld} to 3599guarantee use of Sun @command{ld}. 3600@c FIXME: why --without-gnu-ld --with-ld? 3601 3602@html 3603<hr /> 3604@end html 3605@heading @anchor{ia64-x-linux}ia64-*-linux 3606IA-64 processor (also known as IPF, or Itanium Processor Family) 3607running GNU/Linux. 3608 3609If you are using the installed system libunwind library with 3610@option{--with-system-libunwind}, then you must use libunwind 0.98 or 3611later. 3612 3613None of the following versions of GCC has an ABI that is compatible 3614with any of the other versions in this list, with the exception that 3615Red Hat 2.96 and Trillian 000171 are compatible with each other: 36163.1, 3.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717. 3617This primarily affects C++ programs and programs that create shared libraries. 3618GCC 3.1 or later is recommended for compiling linux, the kernel. 3619As of version 3.1 GCC is believed to be fully ABI compliant, and hence no 3620more major ABI changes are expected. 3621 3622@html 3623<hr /> 3624@end html 3625@heading @anchor{ia64-x-hpux}ia64-*-hpux* 3626Building GCC on this target requires the GNU Assembler. The bundled HP 3627assembler will not work. To prevent GCC from using the wrong assembler, 3628the option @option{--with-gnu-as} may be necessary. 3629 3630The GCC libunwind library has not been ported to HPUX@. This means that for 3631GCC versions 3.2.3 and earlier, @option{--enable-libunwind-exceptions} 3632is required to build GCC@. For GCC 3.3 and later, this is the default. 3633For gcc 3.4.3 and later, @option{--enable-libunwind-exceptions} is 3634removed and the system libunwind library will always be used. 3635 3636@html 3637<hr /> 3638<!-- rs6000-ibm-aix*, powerpc-ibm-aix* --> 3639@end html 3640@heading @anchor{x-ibm-aix}*-ibm-aix* 3641Support for AIX version 3 and older was discontinued in GCC 3.4. 3642Support for AIX version 4.2 and older was discontinued in GCC 4.5. 3643 3644``out of memory'' bootstrap failures may indicate a problem with 3645process resource limits (ulimit). Hard limits are configured in the 3646@file{/etc/security/limits} system configuration file. 3647 3648GCC can bootstrap with recent versions of IBM XLC, but bootstrapping 3649with an earlier release of GCC is recommended. Bootstrapping with XLC 3650requires a larger data segment, which can be enabled through the 3651@var{LDR_CNTRL} environment variable, e.g., 3652 3653@smallexample 3654% LDR_CNTRL=MAXDATA=0x50000000 3655% export LDR_CNTRL 3656@end smallexample 3657 3658One can start with a pre-compiled version of GCC to build from 3659sources. One may delete GCC's ``fixed'' header files when starting 3660with a version of GCC built for an earlier release of AIX. 3661 3662To speed up the configuration phases of bootstrapping and installing GCC, 3663one may use GNU Bash instead of AIX @command{/bin/sh}, e.g., 3664 3665@smallexample 3666% CONFIG_SHELL=/opt/freeware/bin/bash 3667% export CONFIG_SHELL 3668@end smallexample 3669 3670and then proceed as described in @uref{build.html,,the build 3671instructions}, where we strongly recommend specifying an absolute path 3672to invoke @var{srcdir}/configure. 3673 3674Because GCC on AIX is built as a 32-bit executable by default, 3675(although it can generate 64-bit programs) the GMP and MPFR libraries 3676required by gfortran must be 32-bit libraries. Building GMP and MPFR 3677as static archive libraries works better than shared libraries. 3678 3679Errors involving @code{alloca} when building GCC generally are due 3680to an incorrect definition of @code{CC} in the Makefile or mixing files 3681compiled with the native C compiler and GCC@. During the stage1 phase of 3682the build, the native AIX compiler @strong{must} be invoked as @command{cc} 3683(not @command{xlc}). Once @command{configure} has been informed of 3684@command{xlc}, one needs to use @samp{make distclean} to remove the 3685configure cache files and ensure that @env{CC} environment variable 3686does not provide a definition that will confuse @command{configure}. 3687If this error occurs during stage2 or later, then the problem most likely 3688is the version of Make (see above). 3689 3690The native @command{as} and @command{ld} are recommended for 3691bootstrapping on AIX@. The GNU Assembler, GNU Linker, and GNU 3692Binutils version 2.20 is the minimum level that supports bootstrap on 3693AIX 5@. The GNU Assembler has not been updated to support AIX 6@ or 3694AIX 7. The native AIX tools do interoperate with GCC@. 3695 3696AIX 5.3 TL10, AIX 6.1 TL05 and AIX 7.1 TL00 introduced an AIX 3697assembler change that sometimes produces corrupt assembly files 3698causing AIX linker errors. The bug breaks GCC bootstrap on AIX and 3699can cause compilation failures with existing GCC installations. An 3700AIX iFix for AIX 5.3 is available (APAR IZ98385 for AIX 5.3 TL10, APAR 3701IZ98477 for AIX 5.3 TL11 and IZ98134 for AIX 5.3 TL12). AIX 5.3 TL11 SP8, 3702AIX 5.3 TL12 SP5, AIX 6.1 TL04 SP11, AIX 6.1 TL05 SP7, AIX 6.1 TL06 SP6, 3703AIX 6.1 TL07 and AIX 7.1 TL01 should include the fix. 3704 3705Building @file{libstdc++.a} requires a fix for an AIX Assembler bug 3706APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1). It also requires a 3707fix for another AIX Assembler bug and a co-dependent AIX Archiver fix 3708referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1) 3709 3710@samp{libstdc++} in GCC 3.4 increments the major version number of the 3711shared object and GCC installation places the @file{libstdc++.a} 3712shared library in a common location which will overwrite the and GCC 37133.3 version of the shared library. Applications either need to be 3714re-linked against the new shared library or the GCC 3.1 and GCC 3.3 3715versions of the @samp{libstdc++} shared object needs to be available 3716to the AIX runtime loader. The GCC 3.1 @samp{libstdc++.so.4}, if 3717present, and GCC 3.3 @samp{libstdc++.so.5} shared objects can be 3718installed for runtime dynamic loading using the following steps to set 3719the @samp{F_LOADONLY} flag in the shared object for @emph{each} 3720multilib @file{libstdc++.a} installed: 3721 3722Extract the shared objects from the currently installed 3723@file{libstdc++.a} archive: 3724@smallexample 3725% ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5 3726@end smallexample 3727 3728Enable the @samp{F_LOADONLY} flag so that the shared object will be 3729available for runtime dynamic loading, but not linking: 3730@smallexample 3731% strip -e libstdc++.so.4 libstdc++.so.5 3732@end smallexample 3733 3734Archive the runtime-only shared object in the GCC 3.4 3735@file{libstdc++.a} archive: 3736@smallexample 3737% ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5 3738@end smallexample 3739 3740Linking executables and shared libraries may produce warnings of 3741duplicate symbols. The assembly files generated by GCC for AIX always 3742have included multiple symbol definitions for certain global variable 3743and function declarations in the original program. The warnings should 3744not prevent the linker from producing a correct library or runnable 3745executable. 3746 3747AIX 4.3 utilizes a ``large format'' archive to support both 32-bit and 374864-bit object modules. The routines provided in AIX 4.3.0 and AIX 4.3.1 3749to parse archive libraries did not handle the new format correctly. 3750These routines are used by GCC and result in error messages during 3751linking such as ``not a COFF file''. The version of the routines shipped 3752with AIX 4.3.1 should work for a 32-bit environment. The @option{-g} 3753option of the archive command may be used to create archives of 32-bit 3754objects using the original ``small format''. A correct version of the 3755routines is shipped with AIX 4.3.2 and above. 3756 3757Some versions of the AIX binder (linker) can fail with a relocation 3758overflow severe error when the @option{-bbigtoc} option is used to link 3759GCC-produced object files into an executable that overflows the TOC@. A fix 3760for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is 3761available from IBM Customer Support and from its 3762@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com} 3763website as PTF U455193. 3764 3765The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core 3766with a segmentation fault when invoked by any version of GCC@. A fix for 3767APAR IX87327 is available from IBM Customer Support and from its 3768@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com} 3769website as PTF U461879. This fix is incorporated in AIX 4.3.3 and above. 3770 3771The initial assembler shipped with AIX 4.3.0 generates incorrect object 3772files. A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS 3773TO ASSEMBLE/BIND) is available from IBM Customer Support and from its 3774@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com} 3775website as PTF U453956. This fix is incorporated in AIX 4.3.1 and above. 3776 3777AIX provides National Language Support (NLS)@. Compilers and assemblers 3778use NLS to support locale-specific representations of various data 3779formats including floating-point numbers (e.g., @samp{.} vs @samp{,} for 3780separating decimal fractions). There have been problems reported where 3781GCC does not produce the same floating-point formats that the assembler 3782expects. If one encounters this problem, set the @env{LANG} 3783environment variable to @samp{C} or @samp{En_US}. 3784 3785A default can be specified with the @option{-mcpu=@var{cpu_type}} 3786switch and using the configure option @option{--with-cpu-@var{cpu_type}}. 3787 3788@html 3789<hr /> 3790@end html 3791@heading @anchor{iq2000-x-elf}iq2000-*-elf 3792Vitesse IQ2000 processors. These are used in embedded 3793applications. There are no standard Unix configurations. 3794 3795@html 3796<hr /> 3797@end html 3798@heading @anchor{lm32-x-elf}lm32-*-elf 3799Lattice Mico32 processor. 3800This configuration is intended for embedded systems. 3801 3802@html 3803<hr /> 3804@end html 3805@heading @anchor{lm32-x-uclinux}lm32-*-uclinux 3806Lattice Mico32 processor. 3807This configuration is intended for embedded systems running uClinux. 3808 3809@html 3810<hr /> 3811@end html 3812@heading @anchor{m32c-x-elf}m32c-*-elf 3813Renesas M32C processor. 3814This configuration is intended for embedded systems. 3815 3816@html 3817<hr /> 3818@end html 3819@heading @anchor{m32r-x-elf}m32r-*-elf 3820Renesas M32R processor. 3821This configuration is intended for embedded systems. 3822 3823@html 3824<hr /> 3825@end html 3826@heading @anchor{m68k-x-x}m68k-*-* 3827By default, 3828@samp{m68k-*-elf*}, @samp{m68k-*-rtems}, @samp{m68k-*-uclinux} and 3829@samp{m68k-*-linux} 3830build libraries for both M680x0 and ColdFire processors. If you only 3831need the M680x0 libraries, you can omit the ColdFire ones by passing 3832@option{--with-arch=m68k} to @command{configure}. Alternatively, you 3833can omit the M680x0 libraries by passing @option{--with-arch=cf} to 3834@command{configure}. These targets default to 5206 or 5475 code as 3835appropriate for the target system when 3836configured with @option{--with-arch=cf} and 68020 code otherwise. 3837 3838The @samp{m68k-*-netbsd} and 3839@samp{m68k-*-openbsd} targets also support the @option{--with-arch} 3840option. They will generate ColdFire CFV4e code when configured with 3841@option{--with-arch=cf} and 68020 code otherwise. 3842 3843You can override the default processors listed above by configuring 3844with @option{--with-cpu=@var{target}}. This @var{target} can either 3845be a @option{-mcpu} argument or one of the following values: 3846@samp{m68000}, @samp{m68010}, @samp{m68020}, @samp{m68030}, 3847@samp{m68040}, @samp{m68060}, @samp{m68020-40} and @samp{m68020-60}. 3848 3849GCC requires at least binutils version 2.17 on these targets. 3850 3851@html 3852<hr /> 3853@end html 3854@heading @anchor{m68k-x-uclinux}m68k-*-uclinux 3855GCC 4.3 changed the uClinux configuration so that it uses the 3856@samp{m68k-linux-gnu} ABI rather than the @samp{m68k-elf} ABI. 3857It also added improved support for C++ and flat shared libraries, 3858both of which were ABI changes. 3859 3860 3861@html 3862<hr /> 3863@end html 3864@heading @anchor{mep-x-elf}mep-*-elf 3865Toshiba Media embedded Processor. 3866This configuration is intended for embedded systems. 3867 3868@html 3869<hr /> 3870@end html 3871@heading @anchor{microblaze-x-elf}microblaze-*-elf 3872Xilinx MicroBlaze processor. 3873This configuration is intended for embedded systems. 3874 3875@html 3876<hr /> 3877@end html 3878@heading @anchor{mips-x-x}mips-*-* 3879If on a MIPS system you get an error message saying ``does not have gp 3880sections for all it's [sic] sectons [sic]'', don't worry about it. This 3881happens whenever you use GAS with the MIPS linker, but there is not 3882really anything wrong, and it is okay to use the output file. You can 3883stop such warnings by installing the GNU linker. 3884 3885It would be nice to extend GAS to produce the gp tables, but they are 3886optional, and there should not be a warning about their absence. 3887 3888The libstdc++ atomic locking routines for MIPS targets requires MIPS II 3889and later. A patch went in just after the GCC 3.3 release to 3890make @samp{mips*-*-*} use the generic implementation instead. You can also 3891configure for @samp{mipsel-elf} as a workaround. The 3892@samp{mips*-*-linux*} target continues to use the MIPS II routines. More 3893work on this is expected in future releases. 3894 3895@c If you make --with-llsc the default for another target, please also 3896@c update the description of the --with-llsc option. 3897 3898The built-in @code{__sync_*} functions are available on MIPS II and 3899later systems and others that support the @samp{ll}, @samp{sc} and 3900@samp{sync} instructions. This can be overridden by passing 3901@option{--with-llsc} or @option{--without-llsc} when configuring GCC. 3902Since the Linux kernel emulates these instructions if they are 3903missing, the default for @samp{mips*-*-linux*} targets is 3904@option{--with-llsc}. The @option{--with-llsc} and 3905@option{--without-llsc} configure options may be overridden at compile 3906time by passing the @option{-mllsc} or @option{-mno-llsc} options to 3907the compiler. 3908 3909MIPS systems check for division by zero (unless 3910@option{-mno-check-zero-division} is passed to the compiler) by 3911generating either a conditional trap or a break instruction. Using 3912trap results in smaller code, but is only supported on MIPS II and 3913later. Also, some versions of the Linux kernel have a bug that 3914prevents trap from generating the proper signal (@code{SIGFPE}). To enable 3915the use of break, use the @option{--with-divide=breaks} 3916@command{configure} option when configuring GCC@. The default is to 3917use traps on systems that support them. 3918 3919The assembler from GNU binutils 2.17 and earlier has a bug in the way 3920it sorts relocations for REL targets (o32, o64, EABI). This can cause 3921bad code to be generated for simple C++ programs. Also the linker 3922from GNU binutils versions prior to 2.17 has a bug which causes the 3923runtime linker stubs in very large programs, like @file{libgcj.so}, to 3924be incorrectly generated. GNU Binutils 2.18 and later (and snapshots 3925made after Nov. 9, 2006) should be free from both of these problems. 3926 3927@html 3928<hr /> 3929@end html 3930@heading @anchor{mips-sgi-irix5}mips-sgi-irix5 3931 3932Support for IRIX 5 has been removed in GCC 4.6. 3933 3934@html 3935<hr /> 3936@end html 3937@heading @anchor{mips-sgi-irix6}mips-sgi-irix6 3938 3939Support for IRIX 6.5 has been removed in GCC 4.8. Support for IRIX 6 3940releases before 6.5 has been removed in GCC 4.6, as well as support for 3941the O32 ABI. 3942 3943@html 3944<hr /> 3945@end html 3946@heading @anchor{moxie-x-elf}moxie-*-elf 3947The moxie processor. 3948 3949@html 3950<hr /> 3951@end html 3952@heading @anchor{powerpc-x-x}powerpc-*-* 3953 3954You can specify a default version for the @option{-mcpu=@var{cpu_type}} 3955switch by using the configure option @option{--with-cpu-@var{cpu_type}}. 3956 3957You will need 3958@uref{ftp://ftp.kernel.org/pub/linux/devel/binutils,,binutils 2.15} 3959or newer for a working GCC@. 3960 3961@html 3962<hr /> 3963@end html 3964@heading @anchor{powerpc-x-darwin}powerpc-*-darwin* 3965PowerPC running Darwin (Mac OS X kernel). 3966 3967Pre-installed versions of Mac OS X may not include any developer tools, 3968meaning that you will not be able to build GCC from source. Tool 3969binaries are available at 3970@uref{http://opensource.apple.com/}. 3971 3972This version of GCC requires at least cctools-590.36. The 3973cctools-590.36 package referenced from 3974@uref{http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html} will not work 3975on systems older than 10.3.9 (aka darwin7.9.0). 3976 3977@html 3978<hr /> 3979@end html 3980@heading @anchor{powerpc-x-elf}powerpc-*-elf 3981PowerPC system in big endian mode, running System V.4. 3982 3983@html 3984<hr /> 3985@end html 3986@heading @anchor{powerpc-x-linux-gnu}powerpc*-*-linux-gnu* 3987 3988PowerPC system in big endian mode running Linux. 3989 3990@html 3991<hr /> 3992@end html 3993@heading @anchor{powerpc-x-netbsd}powerpc-*-netbsd* 3994PowerPC system in big endian mode running NetBSD@. 3995 3996@html 3997<hr /> 3998@end html 3999@heading @anchor{powerpc-x-eabisim}powerpc-*-eabisim 4000Embedded PowerPC system in big endian mode for use in running under the 4001PSIM simulator. 4002 4003@html 4004<hr /> 4005@end html 4006@heading @anchor{powerpc-x-eabi}powerpc-*-eabi 4007Embedded PowerPC system in big endian mode. 4008 4009@html 4010<hr /> 4011@end html 4012@heading @anchor{powerpcle-x-elf}powerpcle-*-elf 4013PowerPC system in little endian mode, running System V.4. 4014 4015@html 4016<hr /> 4017@end html 4018@heading @anchor{powerpcle-x-eabisim}powerpcle-*-eabisim 4019Embedded PowerPC system in little endian mode for use in running under 4020the PSIM simulator. 4021 4022@html 4023<hr /> 4024@end html 4025@heading @anchor{powerpcle-x-eabi}powerpcle-*-eabi 4026Embedded PowerPC system in little endian mode. 4027 4028@html 4029<hr /> 4030@end html 4031@heading @anchor{rl78-x-elf}rl78-*-elf 4032The Renesas RL78 processor. 4033This configuration is intended for embedded systems. 4034 4035@html 4036<hr /> 4037@end html 4038@heading @anchor{rx-x-elf}rx-*-elf 4039The Renesas RX processor. See 4040@uref{http://eu.renesas.com/fmwk.jsp?cnt=rx600_series_landing.jsp&fp=/products/mpumcu/rx_family/rx600_series} 4041for more information about this processor. 4042 4043@html 4044<hr /> 4045@end html 4046@heading @anchor{s390-x-linux}s390-*-linux* 4047S/390 system running GNU/Linux for S/390@. 4048 4049@html 4050<hr /> 4051@end html 4052@heading @anchor{s390x-x-linux}s390x-*-linux* 4053zSeries system (64-bit) running GNU/Linux for zSeries@. 4054 4055@html 4056<hr /> 4057@end html 4058@heading @anchor{s390x-ibm-tpf}s390x-ibm-tpf* 4059zSeries system (64-bit) running TPF@. This platform is 4060supported as cross-compilation target only. 4061 4062@html 4063<hr /> 4064@end html 4065@c Please use Solaris 2 to refer to all release of Solaris, starting 4066@c with 2.0 until 2.6, 7, 8, etc. Solaris 1 was a marketing name for 4067@c SunOS 4 releases which we don't use to avoid confusion. Solaris 4068@c alone is too unspecific and must be avoided. 4069@heading @anchor{x-x-solaris2}*-*-solaris2* 4070 4071Support for Solaris 8 has removed in GCC 4.8. Support for Solaris 7 has 4072been removed in GCC 4.6. 4073 4074Sun does not ship a C compiler with Solaris 2 before Solaris 10, though 4075you can download the Sun Studio compilers for free. In Solaris 10 and 407611, GCC 3.4.3 is available as @command{/usr/sfw/bin/gcc}. Solaris 11 4077also provides GCC 4.5.2 as @command{/usr/gcc/4.5/bin/gcc}. Alternatively, 4078you can install a pre-built GCC to bootstrap and install GCC. See the 4079@uref{binaries.html,,binaries page} for details. 4080 4081The Solaris 2 @command{/bin/sh} will often fail to configure 4082@samp{libstdc++-v3}, @samp{boehm-gc} or @samp{libjava}. We therefore 4083recommend using the following initial sequence of commands 4084 4085@smallexample 4086% CONFIG_SHELL=/bin/ksh 4087% export CONFIG_SHELL 4088@end smallexample 4089 4090@noindent 4091and proceed as described in @uref{configure.html,,the configure instructions}. 4092In addition we strongly recommend specifying an absolute path to invoke 4093@command{@var{srcdir}/configure}. 4094 4095Solaris 2 comes with a number of optional OS packages. Some of these 4096are needed to use GCC fully, namely @code{SUNWarc}, 4097@code{SUNWbtool}, @code{SUNWesu}, @code{SUNWhea}, @code{SUNWlibm}, 4098@code{SUNWsprot}, and @code{SUNWtoo}. If you did not install all 4099optional packages when installing Solaris 2, you will need to verify that 4100the packages that GCC needs are installed. 4101 4102To check whether an optional package is installed, use 4103the @command{pkginfo} command. To add an optional package, use the 4104@command{pkgadd} command. For further details, see the Solaris 2 4105documentation. 4106 4107Trying to use the linker and other tools in 4108@file{/usr/ucb} to install GCC has been observed to cause trouble. 4109For example, the linker may hang indefinitely. The fix is to remove 4110@file{/usr/ucb} from your @env{PATH}. 4111 4112The build process works more smoothly with the legacy Sun tools so, if you 4113have @file{/usr/xpg4/bin} in your @env{PATH}, we recommend that you place 4114@file{/usr/bin} before @file{/usr/xpg4/bin} for the duration of the build. 4115 4116We recommend the use of the Sun assembler or the GNU assembler, in 4117conjunction with the Sun linker. The GNU @command{as} 4118versions included in Solaris 10, from GNU binutils 2.15, and Solaris 11, 4119from GNU binutils 2.19, are known to work. They can be found in 4120@file{/usr/sfw/bin/gas}. Current versions of GNU binutils (2.22) 4121are known to work as well. Note that your mileage may vary 4122if you use a combination of the GNU tools and the Sun tools: while the 4123combination GNU @command{as} + Sun @command{ld} should reasonably work, 4124the reverse combination Sun @command{as} + GNU @command{ld} may fail to 4125build or cause memory corruption at runtime in some cases for C++ programs. 4126@c FIXME: still? 4127GNU @command{ld} usually works as well, although the version included in 4128Solaris 10 cannot be used due to several bugs. Again, the current 4129version (2.22) is known to work, but generally lacks platform specific 4130features, so better stay with Sun @command{ld}. To use the LTO linker 4131plugin (@option{-fuse-linker-plugin}) with GNU @command{ld}, GNU 4132binutils @emph{must} be configured with @option{--enable-largefile}. 4133 4134To enable symbol versioning in @samp{libstdc++} with Sun @command{ld}, 4135you need to have any version of GNU @command{c++filt}, which is part of 4136GNU binutils. @samp{libstdc++} symbol versioning will be disabled if no 4137appropriate version is found. Sun @command{c++filt} from the Sun Studio 4138compilers does @emph{not} work. 4139 4140Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or 4141newer: @command{g++} will complain that types are missing. These headers 4142assume that omitting the type means @code{int}; this assumption worked for 4143C90 but is wrong for C++, and is now wrong for C99 also. 4144 4145Sun bug 4927647 sometimes causes random spurious testsuite failures 4146related to missing diagnostic output. This bug doesn't affect GCC 4147itself, rather it is a kernel bug triggered by the @command{expect} 4148program which is used only by the GCC testsuite driver. When the bug 4149causes the @command{expect} program to miss anticipated output, extra 4150testsuite failures appear. 4151 4152There are patches for Solaris 9 (117171-11 or newer for 4153SPARC, 117172-11 or newer for Intel) that address this problem. 4154 4155Thread-local storage (TLS) is supported in Solaris@tie{}9, but requires 4156some patches. The @samp{libthread} patches provide the 4157@code{__tls_get_addr} (SPARC, 64-bit x86) resp.@ @code{___tls_get_addr} 4158(32-bit x86) functions. On Solaris@tie{}9, the necessary support 4159on SPARC is present since FCS, while 114432-05 or newer is required on 4160Intel. Additionally, on Solaris@tie{}9/x86, patch 113986-02 or newer is 4161required for the Sun @command{ld} and runtime linker (@command{ld.so.1}) 4162support, while Solaris@tie{}9/SPARC works since FCS. The linker 4163patches must be installed even if GNU @command{ld} is used. Sun 4164@command{as} in Solaris@tie{}9 doesn't support the necessary 4165relocations, so GNU @command{as} must be used. The @command{configure} 4166script checks for those prerequisites and automatically enables TLS 4167support if they are met. Although those minimal patch versions should 4168work, it is recommended to use the latest patch versions which include 4169additional bug fixes. 4170 4171@html 4172<hr /> 4173@end html 4174@heading @anchor{sparc-x-x}sparc*-*-* 4175 4176This section contains general configuration information for all 4177SPARC-based platforms. In addition to reading this section, please 4178read all other sections that match your target. 4179 4180Newer versions of the GNU Multiple Precision Library (GMP), the MPFR 4181library and the MPC library are known to be miscompiled by earlier 4182versions of GCC on these platforms. We therefore recommend the use 4183of the exact versions of these libraries listed as minimal versions 4184in @uref{prerequisites.html,,the prerequisites}. 4185 4186@html 4187<hr /> 4188@end html 4189@heading @anchor{sparc-sun-solaris2}sparc-sun-solaris2* 4190 4191When GCC is configured to use GNU binutils 2.14 or later, the binaries 4192produced are smaller than the ones produced using Sun's native tools; 4193this difference is quite significant for binaries containing debugging 4194information. 4195 4196Starting with Solaris 7, the operating system is capable of executing 419764-bit SPARC V9 binaries. GCC 3.1 and later properly supports 4198this; the @option{-m64} option enables 64-bit code generation. 4199However, if all you want is code tuned for the UltraSPARC CPU, you 4200should try the @option{-mtune=ultrasparc} option instead, which produces 4201code that, unlike full 64-bit code, can still run on non-UltraSPARC 4202machines. 4203 4204When configuring on a Solaris 7 or later system that is running a kernel 4205that supports only 32-bit binaries, one must configure with 4206@option{--disable-multilib}, since we will not be able to build the 420764-bit target libraries. 4208 4209GCC 3.3 and GCC 3.4 trigger code generation bugs in earlier versions of 4210the GNU compiler (especially GCC 3.0.x versions), which lead to the 4211miscompilation of the stage1 compiler and the subsequent failure of the 4212bootstrap process. A workaround is to use GCC 3.2.3 as an intermediary 4213stage, i.e.@: to bootstrap that compiler with the base compiler and then 4214use it to bootstrap the final compiler. 4215 4216GCC 3.4 triggers a code generation bug in versions 5.4 (Sun ONE Studio 7) 4217and 5.5 (Sun ONE Studio 8) of the Sun compiler, which causes a bootstrap 4218failure in form of a miscompilation of the stage1 compiler by the Sun 4219compiler. This is Sun bug 4974440. This is fixed with patch 112760-07. 4220 4221GCC 3.4 changed the default debugging format from Stabs to DWARF-2 for 422232-bit code on Solaris 7 and later. If you use the Sun assembler, this 4223change apparently runs afoul of Sun bug 4910101 (which is referenced as 4224an x86-only problem by Sun, probably because they do not use DWARF-2). 4225A symptom of the problem is that you cannot compile C++ programs like 4226@command{groff} 1.19.1 without getting messages similar to the following: 4227 4228@smallexample 4229ld: warning: relocation error: R_SPARC_UA32: @dots{} 4230 external symbolic relocation against non-allocatable section 4231 .debug_info cannot be processed at runtime: relocation ignored. 4232@end smallexample 4233 4234@noindent 4235To work around this problem, compile with @option{-gstabs+} instead of 4236plain @option{-g}. 4237 4238When configuring the GNU Multiple Precision Library (GMP), the MPFR 4239library or the MPC library on a Solaris 7 or later system, the canonical 4240target triplet must be specified as the @command{build} parameter on the 4241configure line. This target triplet can be obtained by invoking @command{./config.guess} in the toplevel source directory of GCC (and 4242not that of GMP or MPFR or MPC). For example on a Solaris 9 system: 4243 4244@smallexample 4245% ./configure --build=sparc-sun-solaris2.9 --prefix=xxx 4246@end smallexample 4247 4248@html 4249<hr /> 4250@end html 4251@heading @anchor{sparc-sun-solaris210}sparc-sun-solaris2.10 4252 4253There is a bug in older versions of the Sun assembler which breaks 4254thread-local storage (TLS). A typical error message is 4255 4256@smallexample 4257ld: fatal: relocation error: R_SPARC_TLS_LE_HIX22: file /var/tmp//ccamPA1v.o: 4258 symbol <unknown>: bad symbol type SECT: symbol type must be TLS 4259@end smallexample 4260 4261@noindent 4262This bug is fixed in Sun patch 118683-03 or later. 4263 4264@html 4265<hr /> 4266@end html 4267@heading @anchor{sparc-x-linux}sparc-*-linux* 4268 4269GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4 4270or newer on this platform. All earlier binutils and glibc 4271releases mishandled unaligned relocations on @code{sparc-*-*} targets. 4272 4273 4274@html 4275<hr /> 4276@end html 4277@heading @anchor{sparc64-x-solaris2}sparc64-*-solaris2* 4278 4279When configuring the GNU Multiple Precision Library (GMP), the MPFR 4280library or the MPC library, the canonical target triplet must be specified 4281as the @command{build} parameter on the configure line. For example 4282on a Solaris 9 system: 4283 4284@smallexample 4285% ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx 4286@end smallexample 4287 4288The following compiler flags must be specified in the configure 4289step in order to bootstrap this target with the Sun compiler: 4290 4291@smallexample 4292% CC="cc -xarch=v9 -xildoff" @var{srcdir}/configure [@var{options}] [@var{target}] 4293@end smallexample 4294 4295@noindent 4296@option{-xarch=v9} specifies the SPARC-V9 architecture to the Sun toolchain 4297and @option{-xildoff} turns off the incremental linker. 4298 4299@html 4300<hr /> 4301@end html 4302@heading @anchor{sparcv9-x-solaris2}sparcv9-*-solaris2* 4303 4304This is a synonym for @samp{sparc64-*-solaris2*}. 4305 4306@html 4307<hr /> 4308@end html 4309@heading @anchor{c6x-x-x}c6x-*-* 4310 4311The C6X family of processors. This port requires binutils-2.22 or newer. 4312 4313@html 4314<hr /> 4315@end html 4316@heading @anchor{tilegx-*-linux}tilegx-*-linux* 4317 4318The TILE-Gx processor running GNU/Linux. This port requires 4319binutils-2.22 or newer. 4320 4321@html 4322<hr /> 4323@end html 4324@heading @anchor{tilepro-*-linux}tilepro-*-linux* 4325 4326The TILEPro processor running GNU/Linux. This port requires 4327binutils-2.22 or newer. 4328 4329@html 4330<hr /> 4331@end html 4332@heading @anchor{x-x-vxworks}*-*-vxworks* 4333Support for VxWorks is in flux. At present GCC supports @emph{only} the 4334very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC@. 4335We welcome patches for other architectures supported by VxWorks 5.5. 4336Support for VxWorks AE would also be welcome; we believe this is merely 4337a matter of writing an appropriate ``configlette'' (see below). We are 4338not interested in supporting older, a.out or COFF-based, versions of 4339VxWorks in GCC 3. 4340 4341VxWorks comes with an older version of GCC installed in 4342@file{@var{$WIND_BASE}/host}; we recommend you do not overwrite it. 4343Choose an installation @var{prefix} entirely outside @var{$WIND_BASE}. 4344Before running @command{configure}, create the directories @file{@var{prefix}} 4345and @file{@var{prefix}/bin}. Link or copy the appropriate assembler, 4346linker, etc.@: into @file{@var{prefix}/bin}, and set your @var{PATH} to 4347include that directory while running both @command{configure} and 4348@command{make}. 4349 4350You must give @command{configure} the 4351@option{--with-headers=@var{$WIND_BASE}/target/h} switch so that it can 4352find the VxWorks system headers. Since VxWorks is a cross compilation 4353target only, you must also specify @option{--target=@var{target}}. 4354@command{configure} will attempt to create the directory 4355@file{@var{prefix}/@var{target}/sys-include} and copy files into it; 4356make sure the user running @command{configure} has sufficient privilege 4357to do so. 4358 4359GCC's exception handling runtime requires a special ``configlette'' 4360module, @file{contrib/gthr_supp_vxw_5x.c}. Follow the instructions in 4361that file to add the module to your kernel build. (Future versions of 4362VxWorks will incorporate this module.) 4363 4364@html 4365<hr /> 4366@end html 4367@heading @anchor{x86-64-x-x}x86_64-*-*, amd64-*-* 4368 4369GCC supports the x86-64 architecture implemented by the AMD64 processor 4370(amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD@. 4371On GNU/Linux the default is a bi-arch compiler which is able to generate 4372both 64-bit x86-64 and 32-bit x86 code (via the @option{-m32} switch). 4373 4374@html 4375<hr /> 4376@end html 4377@heading @anchor{x86-64-x-solaris210}x86_64-*-solaris2.1[0-9]* 4378 4379GCC also supports the x86-64 architecture implemented by the AMD64 4380processor (@samp{amd64-*-*} is an alias for @samp{x86_64-*-*}) on 4381Solaris 10 or later. Unlike other systems, without special options a 4382bi-arch compiler is built which generates 32-bit code by default, but 4383can generate 64-bit x86-64 code with the @option{-m64} switch. Since 4384GCC 4.7, there is also configuration that defaults to 64-bit code, but 4385can generate 32-bit code with @option{-m32}. To configure and build 4386this way, you have to provide all support libraries like @file{libgmp} 4387as 64-bit code, configure with @option{--target=x86_64-pc-solaris2.1x} 4388and @samp{CC=gcc -m64}. 4389 4390@html 4391<hr /> 4392@end html 4393@heading @anchor{xtensa-x-elf}xtensa*-*-elf 4394 4395This target is intended for embedded Xtensa systems using the 4396@samp{newlib} C library. It uses ELF but does not support shared 4397objects. Designed-defined instructions specified via the 4398Tensilica Instruction Extension (TIE) language are only supported 4399through inline assembly. 4400 4401The Xtensa configuration information must be specified prior to 4402building GCC@. The @file{include/xtensa-config.h} header 4403file contains the configuration information. If you created your 4404own Xtensa configuration with the Xtensa Processor Generator, the 4405downloaded files include a customized copy of this header file, 4406which you can use to replace the default header file. 4407 4408@html 4409<hr /> 4410@end html 4411@heading @anchor{xtensa-x-linux}xtensa*-*-linux* 4412 4413This target is for Xtensa systems running GNU/Linux. It supports ELF 4414shared objects and the GNU C library (glibc). It also generates 4415position-independent code (PIC) regardless of whether the 4416@option{-fpic} or @option{-fPIC} options are used. In other 4417respects, this target is the same as the 4418@uref{#xtensa*-*-elf,,@samp{xtensa*-*-elf}} target. 4419 4420@html 4421<hr /> 4422@end html 4423@heading @anchor{windows}Microsoft Windows 4424 4425@subheading Intel 16-bit versions 4426The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not 4427supported. 4428 4429However, the 32-bit port has limited support for Microsoft 4430Windows 3.11 in the Win32s environment, as a target only. See below. 4431 4432@subheading Intel 32-bit versions 4433 4434The 32-bit versions of Windows, including Windows 95, Windows NT, Windows 4435XP, and Windows Vista, are supported by several different target 4436platforms. These targets differ in which Windows subsystem they target 4437and which C libraries are used. 4438 4439@itemize 4440@item Cygwin @uref{#x-x-cygwin,,*-*-cygwin}: Cygwin provides a user-space 4441Linux API emulation layer in the Win32 subsystem. 4442@item Interix @uref{#x-x-interix,,*-*-interix}: The Interix subsystem 4443provides native support for POSIX. 4444@item MinGW @uref{#x-x-mingw32,,*-*-mingw32}: MinGW is a native GCC port for 4445the Win32 subsystem that provides a subset of POSIX. 4446@item MKS i386-pc-mks: NuTCracker from MKS. See 4447@uref{http://www.mkssoftware.com/} for more information. 4448@end itemize 4449 4450@subheading Intel 64-bit versions 4451 4452GCC contains support for x86-64 using the mingw-w64 4453runtime library, available from @uref{http://mingw-w64.sourceforge.net/}. 4454This library should be used with the target triple x86_64-pc-mingw32. 4455 4456Presently Windows for Itanium is not supported. 4457 4458@subheading Windows CE 4459 4460Windows CE is supported as a target only on Hitachi 4461SuperH (sh-wince-pe), and MIPS (mips-wince-pe). 4462 4463@subheading Other Windows Platforms 4464 4465GCC no longer supports Windows NT on the Alpha or PowerPC. 4466 4467GCC no longer supports the Windows POSIX subsystem. However, it does 4468support the Interix subsystem. See above. 4469 4470Old target names including *-*-winnt and *-*-windowsnt are no longer used. 4471 4472PW32 (i386-pc-pw32) support was never completed, and the project seems to 4473be inactive. See @uref{http://pw32.sourceforge.net/} for more information. 4474 4475UWIN support has been removed due to a lack of maintenance. 4476 4477@html 4478<hr /> 4479@end html 4480@heading @anchor{x-x-cygwin}*-*-cygwin 4481 4482Ports of GCC are included with the 4483@uref{http://www.cygwin.com/,,Cygwin environment}. 4484 4485GCC will build under Cygwin without modification; it does not build 4486with Microsoft's C++ compiler and there are no plans to make it do so. 4487 4488The Cygwin native compiler can be configured to target any 32-bit x86 4489cpu architecture desired; the default is i686-pc-cygwin. It should be 4490used with as up-to-date a version of binutils as possible; use either 4491the latest official GNU binutils release in the Cygwin distribution, 4492or version 2.20 or above if building your own. 4493 4494@html 4495<hr /> 4496@end html 4497@heading @anchor{x-x-interix}*-*-interix 4498 4499The Interix target is used by OpenNT, Interix, Services For UNIX (SFU), 4500and Subsystem for UNIX-based Applications (SUA). Applications compiled 4501with this target run in the Interix subsystem, which is separate from 4502the Win32 subsystem. This target was last known to work in GCC 3.3. 4503 4504@html 4505<hr /> 4506@end html 4507@heading @anchor{x-x-mingw32}*-*-mingw32 4508 4509GCC will build with and support only MinGW runtime 3.12 and later. 4510Earlier versions of headers are incompatible with the new default semantics 4511of @code{extern inline} in @code{-std=c99} and @code{-std=gnu99} modes. 4512 4513@html 4514<hr /> 4515@end html 4516@heading @anchor{older}Older systems 4517 4518GCC contains support files for many older (1980s and early 45191990s) Unix variants. For the most part, support for these systems 4520has not been deliberately removed, but it has not been maintained for 4521several years and may suffer from bitrot. 4522 4523Starting with GCC 3.1, each release has a list of ``obsoleted'' systems. 4524Support for these systems is still present in that release, but 4525@command{configure} will fail unless the @option{--enable-obsolete} 4526option is given. Unless a maintainer steps forward, support for these 4527systems will be removed from the next release of GCC@. 4528 4529Support for old systems as hosts for GCC can cause problems if the 4530workarounds for compiler, library and operating system bugs affect the 4531cleanliness or maintainability of the rest of GCC@. In some cases, to 4532bring GCC up on such a system, if still possible with current GCC, may 4533require first installing an old version of GCC which did work on that 4534system, and using it to compile a more recent GCC, to avoid bugs in the 4535vendor compiler. Old releases of GCC 1 and GCC 2 are available in the 4536@file{old-releases} directory on the @uref{../mirrors.html,,GCC mirror 4537sites}. Header bugs may generally be avoided using 4538@command{fixincludes}, but bugs or deficiencies in libraries and the 4539operating system may still cause problems. 4540 4541Support for older systems as targets for cross-compilation is less 4542problematic than support for them as hosts for GCC; if an enthusiast 4543wishes to make such a target work again (including resurrecting any of 4544the targets that never worked with GCC 2, starting from the last 4545version before they were removed), patches 4546@uref{../contribute.html,,following the usual requirements} would be 4547likely to be accepted, since they should not affect the support for more 4548modern targets. 4549 4550For some systems, old versions of GNU binutils may also be useful, 4551and are available from @file{pub/binutils/old-releases} on 4552@uref{http://sourceware.org/mirrors.html,,sourceware.org mirror sites}. 4553 4554Some of the information on specific systems above relates to 4555such older systems, but much of the information 4556about GCC on such systems (which may no longer be applicable to 4557current GCC) is to be found in the GCC texinfo manual. 4558 4559@html 4560<hr /> 4561@end html 4562@heading @anchor{elf}all ELF targets (SVR4, Solaris 2, etc.) 4563 4564C++ support is significantly better on ELF targets if you use the 4565@uref{./configure.html#with-gnu-ld,,GNU linker}; duplicate copies of 4566inlines, vtables and template instantiations will be discarded 4567automatically. 4568 4569 4570@html 4571<hr /> 4572<p> 4573@end html 4574@ifhtml 4575@uref{./index.html,,Return to the GCC Installation page} 4576@end ifhtml 4577@end ifset 4578 4579@c ***Old documentation****************************************************** 4580@ifset oldhtml 4581@include install-old.texi 4582@html 4583<hr /> 4584<p> 4585@end html 4586@ifhtml 4587@uref{./index.html,,Return to the GCC Installation page} 4588@end ifhtml 4589@end ifset 4590 4591@c ***GFDL******************************************************************** 4592@ifset gfdlhtml 4593@include fdl.texi 4594@html 4595<hr /> 4596<p> 4597@end html 4598@ifhtml 4599@uref{./index.html,,Return to the GCC Installation page} 4600@end ifhtml 4601@end ifset 4602 4603@c *************************************************************************** 4604@c Part 6 The End of the Document 4605@ifinfo 4606@comment node-name, next, previous, up 4607@node Concept Index, , GNU Free Documentation License, Top 4608@end ifinfo 4609 4610@ifinfo 4611@unnumbered Concept Index 4612 4613@printindex cp 4614 4615@contents 4616@end ifinfo 4617@bye 4618