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