1<html lang="en"> 2<head> 3<title>Host/Target specific installation notes for GCC</title> 4<meta http-equiv="Content-Type" content="text/html"> 5<meta name="description" content="Host/Target specific installation notes for GCC"> 6<meta name="generator" content="makeinfo 4.12"> 7<link title="Top" rel="top" href="#Top"> 8<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> 9<!-- 10Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 111998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 122009, 2010, 2011 Free Software Foundation, Inc. 13 14 Permission is granted to copy, distribute and/or modify this document 15under the terms of the GNU Free Documentation License, Version 1.2 or 16any later version published by the Free Software Foundation; with no 17Invariant Sections, the Front-Cover texts being (a) (see below), and 18with the Back-Cover Texts being (b) (see below). A copy of the 19license is included in the section entitled "GNU Free Documentation License". 20 21(a) The FSF's Front-Cover Text is: 22 23 A GNU Manual 24 25(b) The FSF's Back-Cover Text is: 26 27 You have freedom to copy and modify this GNU Manual, like GNU 28 software. Copies published by the Free Software Foundation raise 29 funds for GNU development.--> 30<meta http-equiv="Content-Style-Type" content="text/css"> 31<style type="text/css"><!-- 32 pre.display { font-family:inherit } 33 pre.format { font-family:inherit } 34 pre.smalldisplay { font-family:inherit; font-size:smaller } 35 pre.smallformat { font-family:inherit; font-size:smaller } 36 pre.smallexample { font-size:smaller } 37 pre.smalllisp { font-size:smaller } 38 span.sc { font-variant:small-caps } 39 span.roman { font-family:serif; font-weight:normal; } 40 span.sansserif { font-family:sans-serif; font-weight:normal; } 41--></style> 42</head> 43<body> 44<h1 class="settitle">Host/Target specific installation notes for GCC</h1> 45<a name="index-Specific-1"></a><a name="index-Specific-installation-notes-2"></a><a name="index-Target-specific-installation-3"></a><a name="index-Host-specific-installation-4"></a><a name="index-Target-specific-installation-notes-5"></a> 46Please read this document carefully <em>before</em> installing the 47GNU Compiler Collection on your machine. 48 49 <p>Note that this list of install notes is <em>not</em> a list of supported 50hosts or targets. Not all supported hosts and targets are listed 51here, only the ones that require host-specific or target-specific 52information are. 53 54 <ul> 55<li><a href="#alpha-x-x">alpha*-*-*</a> 56<li><a href="#alpha-dec-osf">alpha*-dec-osf*</a> 57<li><a href="#arc-x-elf">arc-*-elf</a> 58<li><a href="#arm-x-elf">arm-*-elf</a> 59<li><a href="#avr">avr</a> 60<li><a href="#bfin">Blackfin</a> 61<li><a href="#dos">DOS</a> 62<li><a href="#x-x-freebsd">*-*-freebsd*</a> 63<li><a href="#h8300-hms">h8300-hms</a> 64<li><a href="#hppa-hp-hpux">hppa*-hp-hpux*</a> 65<li><a href="#hppa-hp-hpux10">hppa*-hp-hpux10</a> 66<li><a href="#hppa-hp-hpux11">hppa*-hp-hpux11</a> 67<li><a href="#x-x-linux-gnu">*-*-linux-gnu</a> 68<li><a href="#ix86-x-linux">i?86-*-linux*</a> 69<li><a href="#ix86-x-solaris289">i?86-*-solaris2.[89]</a> 70<li><a href="#ix86-x-solaris210">i?86-*-solaris2.10</a> 71<li><a href="#ia64-x-linux">ia64-*-linux</a> 72<li><a href="#ia64-x-hpux">ia64-*-hpux*</a> 73<li><a href="#x-ibm-aix">*-ibm-aix*</a> 74<li><a href="#iq2000-x-elf">iq2000-*-elf</a> 75<li><a href="#lm32-x-elf">lm32-*-elf</a> 76<li><a href="#lm32-x-uclinux">lm32-*-uclinux</a> 77<li><a href="#m32c-x-elf">m32c-*-elf</a> 78<li><a href="#m32r-x-elf">m32r-*-elf</a> 79<li><a href="#m6811-elf">m6811-elf</a> 80<li><a href="#m6812-elf">m6812-elf</a> 81<li><a href="#m68k-x-x">m68k-*-*</a> 82<li><a href="#m68k-uclinux">m68k-uclinux</a> 83<li><a href="#mep-x-elf">mep-*-elf</a> 84<li><a href="#mips-x-x">mips-*-*</a> 85<li><a href="#mips-sgi-irix5">mips-sgi-irix5</a> 86<li><a href="#mips-sgi-irix6">mips-sgi-irix6</a> 87<li><a href="#powerpc-x-x">powerpc*-*-*</a> 88<li><a href="#powerpc-x-darwin">powerpc-*-darwin*</a> 89<li><a href="#powerpc-x-elf">powerpc-*-elf</a> 90<li><a href="#powerpc-x-linux-gnu">powerpc*-*-linux-gnu*</a> 91<li><a href="#powerpc-x-netbsd">powerpc-*-netbsd*</a> 92<li><a href="#powerpc-x-eabisim">powerpc-*-eabisim</a> 93<li><a href="#powerpc-x-eabi">powerpc-*-eabi</a> 94<li><a href="#powerpcle-x-elf">powerpcle-*-elf</a> 95<li><a href="#powerpcle-x-eabisim">powerpcle-*-eabisim</a> 96<li><a href="#powerpcle-x-eabi">powerpcle-*-eabi</a> 97<li><a href="#s390-x-linux">s390-*-linux*</a> 98<li><a href="#s390x-x-linux">s390x-*-linux*</a> 99<li><a href="#s390x-ibm-tpf">s390x-ibm-tpf*</a> 100<li><a href="#x-x-solaris2">*-*-solaris2*</a> 101<li><a href="#sparc-sun-solaris2">sparc-sun-solaris2*</a> 102<li><a href="#sparc-sun-solaris27">sparc-sun-solaris2.7</a> 103<li><a href="#sparc-sun-solaris210">sparc-sun-solaris2.10</a> 104<li><a href="#sparc-x-linux">sparc-*-linux*</a> 105<li><a href="#sparc64-x-solaris2">sparc64-*-solaris2*</a> 106<li><a href="#sparcv9-x-solaris2">sparcv9-*-solaris2*</a> 107<li><a href="#x-x-vxworks">*-*-vxworks*</a> 108<li><a href="#x86-64-x-x">x86_64-*-*</a> amd64-*-* 109<li><a href="#xtensa-x-elf">xtensa*-*-elf</a> 110<li><a href="#xtensa-x-linux">xtensa*-*-linux*</a> 111<li><a href="#windows">Microsoft Windows</a> 112<li><a href="#x-x-cygwin">*-*-cygwin</a> 113<li><a href="#x-x-interix">*-*-interix</a> 114<li><a href="#x-x-mingw32">*-*-mingw32</a> 115<li><a href="#os2">OS/2</a> 116<li><a href="#older">Older systems</a> 117</ul> 118 119 <ul> 120<li><a href="#elf">all ELF targets</a> (SVR4, Solaris 2, etc.) 121</ul> 122 123 <p><!-- -------- host/target specific issues start here ---------------- --> 124<hr /> 125 126<h3 class="heading"><a name="TOC0"></a><a name="alpha_002dx_002dx"></a>alpha*-*-*</h3> 127 128<p>This section contains general configuration information for all 129alpha-based platforms using ELF (in particular, ignore this section for 130DEC OSF/1, Digital UNIX and Tru64 UNIX). In addition to reading this 131section, please read all other sections that match your target. 132 133 <p>We require binutils 2.11.2 or newer. 134Previous binutils releases had a number of problems with DWARF 2 135debugging information, not the least of which is incorrect linking of 136shared libraries. 137 138 <p><hr /> 139 140<h3 class="heading"><a name="TOC1"></a><a name="alpha_002ddec_002dosf"></a>alpha*-dec-osf*</h3> 141 142<p>Systems using processors that implement the DEC Alpha architecture and 143are running the DEC/Compaq/HP Unix (DEC OSF/1, Digital UNIX, or Compaq/HP 144Tru64 UNIX) operating system, for example the DEC Alpha AXP systems. 145 146 <p>As of GCC 3.2, versions before <code>alpha*-dec-osf4</code> are no longer 147supported. (These are the versions which identify themselves as DEC 148OSF/1.) As of GCC 4.5, support for Tru64 UNIX V4.0 and V5.0 has been 149obsoleted, but can still be enabled by configuring with 150<samp><span class="option">--enable-obsolete</span></samp>. Support will be removed in GCC 4.6. 151 152 <p>On Tru64 UNIX, virtual memory exhausted bootstrap failures 153may be fixed by reconfiguring Kernel Virtual Memory and Swap parameters 154per the <samp><span class="command">/usr/sbin/sys_check</span></samp> Tuning Suggestions, 155or applying the patch in 156<a href="http://gcc.gnu.org/ml/gcc/2002-08/msg00822.html">http://gcc.gnu.org/ml/gcc/2002-08/msg00822.html</a>. Depending on 157the OS version used, you need a data segment size between 512 MB and 1581 GB, so simply use <samp><span class="command">ulimit -Sd unlimited</span></samp>. 159 160 <p>As of GNU binutils 2.20.1, neither GNU <samp><span class="command">as</span></samp> nor GNU <samp><span class="command">ld</span></samp> 161are supported on Tru64 UNIX, so you must not configure GCC with 162<samp><span class="option">--with-gnu-as</span></samp> or <samp><span class="option">--with-gnu-ld</span></samp>. 163 164 <p>GCC writes a ‘<samp><span class="samp">.verstamp</span></samp>’ directive to the assembler output file 165unless it is built as a cross-compiler. It gets the version to use from 166the system header file <samp><span class="file">/usr/include/stamp.h</span></samp>. If you install a 167new version of Tru64 UNIX, you should rebuild GCC to pick up the new version 168stamp. 169 170 <p>GCC now supports both the native (ECOFF) debugging format used by DBX 171and GDB and an encapsulated STABS format for use only with GDB. See the 172discussion of the <samp><span class="option">--with-stabs</span></samp> option of <samp><span class="file">configure</span></samp> above 173for more information on these formats and how to select them. 174<!-- FIXME: does this work at all? If so, perhaps make default. --> 175 176 <p>There is a bug in DEC's assembler that produces incorrect line numbers 177for ECOFF format when the ‘<samp><span class="samp">.align</span></samp>’ directive is used. To work 178around this problem, GCC will not emit such alignment directives 179while writing ECOFF format debugging information even if optimization is 180being performed. Unfortunately, this has the very undesirable 181side-effect that code addresses when <samp><span class="option">-O</span></samp> is specified are 182different depending on whether or not <samp><span class="option">-g</span></samp> is also specified. 183 184 <p>To avoid this behavior, specify <samp><span class="option">-gstabs+</span></samp> and use GDB instead of 185DBX. DEC is now aware of this problem with the assembler and hopes to 186provide a fix shortly. 187 188<!-- FIXME: still applicable? --> 189 <p><hr /> 190 191<h3 class="heading"><a name="TOC2"></a><a name="arc_002dx_002delf"></a>arc-*-elf</h3> 192 193<p>Argonaut ARC processor. 194This configuration is intended for embedded systems. 195 196 <p><hr /> 197 198<h3 class="heading"><a name="TOC3"></a><a name="arm_002dx_002delf"></a>arm-*-elf</h3> 199 200<p>ARM-family processors. Subtargets that use the ELF object format 201require GNU binutils 2.13 or newer. Such subtargets include: 202<code>arm-*-freebsd</code>, <code>arm-*-netbsdelf</code>, <code>arm-*-*linux</code> 203and <code>arm-*-rtems</code>. 204 205 <p><hr /> 206 207<h3 class="heading"><a name="TOC4"></a><a name="avr"></a>avr</h3> 208 209<p>ATMEL AVR-family micro controllers. These are used in embedded 210applications. There are no standard Unix configurations. 211See “AVR Options” in the main manual 212for the list of supported MCU types. 213 214 <p>Use ‘<samp><span class="samp">configure --target=avr --enable-languages="c"</span></samp>’ to configure GCC. 215 216 <p>Further installation notes and other useful information about AVR tools 217can also be obtained from: 218 219 <ul> 220<li><a href="http://www.nongnu.org/avr/">http://www.nongnu.org/avr/</a> 221<li><a href="http://www.amelek.gda.pl/avr/">http://www.amelek.gda.pl/avr/</a> 222</ul> 223 224 <p>We <em>strongly</em> recommend using binutils 2.13 or newer. 225 226 <p>The following error: 227<pre class="smallexample"> Error: register required 228</pre> 229 <p>indicates that you should upgrade to a newer version of the binutils. 230 231 <p><hr /> 232 233<h3 class="heading"><a name="TOC5"></a><a name="bfin"></a>Blackfin</h3> 234 235<p>The Blackfin processor, an Analog Devices DSP. 236See “Blackfin Options” in the main manual 237 238 <p>More information, and a version of binutils with support for this processor, 239is available at <a href="http://blackfin.uclinux.org">http://blackfin.uclinux.org</a> 240 241 <p><hr /> 242 243<h3 class="heading"><a name="TOC6"></a><a name="cris"></a>CRIS</h3> 244 245<p>CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip 246series. These are used in embedded applications. 247 248 <p>See “CRIS Options” in the main manual 249for a list of CRIS-specific options. 250 251 <p>There are a few different CRIS targets: 252 <dl> 253<dt><code>cris-axis-elf</code><dd>Mainly for monolithic embedded systems. Includes a multilib for the 254‘<samp><span class="samp">v10</span></samp>’ core used in ‘<samp><span class="samp">ETRAX 100 LX</span></samp>’. 255<br><dt><code>cris-axis-linux-gnu</code><dd>A GNU/Linux port for the CRIS architecture, currently targeting 256‘<samp><span class="samp">ETRAX 100 LX</span></samp>’ by default. 257</dl> 258 259 <p>For <code>cris-axis-elf</code> you need binutils 2.11 260or newer. For <code>cris-axis-linux-gnu</code> you need binutils 2.12 or newer. 261 262 <p>Pre-packaged tools can be obtained from 263<a href="ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/">ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/</a>. More 264information about this platform is available at 265<a href="http://developer.axis.com/">http://developer.axis.com/</a>. 266 267 <p><hr /> 268 269<h3 class="heading"><a name="TOC7"></a><a name="crx"></a>CRX</h3> 270 271<p>The CRX CompactRISC architecture is a low-power 32-bit architecture with 272fast context switching and architectural extensibility features. 273 274 <p>See “CRX Options” in the main manual for a list of CRX-specific options. 275 276 <p>Use ‘<samp><span class="samp">configure --target=crx-elf --enable-languages=c,c++</span></samp>’ to configure 277GCC for building a CRX cross-compiler. The option ‘<samp><span class="samp">--target=crx-elf</span></samp>’ 278is also used to build the ‘<samp><span class="samp">newlib</span></samp>’ C library for CRX. 279 280 <p>It is also possible to build libstdc++-v3 for the CRX architecture. This 281needs to be done in a separate step with the following configure settings: 282‘<samp><span class="samp">gcc/libstdc++-v3/configure --host=crx-elf --with-newlib 283--enable-sjlj-exceptions --enable-cxx-flags='-fexceptions -frtti'</span></samp>’ 284 285 <p><hr /> 286 287<h3 class="heading"><a name="TOC8"></a><a name="dos"></a>DOS</h3> 288 289<p>Please have a look at the <a href="binaries.html">binaries page</a>. 290 291 <p>You cannot install GCC by itself on MSDOS; it will not compile under 292any MSDOS compiler except itself. You need to get the complete 293compilation package DJGPP, which includes binaries as well as sources, 294and includes all the necessary compilation tools and libraries. 295 296 <p><hr /> 297 298<h3 class="heading"><a name="TOC9"></a><a name="x_002dx_002dfreebsd"></a>*-*-freebsd*</h3> 299 300<p>Support for FreeBSD 1 was discontinued in GCC 3.2. Support for 301FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was 302discontinued in GCC 4.0. 303 304 <p>In GCC 4.5, we enabled the use of <code>dl_iterate_phdr</code> inside boehm-gc on 305FreeBSD 7 or later. In order to better match the configuration of the 306FreeBSD system compiler: We also enabled the check to see if libc 307provides SSP support (which it does on FreeBSD 7), the use of 308<code>dl_iterate_phdr</code> inside <samp><span class="file">libgcc_s.so.1</span></samp> (on FreeBSD 7 or later) 309and the use of <code>__cxa_atexit</code> by default (on FreeBSD 6 or later). 310 311 <p>We support FreeBSD using the ELF file format with DWARF 2 debugging 312for all CPU architectures. You may use <samp><span class="option">-gstabs</span></samp> instead of 313<samp><span class="option">-g</span></samp>, if you really want the old debugging format. There are 314no known issues with mixing object files and libraries with different 315debugging formats. Otherwise, this release of GCC should now match 316more of the configuration used in the stock FreeBSD configuration of 317GCC. In particular, <samp><span class="option">--enable-threads</span></samp> is now configured by 318default. However, as a general user, do not attempt to replace the 319system compiler with this release. Known to bootstrap and check with 320good results on FreeBSD 7.2-STABLE. In the past, known to bootstrap 321and check with good results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4, 3224.5, 4.8, 4.9 and 5-CURRENT. 323 324 <p>The version of binutils installed in <samp><span class="file">/usr/bin</span></samp> probably works 325with this release of GCC. Bootstrapping against the latest GNU 326binutils and/or the version found in <samp><span class="file">/usr/ports/devel/binutils</span></samp> has 327been known to enable additional features and improve overall testsuite 328results. However, it is currently known that boehm-gc (which itself 329is required for java) may not configure properly on FreeBSD prior to 330the FreeBSD 7.0 release with GNU binutils after 2.16.1. 331 332 <p><hr /> 333 334<h3 class="heading"><a name="TOC10"></a><a name="h8300_002dhms"></a>h8300-hms</h3> 335 336<p>Renesas H8/300 series of processors. 337 338 <p>Please have a look at the <a href="binaries.html">binaries page</a>. 339 340 <p>The calling convention and structure layout has changed in release 2.6. 341All code must be recompiled. The calling convention now passes the 342first three arguments in function calls in registers. Structures are no 343longer a multiple of 2 bytes. 344 345 <p><hr /> 346 347<h3 class="heading"><a name="TOC11"></a><a name="hppa_002dhp_002dhpux"></a>hppa*-hp-hpux*</h3> 348 349<p>Support for HP-UX version 9 and older was discontinued in GCC 3.4. 350 351 <p>We require using gas/binutils on all hppa platforms. Version 2.19 or 352later is recommended. 353 354 <p>It may be helpful to configure GCC with the 355<a href="./configure.html#with-gnu-as"><samp><span class="option">--with-gnu-as</span></samp></a> and 356<samp><span class="option">--with-as=...</span></samp> options to ensure that GCC can find GAS. 357 358 <p>The HP assembler should not be used with GCC. It is rarely tested and may 359not work. It shouldn't be used with any languages other than C due to its 360many limitations. 361 362 <p>Specifically, <samp><span class="option">-g</span></samp> does not work (HP-UX uses a peculiar debugging 363format which GCC does not know about). It also inserts timestamps 364into each object file it creates, causing the 3-stage comparison test to 365fail during a bootstrap. You should be able to continue by saying 366‘<samp><span class="samp">make all-host all-target</span></samp>’ after getting the failure from ‘<samp><span class="samp">make</span></samp>’. 367 368 <p>Various GCC features are not supported. For example, it does not support weak 369symbols or alias definitions. As a result, explicit template instantiations 370are required when using C++. This makes it difficult if not impossible to 371build many C++ applications. 372 373 <p>There are two default scheduling models for instructions. These are 374PROCESSOR_7100LC and PROCESSOR_8000. They are selected from the pa-risc 375architecture specified for the target machine when configuring. 376PROCESSOR_8000 is the default. PROCESSOR_7100LC is selected when 377the target is a ‘<samp><span class="samp">hppa1*</span></samp>’ machine. 378 379 <p>The PROCESSOR_8000 model is not well suited to older processors. Thus, 380it is important to completely specify the machine architecture when 381configuring if you want a model other than PROCESSOR_8000. The macro 382TARGET_SCHED_DEFAULT can be defined in BOOT_CFLAGS if a different 383default scheduling model is desired. 384 385 <p>As of GCC 4.0, GCC uses the UNIX 95 namespace for HP-UX 10.10 386through 11.00, and the UNIX 98 namespace for HP-UX 11.11 and later. 387This namespace change might cause problems when bootstrapping with 388an earlier version of GCC or the HP compiler as essentially the same 389namespace is required for an entire build. This problem can be avoided 390in a number of ways. With HP cc, <samp><span class="env">UNIX_STD</span></samp> can be set to ‘<samp><span class="samp">95</span></samp>’ 391or ‘<samp><span class="samp">98</span></samp>’. Another way is to add an appropriate set of predefines 392to <samp><span class="env">CC</span></samp>. The description for the <samp><span class="option">munix=</span></samp> option contains 393a list of the predefines used with each standard. 394 395 <p>More specific information to ‘<samp><span class="samp">hppa*-hp-hpux*</span></samp>’ targets follows. 396 397 <p><hr /> 398 399<h3 class="heading"><a name="TOC12"></a><a name="hppa_002dhp_002dhpux10"></a>hppa*-hp-hpux10</h3> 400 401<p>For hpux10.20, we <em>highly</em> recommend you pick up the latest sed patch 402<code>PHCO_19798</code> from HP. 403 404 <p>The C++ ABI has changed incompatibly in GCC 4.0. COMDAT subspaces are 405used for one-only code and data. This resolves many of the previous 406problems in using C++ on this target. However, the ABI is not compatible 407with the one implemented under HP-UX 11 using secondary definitions. 408 409 <p><hr /> 410 411<h3 class="heading"><a name="TOC13"></a><a name="hppa_002dhp_002dhpux11"></a>hppa*-hp-hpux11</h3> 412 413<p>GCC 3.0 and up support HP-UX 11. GCC 2.95.x is not supported and cannot 414be used to compile GCC 3.0 and up. 415 416 <p>The libffi and libjava libraries haven't been ported to 64-bit HP-UX and don't build. 417 418 <p>Refer to <a href="binaries.html">binaries</a> for information about obtaining 419precompiled GCC binaries for HP-UX. Precompiled binaries must be obtained 420to build the Ada language as it can't be bootstrapped using C. Ada is 421only available for the 32-bit PA-RISC runtime. 422 423 <p>Starting with GCC 3.4 an ISO C compiler is required to bootstrap. The 424bundled compiler supports only traditional C; you will need either HP's 425unbundled compiler, or a binary distribution of GCC. 426 427 <p>It is possible to build GCC 3.3 starting with the bundled HP compiler, 428but the process requires several steps. GCC 3.3 can then be used to 429build later versions. The fastjar program contains ISO C code and 430can't be built with the HP bundled compiler. This problem can be 431avoided by not building the Java language. For example, use the 432<samp><span class="option">--enable-languages="c,c++,f77,objc"</span></samp> option in your configure 433command. 434 435 <p>There are several possible approaches to building the distribution. 436Binutils can be built first using the HP tools. Then, the GCC 437distribution can be built. The second approach is to build GCC 438first using the HP tools, then build binutils, then rebuild GCC. 439There have been problems with various binary distributions, so it 440is best not to start from a binary distribution. 441 442 <p>On 64-bit capable systems, there are two distinct targets. Different 443installation prefixes must be used if both are to be installed on 444the same system. The ‘<samp><span class="samp">hppa[1-2]*-hp-hpux11*</span></samp>’ target generates code 445for the 32-bit PA-RISC runtime architecture and uses the HP linker. 446The ‘<samp><span class="samp">hppa64-hp-hpux11*</span></samp>’ target generates 64-bit code for the 447PA-RISC 2.0 architecture. 448 449 <p>The script config.guess now selects the target type based on the compiler 450detected during configuration. You must define <samp><span class="env">PATH</span></samp> or <samp><span class="env">CC</span></samp> so 451that configure finds an appropriate compiler for the initial bootstrap. 452When <samp><span class="env">CC</span></samp> is used, the definition should contain the options that are 453needed whenever <samp><span class="env">CC</span></samp> is used. 454 455 <p>Specifically, options that determine the runtime architecture must be 456in <samp><span class="env">CC</span></samp> to correctly select the target for the build. It is also 457convenient to place many other compiler options in <samp><span class="env">CC</span></samp>. For example, 458<samp><span class="env">CC="cc -Ac +DA2.0W -Wp,-H16376 -D_CLASSIC_TYPES -D_HPUX_SOURCE"</span></samp> 459can be used to bootstrap the GCC 3.3 branch with the HP compiler in 46064-bit K&R/bundled mode. The <samp><span class="option">+DA2.0W</span></samp> option will result in 461the automatic selection of the ‘<samp><span class="samp">hppa64-hp-hpux11*</span></samp>’ target. The 462macro definition table of cpp needs to be increased for a successful 463build with the HP compiler. _CLASSIC_TYPES and _HPUX_SOURCE need to 464be defined when building with the bundled compiler, or when using the 465<samp><span class="option">-Ac</span></samp> option. These defines aren't necessary with <samp><span class="option">-Ae</span></samp>. 466 467 <p>It is best to explicitly configure the ‘<samp><span class="samp">hppa64-hp-hpux11*</span></samp>’ target 468with the <samp><span class="option">--with-ld=...</span></samp> option. This overrides the standard 469search for ld. The two linkers supported on this target require different 470commands. The default linker is determined during configuration. As a 471result, it's not possible to switch linkers in the middle of a GCC build. 472This has been reported to sometimes occur in unified builds of binutils 473and GCC. 474 475 <p>A recent linker patch must be installed for the correct operation of 476GCC 3.3 and later. <code>PHSS_26559</code> and <code>PHSS_24304</code> are the 477oldest linker patches that are known to work. They are for HP-UX 47811.00 and 11.11, respectively. <code>PHSS_24303</code>, the companion to 479<code>PHSS_24304</code>, might be usable but it hasn't been tested. These 480patches have been superseded. Consult the HP patch database to obtain 481the currently recommended linker patch for your system. 482 483 <p>The patches are necessary for the support of weak symbols on the 48432-bit port, and for the running of initializers and finalizers. Weak 485symbols are implemented using SOM secondary definition symbols. Prior 486to HP-UX 11, there are bugs in the linker support for secondary symbols. 487The patches correct a problem of linker core dumps creating shared 488libraries containing secondary symbols, as well as various other 489linking issues involving secondary symbols. 490 491 <p>GCC 3.3 uses the ELF DT_INIT_ARRAY and DT_FINI_ARRAY capabilities to 492run initializers and finalizers on the 64-bit port. The 32-bit port 493uses the linker <samp><span class="option">+init</span></samp> and <samp><span class="option">+fini</span></samp> options for the same 494purpose. The patches correct various problems with the +init/+fini 495options, including program core dumps. Binutils 2.14 corrects a 496problem on the 64-bit port resulting from HP's non-standard use of 497the .init and .fini sections for array initializers and finalizers. 498 499 <p>Although the HP and GNU linkers are both supported for the 500‘<samp><span class="samp">hppa64-hp-hpux11*</span></samp>’ target, it is strongly recommended that the 501HP linker be used for link editing on this target. 502 503 <p>At this time, the GNU linker does not support the creation of long 504branch stubs. As a result, it can't successfully link binaries 505containing branch offsets larger than 8 megabytes. In addition, 506there are problems linking shared libraries, linking executables 507with <samp><span class="option">-static</span></samp>, and with dwarf2 unwind and exception support. 508It also doesn't provide stubs for internal calls to global functions 509in shared libraries, so these calls can't be overloaded. 510 511 <p>The HP dynamic loader does not support GNU symbol versioning, so symbol 512versioning is not supported. It may be necessary to disable symbol 513versioning with <samp><span class="option">--disable-symvers</span></samp> when using GNU ld. 514 515 <p>POSIX threads are the default. The optional DCE thread library is not 516supported, so <samp><span class="option">--enable-threads=dce</span></samp> does not work. 517 518 <p><hr /> 519 520<h3 class="heading"><a name="TOC14"></a><a name="x_002dx_002dlinux_002dgnu"></a>*-*-linux-gnu</h3> 521 522<p>Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present 523in glibc 2.2.5 and later. More information is available in the 524libstdc++-v3 documentation. 525 526 <p><hr /> 527 528<h3 class="heading"><a name="TOC15"></a><a name="ix86_002dx_002dlinux"></a>i?86-*-linux*</h3> 529 530<p>As of GCC 3.3, binutils 2.13.1 or later is required for this platform. 531See <a href="http://gcc.gnu.org/PR10877">bug 10877</a> for more information. 532 533 <p>If you receive Signal 11 errors when building on GNU/Linux, then it is 534possible you have a hardware problem. Further information on this can be 535found on <a href="http://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>. 536 537 <p><hr /> 538 539<h3 class="heading"><a name="TOC16"></a><a name="ix86_002dx_002dsolaris289"></a>i?86-*-solaris2.[89]</h3> 540 541<p>The Sun assembler in Solaris 8 and 9 has several bugs and limitations. 542While GCC works around them, several features are missing, so it is 543<!-- FIXME: which ones? --> 544recommended to use the GNU assembler instead. There is no bundled 545version, but the current version, from GNU binutils 2.20.1, is known to 546work. 547 548 <p>Solaris~2/x86 doesn't support the execution of SSE/SSE2 instructions 549before Solaris~9 4/04, even if the CPU supports them. Programs will 550receive <code>SIGILL</code> if they try. The fix is available both in 551Solaris~9 Update~6 and kernel patch 112234-12 or newer. There is no 552corresponding patch for Solaris 8. To avoid this problem, 553<samp><span class="option">-march</span></samp> defaults to ‘<samp><span class="samp">pentiumpro</span></samp>’ on Solaris 8 and 9. If 554you have the patch installed, you can configure GCC with an appropriate 555<samp><span class="option">--with-arch</span></samp> option, but need GNU <samp><span class="command">as</span></samp> for SSE2 support. 556 557 <p><hr /> 558 559<h3 class="heading"><a name="TOC17"></a><a name="ix86_002dx_002dsolaris210"></a>i?86-*-solaris2.10</h3> 560 561<p>Use this for Solaris 10 or later on x86 and x86-64 systems. This 562configuration is supported by GCC 4.0 and later versions only. Unlike 563‘<samp><span class="samp">sparcv9-sun-solaris2*</span></samp>’, there is no corresponding 64-bit 564configuration like ‘<samp><span class="samp">amd64-*-solaris2*</span></samp>’ or ‘<samp><span class="samp">x86_64-*-solaris2*</span></samp>’. 565<!-- FIXME: will there ever be? --> 566 567 <p>It is recommended that you configure GCC to use the GNU assembler, in 568<samp><span class="file">/usr/sfw/bin/gas</span></samp>. The versions included in Solaris 10, from GNU 569binutils 2.15, and Solaris 11, from GNU binutils 2.19, work fine, 570although the current version, from GNU binutils 5712.20.1, is known to work, too. Recent versions of the Sun assembler in 572<samp><span class="file">/usr/ccs/bin/as</span></samp> work almost as well, though. 573<!-- FIXME: as patch requirements? --> 574 575 <p>For linking, the Sun linker, is preferred. If you want to use the GNU 576linker instead, which is available in <samp><span class="file">/usr/sfw/bin/gld</span></samp>, note that 577due to a packaging bug the version in Solaris 10, from GNU binutils 5782.15, cannot be used, while the version in Solaris 11, from GNU binutils 5792.19, works, as does the latest version, from GNU binutils 2.20.1. 580 581 <p>To use GNU <samp><span class="command">as</span></samp>, configure with the options 582<samp><span class="option">--with-gnu-as --with-as=/usr/sfw/bin/gas</span></samp>. It may be necessary 583to configure with <samp><span class="option">--without-gnu-ld --with-ld=/usr/ccs/bin/ld</span></samp> to 584guarantee use of Sun <samp><span class="command">ld</span></samp>. 585<!-- FIXME: why -without-gnu-ld -with-ld? --> 586 587 <p><hr /> 588 589<h3 class="heading"><a name="TOC18"></a><a name="ia64_002dx_002dlinux"></a>ia64-*-linux</h3> 590 591<p>IA-64 processor (also known as IPF, or Itanium Processor Family) 592running GNU/Linux. 593 594 <p>If you are using the installed system libunwind library with 595<samp><span class="option">--with-system-libunwind</span></samp>, then you must use libunwind 0.98 or 596later. 597 598 <p>None of the following versions of GCC has an ABI that is compatible 599with any of the other versions in this list, with the exception that 600Red Hat 2.96 and Trillian 000171 are compatible with each other: 6013.1, 3.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717. 602This primarily affects C++ programs and programs that create shared libraries. 603GCC 3.1 or later is recommended for compiling linux, the kernel. 604As of version 3.1 GCC is believed to be fully ABI compliant, and hence no 605more major ABI changes are expected. 606 607 <p><hr /> 608 609<h3 class="heading"><a name="TOC19"></a><a name="ia64_002dx_002dhpux"></a>ia64-*-hpux*</h3> 610 611<p>Building GCC on this target requires the GNU Assembler. The bundled HP 612assembler will not work. To prevent GCC from using the wrong assembler, 613the option <samp><span class="option">--with-gnu-as</span></samp> may be necessary. 614 615 <p>The GCC libunwind library has not been ported to HPUX. This means that for 616GCC versions 3.2.3 and earlier, <samp><span class="option">--enable-libunwind-exceptions</span></samp> 617is required to build GCC. For GCC 3.3 and later, this is the default. 618For gcc 3.4.3 and later, <samp><span class="option">--enable-libunwind-exceptions</span></samp> is 619removed and the system libunwind library will always be used. 620 621 <p><hr /> 622<!-- rs6000-ibm-aix*, powerpc-ibm-aix* --> 623 624<h3 class="heading"><a name="TOC20"></a><a name="x_002dibm_002daix"></a>*-ibm-aix*</h3> 625 626<p>Support for AIX version 3 and older was discontinued in GCC 3.4. 627Support for AIX version 4.2 and older was discontinued in GCC 4.5. 628 629 <p>“out of memory” bootstrap failures may indicate a problem with 630process resource limits (ulimit). Hard limits are configured in the 631<samp><span class="file">/etc/security/limits</span></samp> system configuration file. 632 633 <p>GCC can bootstrap with recent versions of IBM XLC, but bootstrapping 634with an earlier release of GCC is recommended. Bootstrapping with XLC 635requires a larger data segment, which can be enabled through the 636<var>LDR_CNTRL</var> environment variable, e.g., 637 638<pre class="smallexample"> % LDR_CNTRL=MAXDATA=0x50000000 639 % export LDR_CNTRL 640</pre> 641 <p>One can start with a pre-compiled version of GCC to build from 642sources. One may delete GCC's “fixed” header files when starting 643with a version of GCC built for an earlier release of AIX. 644 645 <p>To speed up the configuration phases of bootstrapping and installing GCC, 646one may use GNU Bash instead of AIX <samp><span class="command">/bin/sh</span></samp>, e.g., 647 648<pre class="smallexample"> % CONFIG_SHELL=/opt/freeware/bin/bash 649 % export CONFIG_SHELL 650</pre> 651 <p>and then proceed as described in <a href="build.html">the build instructions</a>, where we strongly recommend specifying an absolute path 652to invoke <var>srcdir</var>/configure. 653 654 <p>Because GCC on AIX is built as a 32-bit executable by default, 655(although it can generate 64-bit programs) the GMP and MPFR libraries 656required by gfortran must be 32-bit libraries. Building GMP and MPFR 657as static archive libraries works better than shared libraries. 658 659 <p>Errors involving <code>alloca</code> when building GCC generally are due 660to an incorrect definition of <code>CC</code> in the Makefile or mixing files 661compiled with the native C compiler and GCC. During the stage1 phase of 662the build, the native AIX compiler <strong>must</strong> be invoked as <samp><span class="command">cc</span></samp> 663(not <samp><span class="command">xlc</span></samp>). Once <samp><span class="command">configure</span></samp> has been informed of 664<samp><span class="command">xlc</span></samp>, one needs to use ‘<samp><span class="samp">make distclean</span></samp>’ to remove the 665configure cache files and ensure that <samp><span class="env">CC</span></samp> environment variable 666does not provide a definition that will confuse <samp><span class="command">configure</span></samp>. 667If this error occurs during stage2 or later, then the problem most likely 668is the version of Make (see above). 669 670 <p>The native <samp><span class="command">as</span></samp> and <samp><span class="command">ld</span></samp> are recommended for bootstrapping 671on AIX. The GNU Assembler, GNU Linker, and GNU Binutils version 2.20 672is required to bootstrap on AIX 5. The native AIX tools do 673interoperate with GCC. 674 675 <p>Building <samp><span class="file">libstdc++.a</span></samp> requires a fix for an AIX Assembler bug 676APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1). It also requires a 677fix for another AIX Assembler bug and a co-dependent AIX Archiver fix 678referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1) 679 680 <p>‘<samp><span class="samp">libstdc++</span></samp>’ in GCC 3.4 increments the major version number of the 681shared object and GCC installation places the <samp><span class="file">libstdc++.a</span></samp> 682shared library in a common location which will overwrite the and GCC 6833.3 version of the shared library. Applications either need to be 684re-linked against the new shared library or the GCC 3.1 and GCC 3.3 685versions of the ‘<samp><span class="samp">libstdc++</span></samp>’ shared object needs to be available 686to the AIX runtime loader. The GCC 3.1 ‘<samp><span class="samp">libstdc++.so.4</span></samp>’, if 687present, and GCC 3.3 ‘<samp><span class="samp">libstdc++.so.5</span></samp>’ shared objects can be 688installed for runtime dynamic loading using the following steps to set 689the ‘<samp><span class="samp">F_LOADONLY</span></samp>’ flag in the shared object for <em>each</em> 690multilib <samp><span class="file">libstdc++.a</span></samp> installed: 691 692 <p>Extract the shared objects from the currently installed 693<samp><span class="file">libstdc++.a</span></samp> archive: 694<pre class="smallexample"> % ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5 695</pre> 696 <p>Enable the ‘<samp><span class="samp">F_LOADONLY</span></samp>’ flag so that the shared object will be 697available for runtime dynamic loading, but not linking: 698<pre class="smallexample"> % strip -e libstdc++.so.4 libstdc++.so.5 699</pre> 700 <p>Archive the runtime-only shared object in the GCC 3.4 701<samp><span class="file">libstdc++.a</span></samp> archive: 702<pre class="smallexample"> % ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5 703</pre> 704 <p>Linking executables and shared libraries may produce warnings of 705duplicate symbols. The assembly files generated by GCC for AIX always 706have included multiple symbol definitions for certain global variable 707and function declarations in the original program. The warnings should 708not prevent the linker from producing a correct library or runnable 709executable. 710 711 <p>AIX 4.3 utilizes a “large format” archive to support both 32-bit and 71264-bit object modules. The routines provided in AIX 4.3.0 and AIX 4.3.1 713to parse archive libraries did not handle the new format correctly. 714These routines are used by GCC and result in error messages during 715linking such as “not a COFF file”. The version of the routines shipped 716with AIX 4.3.1 should work for a 32-bit environment. The <samp><span class="option">-g</span></samp> 717option of the archive command may be used to create archives of 32-bit 718objects using the original “small format”. A correct version of the 719routines is shipped with AIX 4.3.2 and above. 720 721 <p>Some versions of the AIX binder (linker) can fail with a relocation 722overflow severe error when the <samp><span class="option">-bbigtoc</span></samp> option is used to link 723GCC-produced object files into an executable that overflows the TOC. A fix 724for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is 725available from IBM Customer Support and from its 726<a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a> 727website as PTF U455193. 728 729 <p>The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core 730with a segmentation fault when invoked by any version of GCC. A fix for 731APAR IX87327 is available from IBM Customer Support and from its 732<a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a> 733website as PTF U461879. This fix is incorporated in AIX 4.3.3 and above. 734 735 <p>The initial assembler shipped with AIX 4.3.0 generates incorrect object 736files. A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS 737TO ASSEMBLE/BIND) is available from IBM Customer Support and from its 738<a href="http://techsupport.services.ibm.com/">techsupport.services.ibm.com</a> 739website as PTF U453956. This fix is incorporated in AIX 4.3.1 and above. 740 741 <p>AIX provides National Language Support (NLS). Compilers and assemblers 742use NLS to support locale-specific representations of various data 743formats including floating-point numbers (e.g., ‘<samp><span class="samp">.</span></samp>’ vs ‘<samp><span class="samp">,</span></samp>’ for 744separating decimal fractions). There have been problems reported where 745GCC does not produce the same floating-point formats that the assembler 746expects. If one encounters this problem, set the <samp><span class="env">LANG</span></samp> 747environment variable to ‘<samp><span class="samp">C</span></samp>’ or ‘<samp><span class="samp">En_US</span></samp>’. 748 749 <p>A default can be specified with the <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp> 750switch and using the configure option <samp><span class="option">--with-cpu-</span><var>cpu_type</var></samp>. 751 752 <p><hr /> 753 754<h3 class="heading"><a name="TOC21"></a><a name="iq2000_002dx_002delf"></a>iq2000-*-elf</h3> 755 756<p>Vitesse IQ2000 processors. These are used in embedded 757applications. There are no standard Unix configurations. 758 759 <p><hr /> 760 761<h3 class="heading"><a name="TOC22"></a><a name="lm32_002dx_002delf"></a>lm32-*-elf</h3> 762 763<p>Lattice Mico32 processor. 764This configuration is intended for embedded systems. 765 766 <p><hr /> 767 768<h3 class="heading"><a name="TOC23"></a><a name="lm32_002dx_002duclinux"></a>lm32-*-uclinux</h3> 769 770<p>Lattice Mico32 processor. 771This configuration is intended for embedded systems running uClinux. 772 773 <p><hr /> 774 775<h3 class="heading"><a name="TOC24"></a><a name="m32c_002dx_002delf"></a>m32c-*-elf</h3> 776 777<p>Renesas M32C processor. 778This configuration is intended for embedded systems. 779 780 <p><hr /> 781 782<h3 class="heading"><a name="TOC25"></a><a name="m32r_002dx_002delf"></a>m32r-*-elf</h3> 783 784<p>Renesas M32R processor. 785This configuration is intended for embedded systems. 786 787 <p><hr /> 788 789<h3 class="heading"><a name="TOC26"></a><a name="m6811_002delf"></a>m6811-elf</h3> 790 791<p>Motorola 68HC11 family micro controllers. These are used in embedded 792applications. There are no standard Unix configurations. 793 794 <p><hr /> 795 796<h3 class="heading"><a name="TOC27"></a><a name="m6812_002delf"></a>m6812-elf</h3> 797 798<p>Motorola 68HC12 family micro controllers. These are used in embedded 799applications. There are no standard Unix configurations. 800 801 <p><hr /> 802 803<h3 class="heading"><a name="TOC28"></a><a name="m68k_002dx_002dx"></a>m68k-*-*</h3> 804 805<p>By default, 806‘<samp><span class="samp">m68k-*-elf*</span></samp>’, ‘<samp><span class="samp">m68k-*-rtems</span></samp>’, ‘<samp><span class="samp">m68k-*-uclinux</span></samp>’ and 807‘<samp><span class="samp">m68k-*-linux</span></samp>’ 808build libraries for both M680x0 and ColdFire processors. If you only 809need the M680x0 libraries, you can omit the ColdFire ones by passing 810<samp><span class="option">--with-arch=m68k</span></samp> to <samp><span class="command">configure</span></samp>. Alternatively, you 811can omit the M680x0 libraries by passing <samp><span class="option">--with-arch=cf</span></samp> to 812<samp><span class="command">configure</span></samp>. These targets default to 5206 or 5475 code as 813appropriate for the target system when 814configured with <samp><span class="option">--with-arch=cf</span></samp> and 68020 code otherwise. 815 816 <p>The ‘<samp><span class="samp">m68k-*-netbsd</span></samp>’ and 817‘<samp><span class="samp">m68k-*-openbsd</span></samp>’ targets also support the <samp><span class="option">--with-arch</span></samp> 818option. They will generate ColdFire CFV4e code when configured with 819<samp><span class="option">--with-arch=cf</span></samp> and 68020 code otherwise. 820 821 <p>You can override the default processors listed above by configuring 822with <samp><span class="option">--with-cpu=</span><var>target</var></samp>. This <var>target</var> can either 823be a <samp><span class="option">-mcpu</span></samp> argument or one of the following values: 824‘<samp><span class="samp">m68000</span></samp>’, ‘<samp><span class="samp">m68010</span></samp>’, ‘<samp><span class="samp">m68020</span></samp>’, ‘<samp><span class="samp">m68030</span></samp>’, 825‘<samp><span class="samp">m68040</span></samp>’, ‘<samp><span class="samp">m68060</span></samp>’, ‘<samp><span class="samp">m68020-40</span></samp>’ and ‘<samp><span class="samp">m68020-60</span></samp>’. 826 827 <p><hr /> 828 829<h3 class="heading"><a name="TOC29"></a><a name="m68k_002dx_002duclinux"></a>m68k-*-uclinux</h3> 830 831<p>GCC 4.3 changed the uClinux configuration so that it uses the 832‘<samp><span class="samp">m68k-linux-gnu</span></samp>’ ABI rather than the ‘<samp><span class="samp">m68k-elf</span></samp>’ ABI. 833It also added improved support for C++ and flat shared libraries, 834both of which were ABI changes. However, you can still use the 835original ABI by configuring for ‘<samp><span class="samp">m68k-uclinuxoldabi</span></samp>’ or 836‘<samp><span class="samp">m68k-</span><var>vendor</var><span class="samp">-uclinuxoldabi</span></samp>’. 837 838 <p><hr /> 839 840<h3 class="heading"><a name="TOC30"></a><a name="mep_002dx_002delf"></a>mep-*-elf</h3> 841 842<p>Toshiba Media embedded Processor. 843This configuration is intended for embedded systems. 844 845 <p><hr /> 846 847<h3 class="heading"><a name="TOC31"></a><a name="mips_002dx_002dx"></a>mips-*-*</h3> 848 849<p>If on a MIPS system you get an error message saying “does not have gp 850sections for all it's [sic] sectons [sic]”, don't worry about it. This 851happens whenever you use GAS with the MIPS linker, but there is not 852really anything wrong, and it is okay to use the output file. You can 853stop such warnings by installing the GNU linker. 854 855 <p>It would be nice to extend GAS to produce the gp tables, but they are 856optional, and there should not be a warning about their absence. 857 858 <p>The libstdc++ atomic locking routines for MIPS targets requires MIPS II 859and later. A patch went in just after the GCC 3.3 release to 860make ‘<samp><span class="samp">mips*-*-*</span></samp>’ use the generic implementation instead. You can also 861configure for ‘<samp><span class="samp">mipsel-elf</span></samp>’ as a workaround. The 862‘<samp><span class="samp">mips*-*-linux*</span></samp>’ target continues to use the MIPS II routines. More 863work on this is expected in future releases. 864 865<!-- If you make -with-llsc the default for another target, please also --> 866<!-- update the description of the -with-llsc option. --> 867 <p>The built-in <code>__sync_*</code> functions are available on MIPS II and 868later systems and others that support the ‘<samp><span class="samp">ll</span></samp>’, ‘<samp><span class="samp">sc</span></samp>’ and 869‘<samp><span class="samp">sync</span></samp>’ instructions. This can be overridden by passing 870<samp><span class="option">--with-llsc</span></samp> or <samp><span class="option">--without-llsc</span></samp> when configuring GCC. 871Since the Linux kernel emulates these instructions if they are 872missing, the default for ‘<samp><span class="samp">mips*-*-linux*</span></samp>’ targets is 873<samp><span class="option">--with-llsc</span></samp>. The <samp><span class="option">--with-llsc</span></samp> and 874<samp><span class="option">--without-llsc</span></samp> configure options may be overridden at compile 875time by passing the <samp><span class="option">-mllsc</span></samp> or <samp><span class="option">-mno-llsc</span></samp> options to 876the compiler. 877 878 <p>MIPS systems check for division by zero (unless 879<samp><span class="option">-mno-check-zero-division</span></samp> is passed to the compiler) by 880generating either a conditional trap or a break instruction. Using 881trap results in smaller code, but is only supported on MIPS II and 882later. Also, some versions of the Linux kernel have a bug that 883prevents trap from generating the proper signal (<code>SIGFPE</code>). To enable 884the use of break, use the <samp><span class="option">--with-divide=breaks</span></samp> 885<samp><span class="command">configure</span></samp> option when configuring GCC. The default is to 886use traps on systems that support them. 887 888 <p>Cross-compilers for the MIPS as target using the MIPS assembler 889currently do not work, because the auxiliary programs 890<samp><span class="file">mips-tdump.c</span></samp> and <samp><span class="file">mips-tfile.c</span></samp> can't be compiled on 891anything but a MIPS. It does work to cross compile for a MIPS 892if you use the GNU assembler and linker. 893 894 <p>The assembler from GNU binutils 2.17 and earlier has a bug in the way 895it sorts relocations for REL targets (o32, o64, EABI). This can cause 896bad code to be generated for simple C++ programs. Also the linker 897from GNU binutils versions prior to 2.17 has a bug which causes the 898runtime linker stubs in very large programs, like <samp><span class="file">libgcj.so</span></samp>, to 899be incorrectly generated. GNU Binutils 2.18 and later (and snapshots 900made after Nov. 9, 2006) should be free from both of these problems. 901 902 <p><hr /> 903 904<h3 class="heading"><a name="TOC32"></a><a name="mips_002dsgi_002dirix5"></a>mips-sgi-irix5</h3> 905 906<p>Support for IRIX 5 has been obsoleted in GCC 4.5, but can still be 907enabled by configuring with <samp><span class="option">--enable-obsolete</span></samp>. Support will be 908removed in GCC 4.6. 909 910 <p>In order to compile GCC on an SGI running IRIX 5, the ‘<samp><span class="samp">compiler_dev.hdr</span></samp>’ 911subsystem must be installed from the IDO CD-ROM supplied by SGI. 912It is also available for download from 913<a href="http://freeware.sgi.com/ido.html">http://freeware.sgi.com/ido.html</a>. 914 915 <p>If you use the MIPS C compiler to bootstrap, it may be necessary 916to increase its table size for switch statements with the 917<samp><span class="option">-Wf,-XNg1500</span></samp> option. If you use the <samp><span class="option">-O2</span></samp> 918optimization option, you also need to use <samp><span class="option">-Olimit 3000</span></samp>. 919<!-- FIXME: verify. --> 920 921 <p>GCC must be configured to use GNU <samp><span class="command">as</span></samp>. The latest version, from GNU 922binutils 2.20.1, is known to work. 923 924 <p>To enable debugging under IRIX 5, you must use GNU binutils 2.15 or 925later, and use the <samp><span class="option">--with-gnu-ld</span></samp> <samp><span class="command">configure</span></samp> option 926when configuring GCC. 927You need to use GNU <samp><span class="command">ar</span></samp> and <samp><span class="command">nm</span></samp>, 928also distributed with GNU binutils. 929<!-- FIXME: which parts of this are still true? --> 930 931 <p>Configuring GCC with <samp><span class="command">/bin/sh</span></samp> is <em>extremely</em> slow and may 932even hang. This problem can be avoided by running <samp><span class="command">configure</span></samp> 933like this: 934 935<pre class="smallexample"> % CONFIG_SHELL=/usr/local/bin/bash 936 % export CONFIG_SHELL 937 % $CONFIG_SHELL <var>srcdir</var>/configure [<var>options</var>] 938</pre> 939 <p class="noindent"><samp><span class="command">/bin/ksh</span></samp> doesn't work properly either. 940 941 <p><hr /> 942 943<h3 class="heading"><a name="TOC33"></a><a name="mips_002dsgi_002dirix6"></a>mips-sgi-irix6</h3> 944 945<p>Support for IRIX 6 releases before 6.5 has been obsoleted in GCC 4.5, 946but can still be enabled by configuring with <samp><span class="option">--enable-obsolete</span></samp>. 947Support will be removed in GCC 4.6, which will also disable support for 948the O32 ABI. It is <em>strongly</em> recommended to upgrade to at least 949IRIX 6.5.18. This release introduced full ISO C99 support, though for 950the N32 and N64 ABIs only. 951 952 <p>To build and use GCC on IRIX 6, you need the IRIX Development Foundation 953(IDF) and IRIX Development Libraries (IDL). They are included with the 954IRIX 6.5 media and can be downloaded from 955<a href="http://freeware.sgi.com/idf_idl.html">http://freeware.sgi.com/idf_idl.html</a> for older IRIX 6 releases. 956 957 <p>If you are using SGI's MIPSpro <samp><span class="command">cc</span></samp> as your bootstrap compiler, you must 958ensure that the N32 ABI is in use. To test this, compile a simple C 959file with <samp><span class="command">cc</span></samp> and then run <samp><span class="command">file</span></samp> on the 960resulting object file. The output should look like: 961 962<pre class="smallexample"> test.o: ELF N32 MSB ... 963</pre> 964 <p class="noindent">If you see: 965 966<pre class="smallexample"> test.o: ELF 32-bit MSB ... 967</pre> 968 <p class="noindent">or 969 970<pre class="smallexample"> test.o: ELF 64-bit MSB ... 971</pre> 972 <p class="noindent">then your version of <samp><span class="command">cc</span></samp> uses the O32 or N64 ABI by default. You 973should set the environment variable <samp><span class="env">CC</span></samp> to ‘<samp><span class="samp">cc -n32</span></samp>’ 974before configuring GCC. 975 976 <p>If you want the resulting <samp><span class="command">gcc</span></samp> to run on old 32-bit systems 977with the MIPS R4400 CPU, you need to ensure that only code for the ‘<samp><span class="samp">mips3</span></samp>’ 978instruction set architecture (ISA) is generated. While GCC 3.x does 979this correctly, both GCC 2.95 and SGI's MIPSpro <samp><span class="command">cc</span></samp> may change 980the ISA depending on the machine where GCC is built. Using one of them 981as the bootstrap compiler may result in ‘<samp><span class="samp">mips4</span></samp>’ code, which won't run at 982all on ‘<samp><span class="samp">mips3</span></samp>’-only systems. For the test program above, you should see: 983 984<pre class="smallexample"> test.o: ELF N32 MSB mips-3 ... 985</pre> 986 <p class="noindent">If you get: 987 988<pre class="smallexample"> test.o: ELF N32 MSB mips-4 ... 989</pre> 990 <p class="noindent">instead, you should set the environment variable <samp><span class="env">CC</span></samp> to ‘<samp><span class="samp">cc 991-n32 -mips3</span></samp>’ or ‘<samp><span class="samp">gcc -mips3</span></samp>’ respectively before configuring GCC. 992 993 <p>MIPSpro C 7.4 may cause bootstrap failures, due to a bug when inlining 994<code>memcmp</code>. Either add <code>-U__INLINE_INTRINSICS</code> to the <samp><span class="env">CC</span></samp> 995environment variable as a workaround or upgrade to MIPSpro C 7.4.1m. 996 997 <p>GCC on IRIX 6 is usually built to support the N32, O32 and N64 ABIs. If 998you build GCC on a system that doesn't have the N64 libraries installed 999or cannot run 64-bit binaries, 1000you need to configure with <samp><span class="option">--disable-multilib</span></samp> so GCC doesn't 1001try to use them. This will disable building the O32 libraries, too. 1002Look for <samp><span class="file">/usr/lib64/libc.so.1</span></samp> to see if you 1003have the 64-bit libraries installed. 1004 1005 <p>GCC must be configured with GNU <samp><span class="command">as</span></samp>. The latest version, from GNU 1006binutils 2.20.1, is known to work. On the other hand, bootstrap fails 1007with GNU <samp><span class="command">ld</span></samp> at least since GNU binutils 2.17. 1008 1009 <p>The <samp><span class="option">--enable-libgcj</span></samp> 1010option is disabled by default: IRIX 6 uses a very low default limit 1011(20480) for the command line length. Although <samp><span class="command">libtool</span></samp> contains a 1012workaround for this problem, at least the N64 ‘<samp><span class="samp">libgcj</span></samp>’ is known not 1013to build despite this, running into an internal error of the native 1014<samp><span class="command">ld</span></samp>. A sure fix is to increase this limit (‘<samp><span class="samp">ncargs</span></samp>’) to 1015its maximum of 262144 bytes. If you have root access, you can use the 1016<samp><span class="command">systune</span></samp> command to do this. 1017<!-- FIXME: does this work with current libtool? --> 1018 1019 <p><code>wchar_t</code> support in ‘<samp><span class="samp">libstdc++</span></samp>’ is not available for old 1020IRIX 6.5.x releases, x < 19. The problem cannot be autodetected 1021and in order to build GCC for such targets you need to configure with 1022<samp><span class="option">--disable-wchar_t</span></samp>. 1023 1024 <p><hr /> 1025 1026<h3 class="heading"><a name="TOC34"></a><a name="moxie_002dx_002delf"></a>moxie-*-elf</h3> 1027 1028<p>The moxie processor. See <a href="http://moxielogic.org/">http://moxielogic.org/</a> for more 1029information about this processor. 1030 1031 <p><hr /> 1032 1033<h3 class="heading"><a name="TOC35"></a><a name="powerpc_002dx_002dx"></a>powerpc-*-*</h3> 1034 1035<p>You can specify a default version for the <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp> 1036switch by using the configure option <samp><span class="option">--with-cpu-</span><var>cpu_type</var></samp>. 1037 1038 <p>You will need 1039<a href="ftp://ftp.kernel.org/pub/linux/devel/binutils">binutils 2.15</a> 1040or newer for a working GCC. 1041 1042 <p><hr /> 1043 1044<h3 class="heading"><a name="TOC36"></a><a name="powerpc_002dx_002ddarwin"></a>powerpc-*-darwin*</h3> 1045 1046<p>PowerPC running Darwin (Mac OS X kernel). 1047 1048 <p>Pre-installed versions of Mac OS X may not include any developer tools, 1049meaning that you will not be able to build GCC from source. Tool 1050binaries are available at 1051<a href="http://developer.apple.com/darwin/projects/compiler/">http://developer.apple.com/darwin/projects/compiler/</a> (free 1052registration required). 1053 1054 <p>This version of GCC requires at least cctools-590.36. The 1055cctools-590.36 package referenced from 1056<a href="http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html">http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html</a> will not work 1057on systems older than 10.3.9 (aka darwin7.9.0). 1058 1059 <p><hr /> 1060 1061<h3 class="heading"><a name="TOC37"></a><a name="powerpc_002dx_002delf"></a>powerpc-*-elf</h3> 1062 1063<p>PowerPC system in big endian mode, running System V.4. 1064 1065 <p><hr /> 1066 1067<h3 class="heading"><a name="TOC38"></a><a name="powerpc_002dx_002dlinux_002dgnu"></a>powerpc*-*-linux-gnu*</h3> 1068 1069<p>PowerPC system in big endian mode running Linux. 1070 1071 <p><hr /> 1072 1073<h3 class="heading"><a name="TOC39"></a><a name="powerpc_002dx_002dnetbsd"></a>powerpc-*-netbsd*</h3> 1074 1075<p>PowerPC system in big endian mode running NetBSD. 1076 1077 <p><hr /> 1078 1079<h3 class="heading"><a name="TOC40"></a><a name="powerpc_002dx_002deabisim"></a>powerpc-*-eabisim</h3> 1080 1081<p>Embedded PowerPC system in big endian mode for use in running under the 1082PSIM simulator. 1083 1084 <p><hr /> 1085 1086<h3 class="heading"><a name="TOC41"></a><a name="powerpc_002dx_002deabi"></a>powerpc-*-eabi</h3> 1087 1088<p>Embedded PowerPC system in big endian mode. 1089 1090 <p><hr /> 1091 1092<h3 class="heading"><a name="TOC42"></a><a name="powerpcle_002dx_002delf"></a>powerpcle-*-elf</h3> 1093 1094<p>PowerPC system in little endian mode, running System V.4. 1095 1096 <p><hr /> 1097 1098<h3 class="heading"><a name="TOC43"></a><a name="powerpcle_002dx_002deabisim"></a>powerpcle-*-eabisim</h3> 1099 1100<p>Embedded PowerPC system in little endian mode for use in running under 1101the PSIM simulator. 1102 1103 <p><hr /> 1104 1105<h3 class="heading"><a name="TOC44"></a><a name="powerpcle_002dx_002deabi"></a>powerpcle-*-eabi</h3> 1106 1107<p>Embedded PowerPC system in little endian mode. 1108 1109 <p><hr /> 1110 1111<h3 class="heading"><a name="TOC45"></a><a name="rx_002dx_002delf"></a>rx-*-elf</h3> 1112 1113<p>The Renesas RX processor. See 1114<a href="http://eu.renesas.com/fmwk.jsp?cnt=rx600_series_landing.jsp&fp=/products/mpumcu/rx_family/rx600_series">http://eu.renesas.com/fmwk.jsp?cnt=rx600_series_landing.jsp&fp=/products/mpumcu/rx_family/rx600_series</a> 1115for more information about this processor. 1116 1117 <p><hr /> 1118 1119<h3 class="heading"><a name="TOC46"></a><a name="s390_002dx_002dlinux"></a>s390-*-linux*</h3> 1120 1121<p>S/390 system running GNU/Linux for S/390. 1122 1123 <p><hr /> 1124 1125<h3 class="heading"><a name="TOC47"></a><a name="s390x_002dx_002dlinux"></a>s390x-*-linux*</h3> 1126 1127<p>zSeries system (64-bit) running GNU/Linux for zSeries. 1128 1129 <p><hr /> 1130 1131<h3 class="heading"><a name="TOC48"></a><a name="s390x_002dibm_002dtpf"></a>s390x-ibm-tpf*</h3> 1132 1133<p>zSeries system (64-bit) running TPF. This platform is 1134supported as cross-compilation target only. 1135 1136 <p><hr /><!-- Please use Solaris 2 to refer to all release of Solaris, starting --> 1137<!-- with 2.0 until 2.6, 7, 8, etc. Solaris 1 was a marketing name for --> 1138<!-- SunOS 4 releases which we don't use to avoid confusion. Solaris --> 1139<!-- alone is too unspecific and must be avoided. --> 1140 1141<h3 class="heading"><a name="TOC49"></a><a name="x_002dx_002dsolaris2"></a>*-*-solaris2*</h3> 1142 1143<p>Support for Solaris 7 has been obsoleted in GCC 4.5, but can still be 1144enabled by configuring with <samp><span class="option">--enable-obsolete</span></samp>. Support will be 1145removed in GCC 4.6. 1146 1147 <p>Sun does not ship a C compiler with Solaris 2, though you can download 1148the Sun Studio compilers for free from 1149<a href="http://developers.sun.com/sunstudio/downloads/">http://developers.sun.com/sunstudio/downloads/</a>. Alternatively, 1150you can install a pre-built GCC to bootstrap and install GCC. See the 1151<a href="binaries.html">binaries page</a> for details. 1152 1153 <p>The Solaris 2 <samp><span class="command">/bin/sh</span></samp> will often fail to configure 1154‘<samp><span class="samp">libstdc++-v3</span></samp>’, ‘<samp><span class="samp">boehm-gc</span></samp>’ or ‘<samp><span class="samp">libjava</span></samp>’. We therefore 1155recommend using the following initial sequence of commands 1156 1157<pre class="smallexample"> % CONFIG_SHELL=/bin/ksh 1158 % export CONFIG_SHELL 1159</pre> 1160 <p class="noindent">and proceed as described in <a href="configure.html">the configure instructions</a>. 1161In addition we strongly recommend specifying an absolute path to invoke 1162<samp><var>srcdir</var><span class="command">/configure</span></samp>. 1163 1164 <p>Solaris 2 comes with a number of optional OS packages. Some of these 1165are needed to use GCC fully, namely <code>SUNWarc</code>, 1166<code>SUNWbtool</code>, <code>SUNWesu</code>, <code>SUNWhea</code>, <code>SUNWlibm</code>, 1167<code>SUNWsprot</code>, and <code>SUNWtoo</code>. If you did not install all 1168optional packages when installing Solaris 2, you will need to verify that 1169the packages that GCC needs are installed. 1170 1171 <p>To check whether an optional package is installed, use 1172the <samp><span class="command">pkginfo</span></samp> command. To add an optional package, use the 1173<samp><span class="command">pkgadd</span></samp> command. For further details, see the Solaris 2 1174documentation. 1175 1176 <p>Trying to use the linker and other tools in 1177<samp><span class="file">/usr/ucb</span></samp> to install GCC has been observed to cause trouble. 1178For example, the linker may hang indefinitely. The fix is to remove 1179<samp><span class="file">/usr/ucb</span></samp> from your <samp><span class="env">PATH</span></samp>. 1180 1181 <p>The build process works more smoothly with the legacy Sun tools so, if you 1182have <samp><span class="file">/usr/xpg4/bin</span></samp> in your <samp><span class="env">PATH</span></samp>, we recommend that you place 1183<samp><span class="file">/usr/bin</span></samp> before <samp><span class="file">/usr/xpg4/bin</span></samp> for the duration of the build. 1184 1185 <p>We recommend the use of the Sun assembler or the GNU assembler, in 1186conjunction with the Sun linker. The GNU <samp><span class="command">as</span></samp> 1187versions included in Solaris 10, from GNU binutils 2.15, and Solaris 11, 1188from GNU binutils 2.19, are known to work. They can be found in 1189<samp><span class="file">/usr/sfw/bin/gas</span></samp>. Current versions of GNU binutils (2.20.1) 1190are known to work as well. Note that your mileage may vary 1191if you use a combination of the GNU tools and the Sun tools: while the 1192combination GNU <samp><span class="command">as</span></samp> + Sun <samp><span class="command">ld</span></samp> should reasonably work, 1193the reverse combination Sun <samp><span class="command">as</span></samp> + GNU <samp><span class="command">ld</span></samp> is known to 1194cause memory corruption at runtime in some cases for C++ programs. 1195<!-- FIXME: still? --> 1196GNU <samp><span class="command">ld</span></samp> usually works as well, although the version included in 1197Solaris 10 cannot be used due to several bugs. Again, the current 1198version (2.20.1) is known to work, but generally lacks platform specific 1199features, so better stay with Sun <samp><span class="command">ld</span></samp>. 1200 1201 <p>Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or 1202newer: <samp><span class="command">g++</span></samp> will complain that types are missing. These headers 1203assume that omitting the type means <code>int</code>; this assumption worked for 1204C90 but is wrong for C++, and is now wrong for C99 also. 1205 1206 <p><samp><span class="command">g++</span></samp> accepts such (invalid) constructs with the option 1207<samp><span class="option">-fpermissive</span></samp>; it will assume that any missing type is <code>int</code> 1208(as defined by C90). 1209 1210 <p>There are patches for Solaris 7 (108376-21 or newer for SPARC, 1211108377-20 for Intel), and Solaris 8 (108652-24 or newer for SPARC, 1212108653-22 for Intel) that fix this bug. 1213 1214 <p>Sun bug 4927647 sometimes causes random spurious testsuite failures 1215related to missing diagnostic output. This bug doesn't affect GCC 1216itself, rather it is a kernel bug triggered by the <samp><span class="command">expect</span></samp> 1217program which is used only by the GCC testsuite driver. When the bug 1218causes the <samp><span class="command">expect</span></samp> program to miss anticipated output, extra 1219testsuite failures appear. 1220 1221 <p>There are patches for Solaris 8 (117350-12 or newer for SPARC, 1222117351-12 or newer for Intel) and Solaris 9 (117171-11 or newer for 1223SPARC, 117172-11 or newer for Intel) that address this problem. 1224 1225 <p><hr /> 1226 1227<h3 class="heading"><a name="TOC50"></a><a name="sparc_002dsun_002dsolaris2"></a>sparc-sun-solaris2*</h3> 1228 1229<p>When GCC is configured to use GNU binutils 2.14 or later, the binaries 1230produced are smaller than the ones produced using Sun's native tools; 1231this difference is quite significant for binaries containing debugging 1232information. 1233 1234 <p>Starting with Solaris 7, the operating system is capable of executing 123564-bit SPARC V9 binaries. GCC 3.1 and later properly supports 1236this; the <samp><span class="option">-m64</span></samp> option enables 64-bit code generation. 1237However, if all you want is code tuned for the UltraSPARC CPU, you 1238should try the <samp><span class="option">-mtune=ultrasparc</span></samp> option instead, which produces 1239code that, unlike full 64-bit code, can still run on non-UltraSPARC 1240machines. 1241 1242 <p>When configuring on a Solaris 7 or later system that is running a kernel 1243that supports only 32-bit binaries, one must configure with 1244<samp><span class="option">--disable-multilib</span></samp>, since we will not be able to build the 124564-bit target libraries. 1246 1247 <p>GCC 3.3 and GCC 3.4 trigger code generation bugs in earlier versions of 1248the GNU compiler (especially GCC 3.0.x versions), which lead to the 1249miscompilation of the stage1 compiler and the subsequent failure of the 1250bootstrap process. A workaround is to use GCC 3.2.3 as an intermediary 1251stage, i.e. to bootstrap that compiler with the base compiler and then 1252use it to bootstrap the final compiler. 1253 1254 <p>GCC 3.4 triggers a code generation bug in versions 5.4 (Sun ONE Studio 7) 1255and 5.5 (Sun ONE Studio 8) of the Sun compiler, which causes a bootstrap 1256failure in form of a miscompilation of the stage1 compiler by the Sun 1257compiler. This is Sun bug 4974440. This is fixed with patch 112760-07. 1258 1259 <p>GCC 3.4 changed the default debugging format from Stabs to DWARF-2 for 126032-bit code on Solaris 7 and later. If you use the Sun assembler, this 1261change apparently runs afoul of Sun bug 4910101 (which is referenced as 1262an x86-only problem by Sun, probably because they do not use DWARF-2). 1263A symptom of the problem is that you cannot compile C++ programs like 1264<samp><span class="command">groff</span></samp> 1.19.1 without getting messages similar to the following: 1265 1266<pre class="smallexample"> ld: warning: relocation error: R_SPARC_UA32: ... 1267 external symbolic relocation against non-allocatable section 1268 .debug_info cannot be processed at runtime: relocation ignored. 1269</pre> 1270 <p class="noindent">To work around this problem, compile with <samp><span class="option">-gstabs+</span></samp> instead of 1271plain <samp><span class="option">-g</span></samp>. 1272 1273 <p>When configuring the GNU Multiple Precision Library (GMP) or the MPFR 1274library on a Solaris 7 or later system, the canonical target triplet 1275must be specified as the <samp><span class="command">build</span></samp> parameter on the configure 1276line. This triplet can be obtained by invoking <samp><span class="command">./config.guess</span></samp> in 1277the toplevel source directory of GCC (and not that of GMP or MPFR). 1278For example on a Solaris 7 system: 1279 1280<pre class="smallexample"> % ./configure --build=sparc-sun-solaris2.7 --prefix=xxx 1281</pre> 1282 <p><hr /> 1283 1284<h3 class="heading"><a name="TOC51"></a><a name="sparc_002dsun_002dsolaris27"></a>sparc-sun-solaris2.7</h3> 1285 1286<p><em>Note</em> that this configuration has been obsoleted in GCC 4.5, and will be 1287removed in GCC 4.6. 1288 1289 <p>Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug in 1290the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8 1291and later, including all EGCS releases. Sun formerly recommended 1292107058-01 for all Solaris 7 users, but around 1999-09-01 it started to 1293recommend it only for people who use Sun's compilers. 1294 1295 <p>Here are some workarounds to this problem: 1296 <ul> 1297<li>Do not install Sun patch 107058-01 until after Sun releases a 1298complete patch for bug 4210064. This is the simplest course to take, 1299unless you must also use Sun's C compiler. Unfortunately 107058-01 1300is preinstalled on some new Solaris 7-based hosts, so you may have to 1301back it out. 1302 1303 <li>Copy the original, unpatched Solaris 7 1304<samp><span class="command">/usr/ccs/bin/as</span></samp> into 1305<samp><span class="command">/usr/local/libexec/gcc/sparc-sun-solaris2.7/3.4/as</span></samp>, 1306adjusting the latter name to fit your local conventions and software 1307version numbers. 1308 1309 <li>Install Sun patch 106950-03 (1999-05-25) or later. Nobody with 1310both 107058-01 and 106950-03 installed has reported the bug with GCC 1311and Sun's dynamic linker. This last course of action is riskiest, 1312for two reasons. First, you must install 106950 on all hosts that 1313run code generated by GCC; it doesn't suffice to install it only on 1314the hosts that run GCC itself. Second, Sun says that 106950-03 is 1315only a partial fix for bug 4210064, but Sun doesn't know whether the 1316partial fix is adequate for GCC. Revision -08 or later should fix 1317the bug. The current (as of 2004-05-23) revision is -24, and is included in 1318the Solaris 7 Recommended Patch Cluster. 1319</ul> 1320 1321 <p>GCC 3.3 triggers a bug in version 5.0 Alpha 03/27/98 of the Sun assembler, 1322which causes a bootstrap failure when linking the 64-bit shared version of 1323‘<samp><span class="samp">libgcc</span></samp>’. A typical error message is: 1324 1325<pre class="smallexample"> ld: fatal: relocation error: R_SPARC_32: file libgcc/sparcv9/_muldi3.o: 1326 symbol <unknown>: offset 0xffffffff7ec133e7 is non-aligned. 1327</pre> 1328 <p class="noindent">This bug has been fixed in the final 5.0 version of the assembler. 1329 1330 <p>A similar problem was reported for version Sun WorkShop 6 99/08/18 of the 1331Sun assembler, which causes a bootstrap failure with GCC 4.0.0: 1332 1333<pre class="smallexample"> ld: fatal: relocation error: R_SPARC_DISP32: 1334 file .libs/libstdc++.lax/libsupc++convenience.a/vterminate.o: 1335 symbol <unknown>: offset 0xfccd33ad is non-aligned 1336</pre> 1337 <p class="noindent">This bug has been fixed in more recent revisions of the assembler. 1338 1339 <p><hr /> 1340 1341<h3 class="heading"><a name="TOC52"></a><a name="sparc_002dsun_002dsolaris210"></a>sparc-sun-solaris2.10</h3> 1342 1343<p>There is a bug in older versions of the Sun assembler which breaks 1344thread-local storage (TLS). A typical error message is 1345 1346<pre class="smallexample"> ld: fatal: relocation error: R_SPARC_TLS_LE_HIX22: file /var/tmp//ccamPA1v.o: 1347 symbol <unknown>: bad symbol type SECT: symbol type must be TLS 1348</pre> 1349 <p class="noindent">This bug is fixed in Sun patch 118683-03 or later. 1350 1351 <p><hr /> 1352 1353<h3 class="heading"><a name="TOC53"></a><a name="sparc_002dx_002dlinux"></a>sparc-*-linux*</h3> 1354 1355<p>GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4 1356or newer on this platform. All earlier binutils and glibc 1357releases mishandled unaligned relocations on <code>sparc-*-*</code> targets. 1358 1359 <p><hr /> 1360 1361<h3 class="heading"><a name="TOC54"></a><a name="sparc64_002dx_002dsolaris2"></a>sparc64-*-solaris2*</h3> 1362 1363<p>When configuring the GNU Multiple Precision Library (GMP) or the 1364MPFR library, the canonical target triplet must be specified as 1365the <samp><span class="command">build</span></samp> parameter on the configure line. For example 1366on a Solaris 7 system: 1367 1368<pre class="smallexample"> % ./configure --build=sparc64-sun-solaris2.7 --prefix=xxx 1369</pre> 1370 <p>The following compiler flags must be specified in the configure 1371step in order to bootstrap this target with the Sun compiler: 1372 1373<pre class="smallexample"> % CC="cc -xarch=v9 -xildoff" <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>] 1374</pre> 1375 <p class="noindent"><samp><span class="option">-xarch=v9</span></samp> specifies the SPARC-V9 architecture to the Sun toolchain 1376and <samp><span class="option">-xildoff</span></samp> turns off the incremental linker. 1377 1378 <p><hr /> 1379 1380<h3 class="heading"><a name="TOC55"></a><a name="sparcv9_002dx_002dsolaris2"></a>sparcv9-*-solaris2*</h3> 1381 1382<p>This is a synonym for ‘<samp><span class="samp">sparc64-*-solaris2*</span></samp>’. 1383 1384 <p><hr /> 1385 1386<h3 class="heading"><a name="TOC56"></a><a name="x_002dx_002dvxworks"></a>*-*-vxworks*</h3> 1387 1388<p>Support for VxWorks is in flux. At present GCC supports <em>only</em> the 1389very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC. 1390We welcome patches for other architectures supported by VxWorks 5.5. 1391Support for VxWorks AE would also be welcome; we believe this is merely 1392a matter of writing an appropriate “configlette” (see below). We are 1393not interested in supporting older, a.out or COFF-based, versions of 1394VxWorks in GCC 3. 1395 1396 <p>VxWorks comes with an older version of GCC installed in 1397<samp><var>$WIND_BASE</var><span class="file">/host</span></samp>; we recommend you do not overwrite it. 1398Choose an installation <var>prefix</var> entirely outside <var>$WIND_BASE</var>. 1399Before running <samp><span class="command">configure</span></samp>, create the directories <samp><var>prefix</var></samp> 1400and <samp><var>prefix</var><span class="file">/bin</span></samp>. Link or copy the appropriate assembler, 1401linker, etc. into <samp><var>prefix</var><span class="file">/bin</span></samp>, and set your <var>PATH</var> to 1402include that directory while running both <samp><span class="command">configure</span></samp> and 1403<samp><span class="command">make</span></samp>. 1404 1405 <p>You must give <samp><span class="command">configure</span></samp> the 1406<samp><span class="option">--with-headers=</span><var>$WIND_BASE</var><span class="option">/target/h</span></samp> switch so that it can 1407find the VxWorks system headers. Since VxWorks is a cross compilation 1408target only, you must also specify <samp><span class="option">--target=</span><var>target</var></samp>. 1409<samp><span class="command">configure</span></samp> will attempt to create the directory 1410<samp><var>prefix</var><span class="file">/</span><var>target</var><span class="file">/sys-include</span></samp> and copy files into it; 1411make sure the user running <samp><span class="command">configure</span></samp> has sufficient privilege 1412to do so. 1413 1414 <p>GCC's exception handling runtime requires a special “configlette” 1415module, <samp><span class="file">contrib/gthr_supp_vxw_5x.c</span></samp>. Follow the instructions in 1416that file to add the module to your kernel build. (Future versions of 1417VxWorks will incorporate this module.) 1418 1419 <p><hr /> 1420 1421<h3 class="heading"><a name="TOC57"></a><a name="x86_002d64_002dx_002dx"></a>x86_64-*-*, amd64-*-*</h3> 1422 1423<p>GCC supports the x86-64 architecture implemented by the AMD64 processor 1424(amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD. 1425On GNU/Linux the default is a bi-arch compiler which is able to generate 1426both 64-bit x86-64 and 32-bit x86 code (via the <samp><span class="option">-m32</span></samp> switch). 1427 1428 <p><hr /> 1429 1430<h3 class="heading"><a name="TOC58"></a><a name="xtensa_002dx_002delf"></a>xtensa*-*-elf</h3> 1431 1432<p>This target is intended for embedded Xtensa systems using the 1433‘<samp><span class="samp">newlib</span></samp>’ C library. It uses ELF but does not support shared 1434objects. Designed-defined instructions specified via the 1435Tensilica Instruction Extension (TIE) language are only supported 1436through inline assembly. 1437 1438 <p>The Xtensa configuration information must be specified prior to 1439building GCC. The <samp><span class="file">include/xtensa-config.h</span></samp> header 1440file contains the configuration information. If you created your 1441own Xtensa configuration with the Xtensa Processor Generator, the 1442downloaded files include a customized copy of this header file, 1443which you can use to replace the default header file. 1444 1445 <p><hr /> 1446 1447<h3 class="heading"><a name="TOC59"></a><a name="xtensa_002dx_002dlinux"></a>xtensa*-*-linux*</h3> 1448 1449<p>This target is for Xtensa systems running GNU/Linux. It supports ELF 1450shared objects and the GNU C library (glibc). It also generates 1451position-independent code (PIC) regardless of whether the 1452<samp><span class="option">-fpic</span></samp> or <samp><span class="option">-fPIC</span></samp> options are used. In other 1453respects, this target is the same as the 1454<a href="#xtensa*-*-elf">‘<samp><span class="samp">xtensa*-*-elf</span></samp>’</a> target. 1455 1456 <p><hr /> 1457 1458<h3 class="heading"><a name="TOC60"></a><a name="windows"></a>Microsoft Windows</h3> 1459 1460<h4 class="subheading"><a name="TOC61"></a>Intel 16-bit versions</h4> 1461 1462<p>The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not 1463supported. 1464 1465 <p>However, the 32-bit port has limited support for Microsoft 1466Windows 3.11 in the Win32s environment, as a target only. See below. 1467 1468<h4 class="subheading"><a name="TOC62"></a>Intel 32-bit versions</h4> 1469 1470<p>The 32-bit versions of Windows, including Windows 95, Windows NT, Windows 1471XP, and Windows Vista, are supported by several different target 1472platforms. These targets differ in which Windows subsystem they target 1473and which C libraries are used. 1474 1475 <ul> 1476<li>Cygwin <a href="#x-x-cygwin">*-*-cygwin</a>: Cygwin provides a user-space 1477Linux API emulation layer in the Win32 subsystem. 1478<li>Interix <a href="#x-x-interix">*-*-interix</a>: The Interix subsystem 1479provides native support for POSIX. 1480<li>MinGW <a href="#x-x-mingw32">*-*-mingw32</a>: MinGW is a native GCC port for 1481the Win32 subsystem that provides a subset of POSIX. 1482<li>MKS i386-pc-mks: NuTCracker from MKS. See 1483<a href="http://www.mkssoftware.com/">http://www.mkssoftware.com/</a> for more information. 1484</ul> 1485 1486<h4 class="subheading"><a name="TOC63"></a>Intel 64-bit versions</h4> 1487 1488<p>GCC contains support for x86-64 using the mingw-w64 1489runtime library, available from <a href="http://mingw-w64.sourceforge.net/">http://mingw-w64.sourceforge.net/</a>. 1490This library should be used with the target triple x86_64-pc-mingw32. 1491 1492 <p>Presently Windows for Itanium is not supported. 1493 1494<h4 class="subheading"><a name="TOC64"></a>Windows CE</h4> 1495 1496<p>Windows CE is supported as a target only on ARM (arm-wince-pe), Hitachi 1497SuperH (sh-wince-pe), and MIPS (mips-wince-pe). 1498 1499<h4 class="subheading"><a name="TOC65"></a>Other Windows Platforms</h4> 1500 1501<p>GCC no longer supports Windows NT on the Alpha or PowerPC. 1502 1503 <p>GCC no longer supports the Windows POSIX subsystem. However, it does 1504support the Interix subsystem. See above. 1505 1506 <p>Old target names including *-*-winnt and *-*-windowsnt are no longer used. 1507 1508 <p>PW32 (i386-pc-pw32) support was never completed, and the project seems to 1509be inactive. See <a href="http://pw32.sourceforge.net/">http://pw32.sourceforge.net/</a> for more information. 1510 1511 <p>UWIN support has been removed due to a lack of maintenance. 1512 1513 <p><hr /> 1514 1515<h3 class="heading"><a name="TOC66"></a><a name="x_002dx_002dcygwin"></a>*-*-cygwin</h3> 1516 1517<p>Ports of GCC are included with the 1518<a href="http://www.cygwin.com/">Cygwin environment</a>. 1519 1520 <p>GCC will build under Cygwin without modification; it does not build 1521with Microsoft's C++ compiler and there are no plans to make it do so. 1522 1523 <p>The Cygwin native compiler can be configured to target any 32-bit x86 1524cpu architecture desired; the default is i686-pc-cygwin. It should be 1525used with as up-to-date a version of binutils as possible; use either 1526the latest official GNU binutils release in the Cygwin distribution, 1527or version 2.20 or above if building your own. 1528 1529 <p><hr /> 1530 1531<h3 class="heading"><a name="TOC67"></a><a name="x_002dx_002dinterix"></a>*-*-interix</h3> 1532 1533<p>The Interix target is used by OpenNT, Interix, Services For UNIX (SFU), 1534and Subsystem for UNIX-based Applications (SUA). Applications compiled 1535with this target run in the Interix subsystem, which is separate from 1536the Win32 subsystem. This target was last known to work in GCC 3.3. 1537 1538 <p>For more information, see <a href="http://www.interix.com/">http://www.interix.com/</a>. 1539 1540 <p><hr /> 1541 1542<h3 class="heading"><a name="TOC68"></a><a name="x_002dx_002dmingw32"></a>*-*-mingw32</h3> 1543 1544<p>GCC will build with and support only MinGW runtime 3.12 and later. 1545Earlier versions of headers are incompatible with the new default semantics 1546of <code>extern inline</code> in <code>-std=c99</code> and <code>-std=gnu99</code> modes. 1547 1548 <p><hr /> 1549 1550<h3 class="heading"><a name="TOC69"></a><a name="older"></a>Older systems</h3> 1551 1552<p>GCC contains support files for many older (1980s and early 15531990s) Unix variants. For the most part, support for these systems 1554has not been deliberately removed, but it has not been maintained for 1555several years and may suffer from bitrot. 1556 1557 <p>Starting with GCC 3.1, each release has a list of “obsoleted” systems. 1558Support for these systems is still present in that release, but 1559<samp><span class="command">configure</span></samp> will fail unless the <samp><span class="option">--enable-obsolete</span></samp> 1560option is given. Unless a maintainer steps forward, support for these 1561systems will be removed from the next release of GCC. 1562 1563 <p>Support for old systems as hosts for GCC can cause problems if the 1564workarounds for compiler, library and operating system bugs affect the 1565cleanliness or maintainability of the rest of GCC. In some cases, to 1566bring GCC up on such a system, if still possible with current GCC, may 1567require first installing an old version of GCC which did work on that 1568system, and using it to compile a more recent GCC, to avoid bugs in the 1569vendor compiler. Old releases of GCC 1 and GCC 2 are available in the 1570<samp><span class="file">old-releases</span></samp> directory on the <a href="../mirrors.html">GCC mirror sites</a>. Header bugs may generally be avoided using 1571<samp><span class="command">fixincludes</span></samp>, but bugs or deficiencies in libraries and the 1572operating system may still cause problems. 1573 1574 <p>Support for older systems as targets for cross-compilation is less 1575problematic than support for them as hosts for GCC; if an enthusiast 1576wishes to make such a target work again (including resurrecting any of 1577the targets that never worked with GCC 2, starting from the last 1578version before they were removed), patches 1579<a href="../contribute.html">following the usual requirements</a> would be 1580likely to be accepted, since they should not affect the support for more 1581modern targets. 1582 1583 <p>For some systems, old versions of GNU binutils may also be useful, 1584and are available from <samp><span class="file">pub/binutils/old-releases</span></samp> on 1585<a href="http://sourceware.org/mirrors.html">sourceware.org mirror sites</a>. 1586 1587 <p>Some of the information on specific systems above relates to 1588such older systems, but much of the information 1589about GCC on such systems (which may no longer be applicable to 1590current GCC) is to be found in the GCC texinfo manual. 1591 1592 <p><hr /> 1593 1594<h3 class="heading"><a name="TOC70"></a><a name="elf"></a>all ELF targets (SVR4, Solaris 2, etc.)</h3> 1595 1596<p>C++ support is significantly better on ELF targets if you use the 1597<a href="./configure.html#with-gnu-ld">GNU linker</a>; duplicate copies of 1598inlines, vtables and template instantiations will be discarded 1599automatically. 1600 1601 <p><hr /> 1602<p><a href="./index.html">Return to the GCC Installation page</a> 1603 1604<!-- ***Old documentation****************************************************** --> 1605<!-- ***GFDL******************************************************************** --> 1606<!-- *************************************************************************** --> 1607<!-- Part 6 The End of the Document --> 1608</body></html> 1609 1610