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