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