diff options
Diffstat (limited to 'contrib/gcc/doc/install.texi')
-rw-r--r-- | contrib/gcc/doc/install.texi | 3823 |
1 files changed, 3823 insertions, 0 deletions
diff --git a/contrib/gcc/doc/install.texi b/contrib/gcc/doc/install.texi new file mode 100644 index 000000000000..6913d03d088c --- /dev/null +++ b/contrib/gcc/doc/install.texi @@ -0,0 +1,3823 @@ +\input texinfo.tex @c -*-texinfo-*- +@c @ifnothtml +@c %**start of header +@setfilename install.info +@settitle Installing GCC +@setchapternewpage odd +@c %**end of header +@c @end ifnothtml + +@c Specify title for specific html page +@ifset indexhtml +@settitle Installing GCC +@end ifset +@ifset specifichtml +@settitle Host/Target specific installation notes for GCC +@end ifset +@ifset downloadhtml +@settitle Downloading GCC +@end ifset +@ifset configurehtml +@settitle Installing GCC: Configuration +@end ifset +@ifset buildhtml +@settitle Installing GCC: Building +@end ifset +@ifset testhtml +@settitle Installing GCC: Testing +@end ifset +@ifset finalinstallhtml +@settitle Installing GCC: Final installation +@end ifset +@ifset binarieshtml +@settitle Installing GCC: Binaries +@end ifset +@ifset oldhtml +@settitle Installing GCC: Old documentation +@end ifset +@ifset gfdlhtml +@settitle Installing GCC: GNU Free Documentation License +@end ifset + +@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, +@c 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +@c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com + +@c Include everything if we're not making html +@ifnothtml +@set indexhtml +@set specifichtml +@set downloadhtml +@set configurehtml +@set buildhtml +@set testhtml +@set finalinstallhtml +@set binarieshtml +@set oldhtml +@set gfdlhtml +@end ifnothtml + +@c Part 2 Summary Description and Copyright +@macro copyrightnotice +Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, +1999, 2000, 2001, 2002 Free Software Foundation, Inc. +@sp 1 +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.1 or +any later version published by the Free Software Foundation; with no +Invariant Sections, the Front-Cover texts being (a) (see below), and +with the Back-Cover Texts being (b) (see below). A copy of the +license is included in the section entitled ``@uref{./gfdl.html,,GNU +Free Documentation License}''. + +(a) The FSF's Front-Cover Text is: + + A GNU Manual + +(b) The FSF's Back-Cover Text is: + + You have freedom to copy and modify this GNU Manual, like GNU + software. Copies published by the Free Software Foundation raise + funds for GNU development. +@end macro +@ifinfo +@copyrightnotice{} +@end ifinfo + +@c Part 3 Titlepage and Copyright +@titlepage +@sp 10 +@comment The title is printed in a large font. +@center @titlefont{Installing GCC} + +@c The following two commands start the copyright page. +@page +@vskip 0pt plus 1filll +@copyrightnotice{} +@end titlepage + +@c Part 4 Top node and Master Menu +@ifinfo +@node Top, , , (dir) +@comment node-name, next, Previous, up + +@menu +* Installing GCC:: This document describes the generic installation + procedure for GCC as well as detailing some target + specific installation instructions. + +* Specific:: Host/target specific installation notes for GCC. +* Binaries:: Where to get pre-compiled binaries. + +* Old:: Old installation documentation. + +* GNU Free Documentation License:: How you can copy and share this manual. +* Concept Index:: This index has two entries. +@end menu +@end ifinfo + +@c Part 5 The Body of the Document +@c ***Installing GCC********************************************************** +@ifnothtml +@comment node-name, next, previous, up +@node Installing GCC, Binaries, , Top +@end ifnothtml +@ifset indexhtml +@html +<h1 align="center">Installing GCC</h1> +@end html +@ifnothtml +@chapter Installing GCC +@end ifnothtml + +The latest version of this document is always available at +@uref{http://gcc.gnu.org/install/,,http://gcc.gnu.org/install/}. + +This document describes the generic installation procedure for GCC as well +as detailing some target specific installation instructions. + +GCC includes several components that previously were separate distributions +with their own installation instructions. This document supersedes all +package specific installation instructions. + +@emph{Before} starting the build/install procedure please check the +@ifnothtml +@ref{Specific, host/target specific installation notes}. +@end ifnothtml +@ifhtml +@uref{specific.html,,host/target specific installation notes}. +@end ifhtml +We recommend you browse the entire generic installation instructions before +you proceed. + +Lists of successful builds for released versions of GCC are +available at our web pages for +@uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,3.0} +and +@uref{http://gcc.gnu.org/gcc-2.95/buildstat.html,,2.95}. +These lists are updated as new information becomes available. + +The installation procedure itself is broken into five steps. + +@ifinfo +@menu +* Downloading the source:: +* Configuration:: +* Building:: +* Testing:: (optional) +* Final install:: +@end menu +@end ifinfo +@ifhtml +@enumerate +@item +@uref{download.html,,Downloading the source} +@item +@uref{configure.html,,Configuration} +@item +@uref{build.html,,Building} +@item +@uref{test.html,,Testing} (optional) +@item +@uref{finalinstall.html,,Final install} +@end enumerate +@end ifhtml + +Please note that GCC does not support @samp{make uninstall} and probably +won't do so in the near future as this would open a can of worms. Instead, +we suggest that you install GCC into a directory of its own and simply +remove that directory when you do not need that specific version of GCC +any longer, and, if shared libraries are installed there as well, no +more binaries exist that use them. + +@ifhtml +There are also some @uref{old.html,,old installation instructions}, +which are mostly obsolete but still contain some information which has +not yet been merged into the main part of this manual. +@end ifhtml + +@html +<hr> +<p> +@end html +@ifhtml +@uref{./index.html,,Return to the GCC Installation page} + +@copyrightnotice{} +@end ifhtml +@end ifset + +@c ***Downloading the source************************************************** +@ifnothtml +@comment node-name, next, previous, up +@node Downloading the source, Configuration, , Installing GCC +@end ifnothtml +@ifset downloadhtml +@html +<h1 align="center">Downloading GCC</h1> +@end html +@ifnothtml +@chapter Downloading GCC +@end ifnothtml +@cindex Downloading GCC +@cindex Downloading the Source + +GCC is distributed via @uref{http://gcc.gnu.org/cvs.html,,CVS} and FTP +tarballs compressed with @command{gzip} or +@command{bzip2}. It is possible to download a full distribution or specific +components. + +Please refer to our @uref{http://gcc.gnu.org/releases.html,,releases web page} +for information on how to obtain GCC@. + +The full distribution includes the C, C++, Objective-C, Fortran, Java, +and CHILL compilers. The full distribution also includes runtime libraries +for C++, Objective-C, Fortran, Java and CHILL. (GCC 3.0 does not +include CHILL.) In GCC 3.0 and later versions, GNU compiler testsuites +are also included in the full distribution. + +If you choose to download specific components, you must download the core +GCC distribution plus any language specific distributions you wish to +use. The core distribution includes the C language front end as well as the +shared components. Each language has a tarball which includes the language +front end as well as the language runtime (when appropriate). + +Unpack the core distribution as well as any language specific +distributions in the same directory. + +If you also intend to build binutils (either to upgrade an existing +installation or for use in place of the corresponding tools of your +OS), unpack the binutils distribution either in the same directory or +a separate one. In the latter case, add symbolic links to any +components of the binutils you intend to build alongside the compiler +(@file{bfd}, @file{binutils}, @file{gas}, @file{gprof}, @file{ld}, +@file{opcodes}, @dots{}) to the directory containing the GCC sources. + +@html +<hr> +<p> +@end html +@ifhtml +@uref{./index.html,,Return to the GCC Installation page} +@end ifhtml +@end ifset + +@c ***Configuration*********************************************************** +@ifnothtml +@comment node-name, next, previous, up +@node Configuration, Building, Downloading the source, Installing GCC +@end ifnothtml +@ifset configurehtml +@html +<h1 align="center">Installing GCC: Configuration</h1> +@end html +@ifnothtml +@chapter Installing GCC: Configuration +@end ifnothtml +@cindex Configuration +@cindex Installing GCC: Configuration + +Like most GNU software, GCC must be configured before it can be built. +This document describes the recommended configuration procedure +for both native and cross targets. + +We use @var{srcdir} to refer to the toplevel source directory for +GCC; we use @var{objdir} to refer to the toplevel build/object directory. + +If you obtained the sources via CVS, @var{srcdir} must refer to the top +@file{gcc} directory, the one where the @file{MAINTAINERS} can be found, +and not its @file{gcc} subdirectory, otherwise the build will fail. + +First, we @strong{highly} recommend that GCC be built into a +separate directory than the sources which does @strong{not} reside +within the source tree. This is how we generally build GCC; building +where @var{srcdir} == @var{objdir} should still work, but doesn't +get extensive testing; building where @var{objdir} is a subdirectory +of @var{srcdir} is unsupported. + +If you have previously built GCC in the same directory for a +different target machine, do @samp{make distclean} to delete all files +that might be invalid. One of the files this deletes is +@file{Makefile}; if @samp{make distclean} complains that @file{Makefile} +does not exist, it probably means that the directory is already suitably +clean. However, with the recommended method of building in a separate +@var{objdir}, you should simply use a different @var{objdir} for each +target. + +Second, when configuring a native system, either @command{cc} or +@command{gcc} must be in your path or you must set @env{CC} in +your environment before running configure. Otherwise the configuration +scripts may fail. + +Note that the bootstrap compiler and the resulting GCC must be link +compatible, else the bootstrap will fail with linker errors about +incompatible object file formats. Several multilibed targets are +affected by this requirement, see +@ifnothtml +@ref{Specific, host/target specific installation notes}. +@end ifnothtml +@ifhtml +@uref{specific.html,,host/target specific installation notes}. +@end ifhtml + +To configure GCC: + +@example + % mkdir @var{objdir} + % cd @var{objdir} + % @var{srcdir}/configure [@var{options}] [@var{target}] +@end example + + +@heading Target specification +@itemize @bullet +@item +GCC has code to correctly determine the correct value for @var{target} +for nearly all native systems. Therefore, we highly recommend you not +provide a configure target when configuring a native compiler. + +@item +@var{target} must be specified as @option{--target=@var{target}} +when configuring a cross compiler; examples of valid targets would be +i960-rtems, m68k-coff, sh-elf, etc. + +@item +Specifying just @var{target} instead of @option{--target=@var{target}} +implies that the host defaults to @var{target}. +@end itemize + + +@heading Options specification + +Use @var{options} to override several configure time options for +GCC@. A list of supported @var{options} follows; @command{configure +--help} may list other options, but those not listed below may not +work and should not normally be used. + +@table @code +@item --prefix=@var{dirname} +Specify the toplevel installation +directory. This is the recommended way to install the tools into a directory +other than the default. The toplevel installation directory defaults to +@file{/usr/local}. + +We @strong{highly} recommend against @var{dirname} being the same or a +subdirectory of @var{objdir} or vice versa. + +These additional options control where certain parts of the distribution +are installed. Normally you should not need to use these options. +@table @code + +@item --exec-prefix=@var{dirname} +Specify the toplevel installation directory for architecture-dependent +files. The default is @file{@var{prefix}}. + +@item --bindir=@var{dirname} +Specify the installation directory for the executables called by users +(such as @command{gcc} and @command{g++}). The default is +@file{@var{exec-prefix}/bin}. + +@item --libdir=@var{dirname} +Specify the installation directory for object code libraries and +internal parts of GCC@. The default is @file{@var{exec-prefix}/lib}. + +@item --with-slibdir=@var{dirname} +Specify the installation directory for the shared libgcc library. The +default is @file{@var{libdir}}. + +@item --infodir=@var{dirname} +Specify the installation directory for documentation in info format. +The default is @file{@var{prefix}/info}. + +@item --mandir=@var{dirname} +Specify the installation directory for manual pages. The default is +@file{@var{prefix}/man}. (Note that the manual pages are only extracts from +the full GCC manuals, which are provided in Texinfo format. The +@command{g77} manpage is unmaintained and may be out of date; the others +are derived by an automatic conversion process from parts of the full +manual.) + +@item --with-gxx-include-dir=@var{dirname} +Specify +the installation directory for G++ header files. The default is +@file{@var{prefix}/include/g++-v3}. + +@end table + +@item --program-prefix=@var{prefix} +GCC supports some transformations of the names of its programs when +installing them. This option prepends @var{prefix} to the names of +programs to install in @var{bindir} (see above). For example, specifying +@option{--program-prefix=foo-} would result in @samp{gcc} +being installed as @file{/usr/local/bin/foo-gcc}. + +@item --program-suffix=@var{suffix} +Appends @var{suffix} to the names of programs to install in @var{bindir} +(see above). For example, specifying @option{--program-suffix=-3.1} +would result in @samp{gcc} being installed as +@file{/usr/local/bin/gcc-3.1}. + +@item --program-transform-name=@var{pattern} +Applies the @samp{sed} script @var{pattern} to be applied to the names +of programs to install in @var{bindir} (see above). @var{pattern} has to +consist of one or more basic @samp{sed} editing commands, separated by +semicolons. For example, if you want the @samp{gcc} program name to be +transformed to the installed program @file{/usr/local/bin/myowngcc} and +the @samp{g++} program name to be transformed to +@file{/usr/local/bin/gspecial++} without changing other program names, +you could use the pattern +@option{--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/'} +to achieve this effect. + +All three options can be combined and used together, resulting in more +complex conversion patterns. As a basic rule, @var{prefix} (and +@var{suffix}) are prepended (appended) before further transformations +can happen with a special transformation script @var{pattern}. + +As currently implemented, this options only take effect for native +builds; cross compiler binaries' names are not transformed even when a +transformation is explicitly asked for by one of this options. + +For native builds, some of the installed programs are also installed +with the target alias in front of their name, as in +@samp{i686-pc-linux-gnu-gcc}. All of the above transformations happen +before the target alias is prepended to the name - so, specifying +@option{--program-prefix=foo-} and @option{program-suffix=-3.1}, the +resulting binary would be installed as +@file{/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1}. + +As a last shortcoming, none of the installed CHILL and Ada programs are +transformed yet, which will be fixed in some time. + +@item --with-local-prefix=@var{dirname} +Specify the +installation directory for local include files. The default is +@file{/usr/local}. Specify this option if you want the compiler to +search directory @file{@var{dirname}/include} for locally installed +header files @emph{instead} of @file{/usr/local/include}. + +You should specify @option{--with-local-prefix} @strong{only} if your +site has a different convention (not @file{/usr/local}) for where to put +site-specific files. + +The default value for @option{--with-local-prefix} is @file{/usr/local} +regardless of the value of @option{--prefix}. Specifying +@option{--prefix} has no effect on which directory GCC searches for +local header files. This may seem counterintuitive, but actually it is +logical. + +The purpose of @option{--prefix} is to specify where to @emph{install +GCC}. The local header files in @file{/usr/local/include}---if you put +any in that directory---are not part of GCC@. They are part of other +programs---perhaps many others. (GCC installs its own header files in +another directory which is based on the @option{--prefix} value.) + +@strong{Do not} specify @file{/usr} as the @option{--with-local-prefix}! +The directory you use for @option{--with-local-prefix} @strong{must not} +contain any of the system's standard header files. If it did contain +them, certain programs would be miscompiled (including GNU Emacs, on +certain targets), because this would override and nullify the header +file corrections made by the @code{fixincludes} script. + +Indications are that people who use this option use it based on mistaken +ideas of what it is for. People use it as if it specified where to +install part of GCC@. Perhaps they make this assumption because +installing GCC creates the directory. + +@item --enable-shared[=@var{package}[,@dots{}]] +Build shared versions of libraries, if shared libraries are supported on +the target platform. Unlike GCC 2.95.x and earlier, shared libraries +are enabled by default on all platforms that support shared libraries, +except for @samp{libobjc} which is built as a static library only by +default. + +If a list of packages is given as an argument, build shared libraries +only for the listed packages. For other packages, only static libraries +will be built. Package names currently recognized in the GCC tree are +@samp{libgcc} (also known as @samp{gcc}), @samp{libstdc++} (not +@samp{libstdc++-v3}), @samp{libffi}, @samp{zlib}, @samp{boehm-gc} and +@samp{libjava}. Note that @samp{libobjc} does not recognize itself by +any name, so, if you list package names in @option{--enable-shared}, +you will only get static Objective-C libraries. @samp{libf2c} and +@samp{libiberty} do not support shared libraries at all. + +Use @option{--disable-shared} to build only static libraries. Note that +@option{--disable-shared} does not accept a list of package names as +argument, only @option{--enable-shared} does. + +@item @anchor{with-gnu-as}--with-gnu-as +Specify that the compiler should assume that the +assembler it finds is the GNU assembler. However, this does not modify +the rules to find an assembler and will result in confusion if found +assembler is not actually the GNU assembler. (Confusion will also +result if the compiler finds the GNU assembler but has not been +configured with @option{--with-gnu-as}.) If you have more than one +assembler installed on your system, you may want to use this option in +connection with @option{--with-as=@var{pathname}}. + +The systems where it makes a difference whether you use the GNU assembler are +@samp{hppa1.0-@var{any}-@var{any}}, @samp{hppa1.1-@var{any}-@var{any}}, +@samp{i386-@var{any}-sysv}, @samp{i386-@var{any}-isc}, +@samp{i860-@var{any}-bsd}, @samp{m68k-bull-sysv}, +@samp{m68k-hp-hpux}, @samp{m68k-sony-bsd}, +@samp{m68k-altos-sysv}, @samp{m68000-hp-hpux}, +@samp{m68000-att-sysv}, @samp{@var{any}-lynx-lynxos}, +and @samp{mips-@var{any}}. +On any other system, @option{--with-gnu-as} has no effect. + +On the systems listed above (except for the HP-PA, for ISC on the +386, and for @samp{mips-sgi-irix5.*}), if you use the GNU assembler, +you should also use the GNU linker (and specify @option{--with-gnu-ld}). + +@item --with-as=@var{pathname} +Specify that the +compiler should use the assembler pointed to by @var{pathname}, rather +than the one found by the standard rules to find an assembler, which +are: +@itemize @bullet +@item +Check the +@file{@var{exec_prefix}/lib/gcc-lib/@var{target}/@var{version}} +directory, where @var{exec_prefix} defaults to @var{prefix} which +defaults to @file{/usr/local} unless overridden by the +@option{--prefix=@var{pathname}} switch described above. @var{target} is the +target system triple, such as @samp{sparc-sun-solaris2.7}, and +@var{version} denotes the GCC version, such as 3.0. +@item +Check operating system specific directories (e.g.@: @file{/usr/ccs/bin} on +Sun Solaris 2). +@end itemize +Note that these rules do not check for the value of @env{PATH}. You may +want to use @option{--with-as} if no assembler is installed in the +directories listed above, or if you have multiple assemblers installed +and want to choose one that is not found by the above rules. + +@item @anchor{with-gnu-ld}--with-gnu-ld +Same as @uref{#with-gnu-as,,@option{--with-gnu-as}} +but for linker. + + +@item --with-ld=@var{pathname} +Same as +@option{--with-as}, but for the linker. + +@item --with-stabs +Specify that stabs debugging +information should be used instead of whatever format the host normally +uses. Normally GCC uses the same debug format as the host system. + +On MIPS based systems and on Alphas, you must specify whether you want +GCC to create the normal ECOFF debugging format, or to use BSD-style +stabs passed through the ECOFF symbol table. The normal ECOFF debug +format cannot fully handle languages other than C@. BSD stabs format can +handle other languages, but it only works with the GNU debugger GDB@. + +Normally, GCC uses the ECOFF debugging format by default; if you +prefer BSD stabs, specify @option{--with-stabs} when you configure GCC@. + +No matter which default you choose when you configure GCC, the user +can use the @option{-gcoff} and @option{-gstabs+} options to specify explicitly +the debug format for a particular compilation. + +@option{--with-stabs} is meaningful on the ISC system on the 386, also, if +@option{--with-gas} is used. It selects use of stabs debugging +information embedded in COFF output. This kind of debugging information +supports C++ well; ordinary COFF debugging information does not. + +@option{--with-stabs} is also meaningful on 386 systems running SVR4. It +selects use of stabs debugging information embedded in ELF output. The +C++ compiler currently (2.6.0) does not support the DWARF debugging +information normally used on 386 SVR4 platforms; stabs provide a +workable alternative. This requires gas and gdb, as the normal SVR4 +tools can not generate or interpret stabs. + +@item --disable-multilib +Specify that multiple target +libraries to support different target variants, calling +conventions, etc should not be built. The default is to build a +predefined set of them. + +Some targets provide finer-grained control over which multilibs are built +(e.g., @option{--disable-softfloat}): +@table @code + +@item arc-*-elf* +biendian. + +@item arm-*-* +fpu, 26bit, underscore, interwork, biendian, nofmult. + +@item m68*-*-* +softfloat, m68881, m68000, m68020. + +@item mips*-*-* +single-float, biendian, softfloat. + +@item powerpc*-*-*, rs6000*-*-* +aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian, +sysv, aix. + +@end table + +@item --enable-threads +Specify that the target +supports threads. This affects the Objective-C compiler and runtime +library, and exception handling for other languages like C++ and Java. +On some systems, this is the default. + +In general, the best (and, in many cases, the only known) threading +model available will be configured for use. Beware that on some +systems, gcc has not been taught what threading models are generally +available for the system. In this case, @option{--enable-threads} is an +alias for @option{--enable-threads=single}. + +@item --disable-threads +Specify that threading support should be disabled for the system. +This is an alias for @option{--enable-threads=single}. + +@item --enable-threads=@var{lib} +Specify that +@var{lib} is the thread support library. This affects the Objective-C +compiler and runtime library, and exception handling for other languages +like C++ and Java. The possibilities for @var{lib} are: + +@table @code +@item aix +AIX thread support. +@item dce +DCE thread support. +@item mach +Generic MACH thread support, known to work on NeXTSTEP@. (Please note +that the file needed to support this configuration, @file{gthr-mach.h}, is +missing and thus this setting will cause a known bootstrap failure.) +@item no +This is an alias for @samp{single}. +@item posix +Generic POSIX thread support. +@item pthreads +Same as @samp{posix} on arm*-*-linux*, *-*-chorusos* and *-*-freebsd* +only. A future release of gcc might remove this alias or extend it +to all platforms. +@item rtems +RTEMS thread support. +@item single +Disable thread support, should work for all platforms. +@item solaris +Sun Solaris 2 thread support. +@item vxworks +VxWorks thread support. +@item win32 +Microsoft Win32 API thread support. +@end table + +@item --with-cpu=@var{cpu} +Specify which cpu variant the +compiler should generate code for by default. This is currently +only supported on the some ports, specifically arm, powerpc, and +SPARC@. If configure does not recognize the model name (e.g.@: arm700, +603e, or ultrasparc) you provide, please check the configure script +for a complete list of supported models. + +@item --enable-altivec +Specify that the target supports AltiVec vector enhancements. This +option will adjust the ABI for AltiVec enhancements, as well as generate +AltiVec code when appropriate. This option is only available for +PowerPC systems. + +@item --enable-target-optspace +Specify that target +libraries should be optimized for code space instead of code speed. +This is the default for the m32r platform. + +@item --disable-cpp +Specify that a user visible @command{cpp} program should not be installed. + +@item --with-cpp-install-dir=@var{dirname} +Specify that the user visible @command{cpp} program should be installed +in @file{@var{prefix}/@var{dirname}/cpp}, in addition to @var{bindir}. + +@item --enable-maintainer-mode +The build rules that +regenerate the GCC master message catalog @file{gcc.pot} are normally +disabled. This is because it can only be rebuilt if the complete source +tree is present. If you have changed the sources and want to rebuild the +catalog, configuring with @option{--enable-maintainer-mode} will enable +this. Note that you need a recent version of the @code{gettext} tools +to do so. + +@item --enable-version-specific-runtime-libs +Specify +that runtime libraries should be installed in the compiler specific +subdirectory (@file{@var{libsubdir}}) rather than the usual places. In +addition, @samp{libstdc++}'s include files will be installed in +@file{@var{libsubdir}/include/g++} unless you overruled it by using +@option{--with-gxx-include-dir=@var{dirname}}. Using this option is +particularly useful if you intend to use several versions of GCC in +parallel. This is currently supported by @samp{libf2c} and +@samp{libstdc++}, and is the default for @samp{libobjc} which cannot be +changed in this case. + +@item --enable-languages=@var{lang1},@var{lang2},@dots{} +Specify that only a particular subset of compilers and +their runtime libraries should be built. For a list of valid values for +@var{langN} you can issue the following command in the +@file{gcc} directory of your GCC source tree:@* +@example +grep language= */config-lang.in +@end example +Currently, you can use any of the following: +@code{ada}, @code{c}, @code{c++}, @code{f77}, @code{java}, @code{objc}. +@code{CHILL} is not currently maintained, and will almost +certainly fail to compile. Building the Ada compiler has special +requirements, see below.@* +If you do not pass this flag, all languages available in the @file{gcc} +sub-tree will be configured. Re-defining @code{LANGUAGES} when calling +@samp{make bootstrap} @strong{does not} work anymore, as those +language sub-directories might not have been configured! + +@item --disable-libgcj +Specify that the run-time libraries +used by GCJ should not be built. This is useful in case you intend +to use GCJ with some other run-time, or you're going to install it +separately, or it just happens not to build on your particular +machine. In general, if the Java front end is enabled, the GCJ +libraries will be enabled too, unless they're known to not work on +the target platform. If GCJ is enabled but @samp{libgcj} isn't built, you +may need to port it; in this case, before modifying the top-level +@file{configure.in} so that @samp{libgcj} is enabled by default on this platform, +you may use @option{--enable-libgcj} to override the default. + +@item --with-dwarf2 +Specify that the compiler should +use DWARF 2 debugging information as the default. + +@item --enable-win32-registry +@itemx --enable-win32-registry=@var{key} +@itemx --disable-win32-registry +The @option{--enable-win32-registry} option enables Windows-hosted GCC +to look up installations paths in the registry using the following key: + +@smallexample +@code{HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\@var{key}} +@end smallexample + +@var{key} defaults to GCC version number, and can be overridden by the +@option{--enable-win32-registry=@var{key}} option. Vendors and distributors +who use custom installers are encouraged to provide a different key, +perhaps one comprised of vendor name and GCC version number, to +avoid conflict with existing installations. This feature is enabled +by default, and can be disabled by @option{--disable-win32-registry} +option. This option has no effect on the other hosts. + +@item --nfp +Specify that the machine does not have a floating point unit. This +option only applies to @samp{m68k-sun-sunos@var{n}} and +@samp{m68k-isi-bsd}. On any other system, @option{--nfp} has no effect. + +@item --enable-checking +@itemx --enable-checking=@var{list} +When you specify this option, the compiler is built to perform checking +of tree node types when referencing fields of that node, and some other +internal consistency checks. This does not change the generated code, +but adds error checking within the compiler. This will slow down the +compiler and may only work properly if you are building the compiler +with GCC@. This is on by default when building from CVS or snapshots, +but off for releases. More control over the checks may be had by +specifying @var{list}; the categories of checks available are +@samp{misc}, @samp{tree}, @samp{gc}, @samp{rtl} and @samp{gcac}. The +default when @var{list} is not specified is @samp{misc,tree,gc}; the +checks @samp{rtl} and @samp{gcac} are very expensive. + +@item --enable-nls +@itemx --disable-nls +The @option{--enable-nls} option enables Native Language Support (NLS), +which lets GCC output diagnostics in languages other than American +English. Native Language Support is enabled by default if not doing a +canadian cross build. The @option{--disable-nls} option disables NLS@. + +@item --with-included-gettext +If NLS is enabled, the @option{--with-included-gettext} option causes the build +procedure to prefer its copy of GNU @command{gettext}. + +@item --with-catgets +If NLS is enabled, and if the host lacks @code{gettext} but has the +inferior @code{catgets} interface, the GCC build procedure normally +ignores @code{catgets} and instead uses GCC's copy of the GNU +@code{gettext} library. The @option{--with-catgets} option causes the +build procedure to use the host's @code{catgets} in this situation. + +@item --with-system-zlib +Use installed zlib rather than that included with GCC@. This option +only applies if the Java front end is being built. +@end table + +Some options which only apply to building cross compilers: +@table @code +@item --with-headers=@var{dir} +Specifies a directory +which has target include files. +@emph{This options is required} when building a cross +compiler, if @file{@var{prefix}/@var{target}/sys-include} doesn't pre-exist. +These include files will be copied into the @file{gcc} install directory. +Fixincludes will be run on these files to make them compatible with +GCC. +@item --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}'' +Specifies a list of directories which contain the target runtime +libraries. These libraries will be copied into the @file{gcc} install +directory. +@item --with-newlib +Specifies that @samp{newlib} is +being used as the target C library. This causes @code{__eprintf} to be +omitted from @file{libgcc.a} on the assumption that it will be provided by +@samp{newlib}. +@end table + +Note that each @option{--enable} option has a corresponding +@option{--disable} option and that each @option{--with} option has a +corresponding @option{--without} option. + +@html +<hr> +<p> +@end html +@ifhtml +@uref{./index.html,,Return to the GCC Installation page} +@end ifhtml +@end ifset + +@c ***Building**************************************************************** +@ifnothtml +@comment node-name, next, previous, up +@node Building, Testing, Configuration, Installing GCC +@end ifnothtml +@ifset buildhtml +@html +<h1 align="center">Installing GCC: Building</h1> +@end html +@ifnothtml +@chapter Building +@end ifnothtml +@cindex Installing GCC: Building + +Now that GCC is configured, you are ready to build the compiler and +runtime libraries. + +We @strong{highly} recommend that GCC be built using GNU make; +other versions may work, then again they might not. +GNU make is required for compiling GNAT, the Ada compiler. + +(For example, many broken versions of make will fail if you use the +recommended setup where @var{objdir} is different from @var{srcdir}. +Other broken versions may recompile parts of the compiler when +installing the compiler.) + +Some commands executed when making the compiler may fail (return a +nonzero status) and be ignored by @code{make}. These failures, which +are often due to files that were not found, are expected, and can safely +be ignored. + +It is normal to have compiler warnings when compiling certain files. +Unless you are a GCC developer, you can generally ignore these warnings +unless they cause compilation to fail. + +On certain old systems, defining certain environment variables such as +@env{CC} can interfere with the functioning of @command{make}. + +If you encounter seemingly strange errors when trying to build the +compiler in a directory other than the source directory, it could be +because you have previously configured the compiler in the source +directory. Make sure you have done all the necessary preparations. + +If you build GCC on a BSD system using a directory stored in an old System +V file system, problems may occur in running @code{fixincludes} if the +System V file system doesn't support symbolic links. These problems +result in a failure to fix the declaration of @code{size_t} in +@file{sys/types.h}. If you find that @code{size_t} is a signed type and +that type mismatches occur, this could be the cause. + +The solution is not to use such a directory for building GCC@. + +When building from CVS or snapshots, or if you modify parser sources, +you need the Bison parser generator installed. Any version 1.25 or +later should work; older versions may also work. If you do not modify +parser sources, releases contain the Bison-generated files and you do +not need Bison installed to build them. + +When building from CVS or snapshots, or if you modify Texinfo +documentation, you need version 4.0 or later of Texinfo installed if you +want Info documentation to be regenerated. Releases contain Info +documentation pre-built for the unmodified documentation in the release. + +@section Building a native compiler + +For a native build issue the command @samp{make bootstrap}. This +will build the entire GCC system, which includes the following steps: + +@itemize @bullet +@item +Build host tools necessary to build the compiler such as texinfo, bison, +gperf. + +@item +Build target tools for use by the compiler such as binutils (bfd, +binutils, gas, gprof, ld, and opcodes) +if they have been individually linked +or moved into the top level GCC source tree before configuring. + +@item +Perform a 3-stage bootstrap of the compiler. + +@item +Perform a comparison test of the stage2 and stage3 compilers. + +@item +Build runtime libraries using the stage3 compiler from the previous step. + +@end itemize + +If you are short on disk space you might consider @samp{make +bootstrap-lean} instead. This is identical to @samp{make +bootstrap} except that object files from the stage1 and +stage2 of the 3-stage bootstrap of the compiler are deleted as +soon as they are no longer needed. + + +If you want to save additional space during the bootstrap and in +the final installation as well, you can build the compiler binaries +without debugging information with @samp{make CFLAGS='-O' LIBCFLAGS='-g +-O2' LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap}. This will save +roughly 40% of disk space both for the bootstrap and the final installation. +(Libraries will still contain debugging information.) + +If you wish to use non-default GCC flags when compiling the stage2 and +stage3 compilers, set @code{BOOT_CFLAGS} on the command line when doing +@samp{make bootstrap}. Non-default optimization flags are less well +tested here than the default of @samp{-g -O2}, but should still work. +In a few cases, you may find that you need to specify special flags such +as @option{-msoft-float} here to complete the bootstrap; or, if the +native compiler miscompiles the stage1 compiler, you may need to work +around this, by choosing @code{BOOT_CFLAGS} to avoid the parts of the +stage1 compiler that were miscompiled, or by using @samp{make +bootstrap4} to increase the number of stages of bootstrap. + +If you used the flag @option{--enable-languages=@dots{}} to restrict +the compilers to be built, only those you've actually enabled will be +built. This will of course only build those runtime libraries, for +which the particular compiler has been built. Please note, +that re-defining @env{LANGUAGES} when calling @samp{make bootstrap} +@strong{does not} work anymore! + +If the comparison of stage2 and stage3 fails, this normally indicates +that the stage2 compiler has compiled GCC incorrectly, and is therefore +a potentially serious bug which you should investigate and report. (On +a few systems, meaningful comparison of object files is impossible; they +always appear ``different''. If you encounter this problem, you will +need to disable comparison in the @file{Makefile}.) + +@section Building a cross compiler + +We recommend reading the +@uref{http://www.objsw.com/CrossGCC/,,crossgcc FAQ} +for information about building cross compilers. + +When building a cross compiler, it is not generally possible to do a +3-stage bootstrap of the compiler. This makes for an interesting problem +as parts of GCC can only be built with GCC@. + +To build a cross compiler, we first recommend building and installing a +native compiler. You can then use the native GCC compiler to build the +cross compiler. The installed native compiler needs to be GCC version +2.95 or later. + +Assuming you have already installed a native copy of GCC and configured +your cross compiler, issue the command @command{make}, which performs the +following steps: + +@itemize @bullet +@item +Build host tools necessary to build the compiler such as texinfo, bison, +gperf. + +@item +Build target tools for use by the compiler such as binutils (bfd, +binutils, gas, gprof, ld, and opcodes) +if they have been individually linked or moved into the top level GCC source +tree before configuring. + +@item +Build the compiler (single stage only). + +@item +Build runtime libraries using the compiler from the previous step. +@end itemize + +Note that if an error occurs in any step the make process will exit. + +@section Building in parallel + +If you have a multiprocessor system you can use @samp{make bootstrap +MAKE="make -j 2" -j 2} or just @samp{make -j 2 bootstrap} +for GNU Make 3.79 and above instead of just @samp{make bootstrap} +when building GCC@. You can use a bigger number instead of two if +you like. In most cases, it won't help to use a number bigger than +the number of processors in your machine. + +@section Building the Ada compiler + +In order to build GNAT, the Ada compiler, you need a working GNAT +compiler, since the Ada front end is written in Ada (with some +GNAT-specific extensions), and GNU make. + +However, you do not need a full installation of GNAT, just the GNAT +binary @file{gnat1}, a copy of @file{gnatbind}, and a compiler driver +which can deal with Ada input (by invoking the @file{gnat1} binary). +You can specify this compiler driver by setting the @env{ADAC} +environment variable at the configure step. @command{configure} can +detect the driver automatically if it has got a common name such as +@command{gcc} or @command{gnatgcc}. Of course, you still need a working +C compiler (the compiler driver can be different or not). + +Additional build tools (such as @command{gnatmake}) or a working GNAT +run-time library installation are usually @emph{not} required. However, +if you want to boostrap the compiler using a minimal version of GNAT, +you have to issue the following commands before invoking @samp{make +boostrap} (this assumes that you start with an unmodified and consistent +source distribution): + +@example + cd @var{srcdir}/gcc/ada + touch treeprs.ads [es]info.h nmake.ad[bs] +@end example + +At the moment, the GNAT library and several tools for GNAT are not built +by @samp{make bootstrap}. You have to invoke +@samp{make gnatlib_and_tools} in the @file{@var{objdir}/gcc} +subdirectory before proceeding with the next steps. + +For example, you can build a native Ada compiler by issuing the +following commands (assuming @command{make} is GNU make): + +@example + cd @var{objdir} + @var{srcdir}/configure --enable-languages=c,ada + cd @var{srcdir}/gcc/ada + touch treeprs.ads [es]info.h nmake.ad[bs] + cd @var{objdir} + make bootstrap + cd gcc + make gnatlib_and_tools + cd .. +@end example + +Currently, when compiling the Ada front end, you cannot use the parallel +build feature described in the previous section. + +@html +<hr> +<p> +@end html +@ifhtml +@uref{./index.html,,Return to the GCC Installation page} +@end ifhtml +@end ifset + +@c ***Testing***************************************************************** +@ifnothtml +@comment node-name, next, previous, up +@node Testing, Final install, Building, Installing GCC +@end ifnothtml +@ifset testhtml +@html +<h1 align="center">Installing GCC: Testing</h1> +@end html +@ifnothtml +@chapter Installing GCC: Testing +@end ifnothtml +@cindex Testing +@cindex Installing GCC: Testing +@cindex Testsuite + +Before you install GCC, you might wish to run the testsuite. This +step is optional and may require you to download additional software. + +First, you must have @uref{download.html,,downloaded the testsuites}. +The full distribution contains testsuites; only if you downloaded the +``core'' compiler plus any front ends, you do not have the testsuites. + +Second, you must have a @uref{http://www.gnu.org/software/dejagnu/,,current version of DejaGnu} installed; +dejagnu 1.3 is not sufficient. + +Now you may need specific preparations: + +@itemize @bullet + +@item +The following environment variables may need to be set appropriately, as in +the following example (which assumes that DejaGnu has been installed +under @file{/usr/local}): + +@example + TCL_LIBRARY = /usr/local/share/tcl8.0 + DEJAGNULIBS = /usr/local/share/dejagnu +@end example + +On systems such as Cygwin, these paths are required to be actual +paths, not mounts or links; presumably this is due to some lack of +portability in the DejaGnu code. + +If the directories where @command{runtest} and @command{expect} were +installed are in the @env{PATH}, it should not be necessary to set these +environment variables. + +@end itemize + +Finally, you can run the testsuite (which may take a long time): +@example + cd @var{objdir}; make -k check +@end example + +The testing process will try to test as many components in the GCC +distribution as possible, including the C, C++, Objective-C and Fortran +compilers as well as the C++ and Java runtime libraries. + +@section How can I run the test suite on selected tests? + +As a first possibility to cut down the number of tests that are run it is +possible to use @samp{make check-gcc} or @samp{make check-g++} +in the @file{gcc} subdirectory of the object directory. To further cut down the +tests the following is possible: + +@example + make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}" +@end example + +This will run all @command{gcc} execute tests in the testsuite. + +@example + make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}" +@end example + +This will run the @command{g++} ``old-deja'' tests in the testsuite where the filename +matches @samp{9805*}. + +The @file{*.exp} files are located in the testsuite directories of the GCC +source, the most important ones being @file{compile.exp}, +@file{execute.exp}, @file{dg.exp} and @file{old-deja.exp}. +To get a list of the possible @file{*.exp} files, pipe the +output of @samp{make check} into a file and look at the +@samp{Running @dots{} .exp} lines. + +@section How to interpret test results + +After the testsuite has run you'll find various @file{*.sum} and @file{*.log} +files in the testsuite subdirectories. The @file{*.log} files contain a +detailed log of the compiler invocations and the corresponding +results, the @file{*.sum} files summarize the results. These summaries list +all the tests that have been run with a corresponding status code: + +@itemize @bullet +@item +PASS: the test passed as expected +@item +XPASS: the test unexpectedly passed +@item +FAIL: the test unexpectedly failed +@item +XFAIL: the test failed as expected +@item +UNSUPPORTED: the test is not supported on this platform +@item +ERROR: the testsuite detected an error +@item +WARNING: the testsuite detected a possible problem +@end itemize + +It is normal for some tests to report unexpected failures. At the +current time our testing harness does not allow fine grained control +over whether or not a test is expected to fail. We expect to fix this +problem in future releases. + + +@section Submitting test results + +If you want to report the results to the GCC project, use the +@file{contrib/test_summary} shell script. Start it in the @var{objdir} with + +@example + @var{srcdir}/contrib/test_summary -p your_commentary.txt \ + -m gcc-testresults@@gcc.gnu.org |sh +@end example + +This script uses the @command{Mail} program to send the results, so +make sure it is in your @env{PATH}. The file @file{your_commentary.txt} is +prepended to the testsuite summary and should contain any special +remarks you have on your results or your build environment. Please +do not edit the testsuite result block or the subject line, as these +messages are automatically parsed and presented at the +@uref{http://gcc.gnu.org/testresults/,,GCC testresults} web +page. Here you can also gather information on how specific tests +behave on different platforms and compare them with your results. A +few failing testcases are possible even on released versions and you +should look here first if you think your results are unreasonable. + +@html +<hr> +<p> +@end html +@ifhtml +@uref{./index.html,,Return to the GCC Installation page} +@end ifhtml +@end ifset + +@c ***Final install*********************************************************** +@ifnothtml +@comment node-name, next, previous, up +@node Final install, , Testing, Installing GCC +@end ifnothtml +@ifset finalinstallhtml +@html +<h1 align="center">Installing GCC: Final installation</h1> +@end html +@ifnothtml +@chapter Installing GCC: Final installation +@end ifnothtml + +Now that GCC has been built (and optionally tested), you can install it with +@example +cd @var{objdir}; make install +@end example + +That step completes the installation of GCC; user level binaries can +be found in @file{@var{prefix}/bin} where @var{prefix} is the value you +specified with the @option{--prefix} to configure (or @file{/usr/local} +by default). (If you specified @option{--bindir}, that directory will +be used instead; otherwise, if you specified @option{--exec-prefix}, +@file{@var{exec-prefix}/bin} will be used.) Headers for the C++ and +Java libraries are installed in @file{@var{prefix}/include}; libraries +in @file{@var{libdir}} (normally @file{@var{prefix}/lib}); internal +parts of the compiler in @file{@var{libdir}/gcc-lib}; documentation in +info format in @file{@var{infodir}} (normally @file{@var{prefix}/info}). + +If you built a released version of GCC then if you don't mind, please +quickly review the build status page for +@uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,3.0} or +@uref{http://gcc.gnu.org/gcc-2.95/buildstat.html,,2.95}. +If your system is not listed for the version of GCC that you built, +send a note to +@email{gcc@@gcc.gnu.org} indicating +that you successfully built and installed GCC. +Include the following information: + +@itemize @bullet +@item +Output from running @file{@var{srcdir}/config.guess}. Do not send us +that file itself, just the one-line output from running it. + +@item +The output of @samp{gcc -v} for your newly installed gcc. +This tells us which version of GCC you built and the options you passed to +configure. + +@item +If the build was for GNU/Linux, also include: +@itemize @bullet +@item +The distribution name and version (e.g., Red Hat 7.1 or Debian 2.2.3); +this information should be available from @file{/etc/issue}. + +@item +The version of the Linux kernel, available from @samp{uname --version} +or @samp{uname -a}. + +@item +The version of glibc you used; for RPM-based systems like Red Hat, +Mandrake, and SuSE type @samp{rpm -q glibc} to get the glibc version, +and on systems like Debian and Progeny use @samp{dpkg -l libc6}. +@end itemize +For other systems, you can include similar information if you think it is +relevant. + +@item +Any other information that you think would be useful to people building +GCC on the same configuration. The new entry in the build status list +will include a link to the archived copy of your message. +@end itemize + +We'd also like to know if the +@ifnothtml +@ref{Specific, host/target specific installation notes} +@end ifnothtml +@ifhtml +@uref{specific.html,,host/target specific installation notes} +@end ifhtml +didn't include your host/target information or if that information is +incomplete or out of date. Send a note to +@email{gcc@@gcc.gnu.org} telling us how the information should be changed. + +If you find a bug, please report it following our +@uref{../bugs.html,,bug reporting guidelines}. + +If you want to print the GCC manuals, do @samp{cd @var{objdir}; make +dvi}. You will need to have @command{texi2dvi} (version at least 4.0) +and @TeX{} installed. This creates a number of @file{.dvi} files in +subdirectories of @file{@var{objdir}}; these may be converted for +printing with programs such as @command{dvips}. You can also +@uref{http://www.gnu.org/order/order.html,,buy printed manuals from the +Free Software Foundation}, though such manuals may not be for the most +recent version of GCC@. + +@html +<hr> +<p> +@end html +@ifhtml +@uref{./index.html,,Return to the GCC Installation page} +@end ifhtml +@end ifset + +@c ***Binaries**************************************************************** +@ifnothtml +@comment node-name, next, previous, up +@node Binaries, Specific, Installing GCC, Top +@end ifnothtml +@ifset binarieshtml +@html +<h1 align="center">Installing GCC: Binaries</h1> +@end html +@ifnothtml +@chapter Installing GCC: Binaries +@end ifnothtml +@cindex Binaries +@cindex Installing GCC: Binaries + +We are often asked about pre-compiled versions of GCC@. While we cannot +provide these for all platforms, below you'll find links to binaries for +various platforms where creating them by yourself is not easy due to various +reasons. + +Please note that we did not create these binaries, nor do we +support them. If you have any problems installing them, please +contact their makers. + +@itemize +@item +AIX: +@itemize +@item +@uref{http://freeware.bull.net,,Bull's Freeware and Shareware Archive for AIX}; + +@item +@uref{http://aixpdslib.seas.ucla.edu,,UCLA Software Library for AIX}; +@end itemize + +@item +DOS---@uref{http://www.delorie.com/djgpp/,,DJGPP}; + +@item +HP-UX: +@itemize +@item +@uref{http://hpux.cae.wisc.edu/,,HP-UX Porting Center}; + +@item +@uref{ftp://sunsite.informatik.rwth-aachen.de/pub/packages/gcc_hpux/,,Binaries for HP-UX 11.00 at Aachen University of Technology}. +@end itemize + +@item +@uref{http://www.sco.com/skunkware/devtools/index.html#gcc,,SCO +OpenServer/Unixware}; + +@item +Solaris 2 (SPARC, Intel)---@uref{http://www.sunfreeware.com/,,Sunfreeware}; + +@item +SGI---@uref{http://freeware.sgi.com/,,SGI Freeware}; + +@item +Windows 95, 98, and NT: +@itemize +@item +The @uref{http://sources.redhat.com/cygwin/,,Cygwin} project; +@item +@uref{http://www.xraylith.wisc.edu/~khan/software/gnu-win32/,,GNU Win32} +related projects by Mumit Khan. +@end itemize + +@item +@uref{ftp://ftp.thewrittenword.com/packages/free/by-name/,,The +Written Word} offers binaries for Solaris 2.5.1, 2.6, 2.7/SPARC, 2.7/Intel, +IRIX 6.2, 6.5, Digital UNIX 4.0D, HP-UX 10.20, and HP-UX 11.00. + +@item +Hitachi H8/300[HS]---@uref{http://h8300-hms.sourceforge.net/,,GNU +Development Tools for the Hitachi H8/300[HS] Series} + +@end itemize + +In addition to those specific offerings, you can get a binary +distribution CD-ROM from the +@uref{http://www.fsf.org/order/order.html,,Free Software Foundation}. +It contains binaries for a number of platforms, and +includes not only GCC, but other stuff as well. The current CD does +not contain the latest version of GCC, but it should allow +bootstrapping the compiler. An updated version of that disk is in the +works. + +@html +<hr> +<p> +@end html +@ifhtml +@uref{./index.html,,Return to the GCC Installation page} +@end ifhtml +@end ifset + +@c ***Specific**************************************************************** +@ifnothtml +@comment node-name, next, previous, up +@node Specific, Old, Binaries, Top +@end ifnothtml +@ifset specifichtml +@html +<h1 align="center">Host/target specific installation notes for GCC</h1> +@end html +@ifnothtml +@chapter Host/target specific installation notes for GCC +@end ifnothtml +@cindex Specific +@cindex Specific installation notes +@cindex Target specific installation +@cindex Host specific installation +@cindex Target specific installation notes + +Please read this document carefully @emph{before} installing the +GNU Compiler Collection on your machine. + +Lists of successful builds for released versions of GCC are +available at our web pages for +@uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,3.0} +and +@uref{http://gcc.gnu.org/gcc-2.95/buildstat.html,,2.95}. +These lists are updated as new information becomes available. + +@ifhtml +@itemize +@item +@uref{#1750a-*-*,,1750a-*-*} +@item +@uref{#a29k,,a29k} +@item +@uref{#a29k-*-bsd,,a29k-*-bsd} +@item +@uref{#alpha*-*-*,,alpha*-*-*} +@item +@uref{#alpha*-dec-osf*,,alpha*-dec-osf*} +@item +@uref{#alphaev5-cray-unicosmk*,,alphaev5-cray-unicosmk*} +@item +@uref{#arc-*-elf,,arc-*-elf} +@item +@uref{#arm-*-aout,,arm-*-aout} +@item +@uref{#arm-*-elf,,arm-*-elf} +@item +@uref{#arm*-*-linux-gnu,,arm*-*-linux-gnu} +@item +@uref{#arm-*-riscix,,arm-*-riscix} +@item +@uref{#avr,,avr} +@item +@uref{#c4x,,c4x} +@item +@uref{#dos,,DOS} +@item +@uref{#dsp16xx,,dsp16xx} +@item +@uref{#elxsi-elxsi-bsd,,elxsi-elxsi-bsd} +@item +@uref{#*-*-freebsd*,,*-*-freebsd*} +@item +@uref{#h8300-hms,,h8300-hms} +@item +@uref{#hppa*-hp-hpux*,,hppa*-hp-hpux*} +@item +@uref{#hppa*-hp-hpux9,,hppa*-hp-hpux9} +@item +@uref{#hppa*-hp-hpux10,,hppa*-hp-hpux10} +@item +@uref{#hppa*-hp-hpux11,,hppa*-hp-hpux11} +@item +@uref{#i370-*-*,,i370-*-*} +@item +@uref{#*-*-linux-gnu,,*-*-linux-gnu} +@item +@uref{#ix86-*-linux*oldld,,i?86-*-linux*oldld} +@item +@uref{#ix86-*-linux*aout,,i?86-*-linux*aout} +@item +@uref{#ix86-*-linux*,,i?86-*-linux*} +@item +@uref{#ix86-*-sco,,i?86-*-sco} +@item +@uref{#ix86-*-sco3.2v4,,i?86-*-sco3.2v4} +@item +@uref{#ix86-*-sco3.2v5*,,i?86-*-sco3.2v5*} +@item +@uref{#ix86-*-udk,,i?86-*-udk} +@item +@uref{#ix86-*-isc,,i?86-*-isc} +@item +@uref{#ix86-*-esix,,i?86-*-esix} +@item +@uref{#ix86-ibm-aix,,i?86-ibm-aix} +@item +@uref{#ix86-sequent-bsd,,i?86-sequent-bsd} +@item +@uref{#ix86-sequent-ptx1*,,i?86-sequent-ptx1*, i?86-sequent-ptx2*} +@item +@uref{#ix86-*-sysv3*,,i?86-*-sysv3*} +@item +@uref{#i860-intel-osf*,,i860-intel-osf*} +@item +@uref{#ia64-*-linux,,ia64-*-linux} +@item +@uref{#*-lynx-lynxos,,*-lynx-lynxos} +@item +@uref{#*-ibm-aix*,,*-ibm-aix*} +@item +@uref{#m32r-*-elf,,m32r-*-elf} +@item +@uref{#m68000-hp-bsd,,m68000-hp-bsd} +@item +@uref{#m6811-elf,,m6811-elf} +@item +@uref{#m6812-elf,,m6812-elf} +@item +@uref{#m68k-altos,,m68k-altos} +@item +@uref{#m68k-apple-aux,,m68k-apple-aux} +@item +@uref{#m68k-att-sysv,,m68k-att-sysv} +@item +@uref{#m68k-bull-sysv,,m68k-bull-sysv} +@item +@uref{#m68k-crds-unox,,m68k-crds-unox} +@item +@uref{#m68k-hp-hpux,,m68k-hp-hpux} +@item +@uref{#m68k-*-nextstep*,,m68k-*-nextstep*} +@item +@uref{#m68k-ncr-*,,m68k-ncr-*} +@item +@uref{#m68k-sun,,m68k-sun} +@item +@uref{#m68k-sun-sunos4.1.1,,m68k-sun-sunos4.1.1} +@item +@uref{#m88k-*-svr3,,m88k-*-svr3} +@item +@uref{#m88k-*-dgux,,m88k-*-dgux} +@item +@uref{#m88k-tektronix-sysv3,,m88k-tektronix-sysv3} +@item +@uref{#mips-*-*,,mips-*-*} +@item +@uref{#mips-dec-*,,mips-dec-*} +@item +@uref{#mips-mips-bsd,,mips-mips-bsd} +@item +@uref{#mips-mips-riscos*,,mips-mips-riscos*} +@item +@uref{#mips-sgi-irix4,,mips-sgi-irix4} +@item +@uref{#mips-sgi-irix5,,mips-sgi-irix5} +@item +@uref{#mips-sgi-irix6,,mips-sgi-irix6} +@item +@uref{#mips-sony-sysv,,mips-sony-sysv} +@item +@uref{#ns32k-encore,,ns32k-encore} +@item +@uref{#ns32k-*-genix,,ns32k-*-genix} +@item +@uref{#ns32k-sequent,,ns32k-sequent} +@item +@uref{#ns32k-utek,,ns32k-utek} +@item +@uref{#powerpc*-*-*,,powerpc*-*-*, powerpc-*-sysv4} +@item +@uref{#powerpc-*-darwin*,,powerpc-*-darwin*} +@item +@uref{#powerpc-*-elf,,powerpc-*-elf, powerpc-*-sysv4} +@item +@uref{#powerpc-*-linux-gnu*,,powerpc-*-linux-gnu*} +@item +@uref{#powerpc-*-netbsd*,,powerpc-*-netbsd*} +@item +@uref{#powerpc-*-eabiaix,,powerpc-*-eabiaix} +@item +@uref{#powerpc-*-eabisim,,powerpc-*-eabisim} +@item +@uref{#powerpc-*-eabi,,powerpc-*-eabi} +@item +@uref{#powerpcle-*-elf,,powerpcle-*-elf, powerpcle-*-sysv4} +@item +@uref{#powerpcle-*-eabisim,,powerpcle-*-eabisim} +@item +@uref{#powerpcle-*-eabi,,powerpcle-*-eabi} +@item +@uref{#powerpcle-*-winnt,,powerpcle-*-winnt, powerpcle-*-pe} +@item +@uref{#romp-*-aos,,romp-*-aos, romp-*-mach} +@item +@uref{#s390-*-linux*} +@item +@uref{#s390x-*-linux*} +@item +@uref{#*-*-solaris2*,,*-*-solaris2*} +@item +@uref{#sparc-sun-solaris2*,,sparc-sun-solaris2*} +@item +@uref{#sparc-sun-solaris2.7,,sparc-sun-solaris2.7} +@item +@uref{#*-*-solaris2.8,,*-*-solaris2.8} +@item +@uref{#sparc-sun-sunos4*,,sparc-sun-sunos4*} +@item +@uref{#sparc-unknown-linux-gnulibc1,,sparc-unknown-linux-gnulibc1} +@item +@uref{#sparc-*-linux*,,sparc-*-linux*} +@item +@uref{#sparc64-*-*,,sparc64-*-*} +@item +@uref{#sparcv9-*-solaris2*,,sparcv9-*-solaris2*} +@item +@uref{#*-*-sysv*,,*-*-sysv*} +@item +@uref{#vax-dec-ultrix,,vax-dec-ultrix} +@item +@uref{#we32k-*-*,,we32k-*-*} +@item +@uref{#xtensa-*-elf,,xtensa-*-elf} +@item +@uref{#xtensa-*-linux*,,xtensa-*-linux*} +@item +@uref{#windows,,Microsoft Windows} +@item +@uref{#os2,,OS/2} +@item +@uref{#older,,Older systems} +@end itemize + +@itemize +@item +@uref{#elf_targets,,all ELF targets} (SVR4, Solaris 2, etc.) +@end itemize +@end ifhtml + + +@html +<!-- -------- host/target specific issues start here ---------------- --> +<hr> +@end html +@heading @anchor{1750a-*-*}1750a-*-* +MIL-STD-1750A processors. + +The MIL-STD-1750A cross configuration produces output for +@code{as1750}, an assembler/linker available under the GNU General Public +License for the 1750A@. @code{as1750} can be obtained at +@uref{ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/}. +A similarly licensed simulator for +the 1750A is available from same address. + +You should ignore a fatal error during the building of @samp{libgcc} +(@samp{libgcc} is not yet implemented for the 1750A@.) + +The @code{as1750} assembler requires the file @file{ms1750.inc}, which is +found in the directory @file{gcc/config/1750a}. + +GCC produced the same sections as the Fairchild F9450 C Compiler, +namely: + +@table @code +@item Normal +The program code section. + +@item Static +The read/write (RAM) data section. + +@item Konst +The read-only (ROM) constants section. + +@item Init +Initialization section (code to copy KREL to SREL)@. +@end table + +The smallest addressable unit is 16 bits (@code{BITS_PER_UNIT} is 16). This +means that type @code{char} is represented with a 16-bit word per character. +The 1750A's ``Load/Store Upper/Lower Byte'' instructions are not used by +GCC@. + +@html +</p> +<hr> +@end html +@heading @anchor{a29k}a29k +AMD Am29k-family processors. These are normally used in embedded +applications. There are no standard Unix configurations. +This configuration +corresponds to AMD's standard calling sequence and binary interface +and is compatible with other 29k tools. + +You may need to make a variant of the file @file{a29k.h} for your +particular configuration. + +@html +</p> +<hr> +@end html +@heading @anchor{a29k-*-bsd}a29k-*-bsd +AMD Am29050 used in a system running a variant of BSD Unix. + +@html +</p> +<hr> +@end html +@heading @anchor{alpha*-*-*}alpha*-*-* + +This section contains general configuration information for all +alpha-based platforms using ELF (in particular, ignore this section for +DEC OSF/1, Digital UNIX and Tru64 UNIX)@. In addition to reading this +section, please read all other sections that match your target. + +We require binutils 2.11.2 or newer. +Previous binutils releases had a number of problems with DWARF 2 +debugging information, not the least of which is incorrect linking of +shared libraries. + +@html +</p> +<hr> +@end html +@heading @anchor{alpha*-dec-osf*}alpha*-dec-osf* +Systems using processors that implement the DEC Alpha architecture and +are running the DEC/Compaq Unix (DEC OSF/1, Digital UNIX, or Compaq +Tru64 UNIX) operating system, for example the DEC Alpha AXP systems. + +In Tru64 UNIX V5.1, Compaq introduced a new assembler that does not +currently (2001-06-13) work with @command{mips-tfile}. As a workaround, +we need to use the old assembler, invoked via the barely documented +@option{-oldas} option. To bootstrap GCC, you either need to use the +Compaq C Compiler: + +@example + % CC=cc @var{srcdir}/configure [@var{options}] [@var{target}] +@end example + +or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0: + +@example + % CC=gcc -Wa,-oldas @var{srcdir}/configure [@var{options}] [@var{target}] +@end example + +As of GNU binutils 2.11.2, neither GNU @command{as} nor GNU @command{ld} +are supported on Tru64 UNIX, so you must not configure GCC with +@option{--with-gnu-as} or @option{--with-gnu-ld}. + +The @option{--enable-threads} options isn't supported yet. A patch is +in preparation for a future release. The Java runtime library has been +reported to work on Tru64 UNIX V4.0F, V5.0, and V5.1, so you may try +@option{--enable-libgcj} and report your results. + +GCC writes a @samp{.verstamp} directive to the assembler output file +unless it is built as a cross-compiler. It gets the version to use from +the system header file @file{/usr/include/stamp.h}. If you install a +new version of DEC Unix, you should rebuild GCC to pick up the new version +stamp. + +Note that since the Alpha is a 64-bit architecture, cross-compilers from +32-bit machines will not generate code as efficient as that generated +when the compiler is running on a 64-bit machine because many +optimizations that depend on being able to represent a word on the +target in an integral value on the host cannot be performed. Building +cross-compilers on the Alpha for 32-bit machines has only been tested in +a few cases and may not work properly. + +@code{make compare} may fail on old versions of DEC Unix unless you add +@option{-save-temps} to @code{CFLAGS}. On these systems, the name of the +assembler input file is stored in the object file, and that makes +comparison fail if it differs between the @code{stage1} and +@code{stage2} compilations. The option @option{-save-temps} forces a +fixed name to be used for the assembler input file, instead of a +randomly chosen name in @file{/tmp}. Do not add @option{-save-temps} +unless the comparisons fail without that option. If you add +@option{-save-temps}, you will have to manually delete the @samp{.i} and +@samp{.s} files after each series of compilations. + +GCC now supports both the native (ECOFF) debugging format used by DBX +and GDB and an encapsulated STABS format for use only with GDB@. See the +discussion of the @option{--with-stabs} option of @file{configure} above +for more information on these formats and how to select them. + +There is a bug in DEC's assembler that produces incorrect line numbers +for ECOFF format when the @samp{.align} directive is used. To work +around this problem, GCC will not emit such alignment directives +while writing ECOFF format debugging information even if optimization is +being performed. Unfortunately, this has the very undesirable +side-effect that code addresses when @option{-O} is specified are +different depending on whether or not @option{-g} is also specified. + +To avoid this behavior, specify @option{-gstabs+} and use GDB instead of +DBX@. DEC is now aware of this problem with the assembler and hopes to +provide a fix shortly. + +@html +</p> +<hr> +@end html +@heading @anchor{alphaev5-cray-unicosmk*}alphaev5-cray-unicosmk* +Cray T3E systems running Unicos/Mk. + +This port is incomplete and has many known bugs. We hope to improve the +support for this target soon. Currently, only the C front end is supported, +and it is not possible to build parallel applications. Cray modules are not +supported; in particular, Craylibs are assumed to be in +@file{/opt/ctl/craylibs/craylibs}. + +You absolutely @strong{must} use GNU make on this platform. Also, you +need to tell GCC where to find the assembler and the linker. The +simplest way to do so is by providing @option{--with-as} and +@option{--with-ld} to @file{configure}, e.g.@: + +@samp{configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld +--enable-languages=c} + +The comparison test during @samp{make bootstrap} fails on Unicos/Mk +because the assembler inserts timestamps into object files. You should +be able to work around this by doing @samp{make all} after getting this +failure. + +@html +</p> +<hr> +@end html +@heading @anchor{arc-*-elf}arc-*-elf +Argonaut ARC processor. +This configuration is intended for embedded systems. + +@html +</p> +<hr> +@end html +@heading @anchor{arm-*-aout}arm-*-aout +Advanced RISC Machines ARM-family processors. These are often used in +embedded applications. There are no standard Unix configurations. +This configuration corresponds to the basic instruction sequences and will +produce @file{a.out} format object modules. + +You may need to make a variant of the file @file{arm.h} for your particular +configuration. + +@html +</p> +<hr> +@end html +@heading @anchor{arm-*-elf}arm-*-elf +This configuration is intended for embedded systems. + +@html +</p> +<hr> +@end html +@heading @anchor{arm*-*-linux-gnu}arm*-*-linux-gnu + +We require GNU binutils 2.10 or newer. + +@html +</p> +<hr> +@end html +@heading @anchor{arm-*-riscix}arm-*-riscix +The ARM2 or ARM3 processor running RISC iX, Acorn's port of BSD Unix. +If you are running a version of RISC iX prior to 1.2 then you must +specify the version number during configuration. Note that the +assembler shipped with RISC iX does not support stabs debugging +information; a new version of the assembler, with stabs support +included, is now available from Acorn and via ftp +@uref{ftp://ftp.acorn.com/pub/riscix/as+xterm.tar.Z}. To enable stabs +debugging, pass @option{--with-gnu-as} to configure. + +You will need to install GNU @command{sed} before you can run configure. + +@html +</p> +<hr> +@end html +@heading @anchor{avr}avr + +ATMEL AVR-family micro controllers. These are used in embedded +applications. There are no standard Unix configurations. +@ifnothtml +@xref{AVR Options,, AVR Options, gcc, Using and Porting the GNU Compiler +Collection (GCC)}, +@end ifnothtml +@ifhtml +See ``AVR Options'' in the main manual +@end ifhtml +for the list of supported MCU types. + +Use @samp{configure --target=avr --enable-languages="c"} to configure GCC@. + +Further installation notes and other useful information about AVR tools +can also be obtained from: + +@itemize @bullet +@item +@uref{http://home.overta.ru/users/denisc,,http://home.overta.ru/users/denisc} +@item +@uref{http://www.itnet.pl/amelektr/avr,,http://www.itnet.pl/amelektr/avr} +@end itemize + +We @emph{strongly} recommend using binutils 2.11 or newer. + +The following error: +@example + Error: register required +@end example + +indicates that you should upgrade to a newer version of the binutils. + +@html +</p> +<hr> +@end html +@heading @anchor{c4x}c4x + +Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital Signal +Processors. These are used in embedded applications. There are no +standard Unix configurations. +@ifnothtml +@xref{TMS320C3x/C4x Options,, TMS320C3x/C4x Options, gcc, Using and +Porting the GNU Compiler Collection (GCC)}, +@end ifnothtml +@ifhtml +See ``TMS320C3x/C4x Options'' in the main manual +@end ifhtml +for the list of supported MCU types. + +GCC can be configured as a cross compiler for both the C3x and C4x +architectures on the same system. Use @samp{configure --target=c4x +--enable-languages="c,c++"} to configure. + + +Further installation notes and other useful information about C4x tools +can also be obtained from: + +@itemize @bullet +@item +@uref{http://www.elec.canterbury.ac.nz/c4x/,,http://www.elec.canterbury.ac.nz/c4x/} +@end itemize + +@html +</p> +<hr> +@end html +@heading @anchor{cris}CRIS + +CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip +series. These are used in embedded applications. + +@ifnothtml +@xref{CRIS Options,, CRIS Options, gcc, Using and Porting the GNU Compiler +Collection (GCC)}, +@end ifnothtml +@ifhtml +See ``CRIS Options'' in the main manual +@end ifhtml +for a list of CRIS-specific options. + +There are a few different CRIS targets: +@table @code +@item cris-axis-aout +Old target. Includes a multilib for the @samp{elinux} a.out-based +target. No multilibs for newer architecture variants. +@item cris-axis-elf +Mainly for monolithic embedded systems. Includes a multilib for the +@samp{v10} core used in @samp{ETRAX 100 LX}. +@item cris-axis-linux-gnu +A GNU/Linux port for the CRIS architecture, currently targeting +@samp{ETRAX 100 LX} by default. +@end table + +For @code{cris-axis-aout} and @code{cris-axis-elf} you need binutils 2.11 +or newer. For @code{cris-axis-linux-gnu} you need binutils 2.12 or newer. + +Pre-packaged tools can be obtained from +@uref{ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/}. More +information about this platform is available at +@uref{http://developer.axis.com/}. + +@html +</p> +<hr> +@end html +@heading @anchor{dos}DOS + +Please have a look at our @uref{binaries.html,,binaries page}. + +You cannot install GCC by itself on MSDOS; it will not compile under +any MSDOS compiler except itself. You need to get the complete +compilation package DJGPP, which includes binaries as well as sources, +and includes all the necessary compilation tools and libraries. + +@html +</p> +<hr> +@end html +@heading @anchor{dsp16xx}dsp16xx +A port to the AT&T DSP1610 family of processors. + +@html +</p> +<hr> +@end html +@heading @anchor{*-*-freebsd*}*-*-freebsd* + +The version of binutils installed in @file{/usr/bin} is known to work unless +otherwise specified in any per-architecture notes. However, binutils +2.11 is known to improve overall testsuite results. + +For FreeBSD 1, FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All +configuration support and files as shipped with GCC 2.95 are still in +place. FreeBSD 2.2.7 has been known to bootstrap completely; however, +it is unknown which version of binutils was used (it is assumed that it +was the system copy in @file{/usr/bin}) and C++ EH failures were noted. + +For FreeBSD using the ELF file format: DWARF 2 debugging is now the +default for all CPU architectures. It had been the default on +FreeBSD/alpha since its inception. You may use @option{-gstabs} instead +of @option{-g}, if you really want the old debugging format. There are +no known issues with mixing object files and libraries with different +debugging formats. Otherwise, this release of GCC should now match more +of the configuration used in the stock FreeBSD configuration of GCC. In +particular, @option{--enable-threads} is now configured by default. +However, as a general user, do not attempt to replace the system +compiler with this release. Known to bootstrap and check with good +results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3 and 5-CURRENT@. + +At this time, @option{--enable-threads} is not compatible with +@option{--enable-libgcj} on FreeBSD@. + +@html +</p> +<hr> +@end html +@heading @anchor{elxsi-elxsi-bsd}elxsi-elxsi-bsd +The Elxsi's C compiler has known limitations that prevent it from +compiling GCC@. Please contact @email{mrs@@wrs.com} for more details. + +@html +</p> +<hr> +@end html +@heading @anchor{h8300-hms}h8300-hms +Hitachi H8/300 series of processors. + +Please have a look at our @uref{binaries.html,,binaries page}. + +The calling convention and structure layout has changed in release 2.6. +All code must be recompiled. The calling convention now passes the +first three arguments in function calls in registers. Structures are no +longer a multiple of 2 bytes. + +@html +</p> +<hr> +@end html +@heading @anchor{hppa*-hp-hpux*}hppa*-hp-hpux* + +We @emph{highly} recommend using gas/binutils 2.8 or newer on all hppa +platforms; you may encounter a variety of problems when using the HP +assembler. + +Specifically, @option{-g} does not work on HP-UX (since that system +uses a peculiar debugging format which GCC does not know about), unless you +use GAS and GDB and configure GCC with the +@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and +@option{--with-as=@dots{}} options. + +If you wish to use pa-risc 2.0 architecture support, you must use either +the HP assembler, gas/binutils 2.11 or a recent +@uref{ftp://sources.redhat.com/pub/binutils/snapshots,,snapshot of gas}. + +More specific information to @samp{hppa*-hp-hpux*} targets follows. + +@html +</p> +<hr> +@end html +@heading @anchor{hppa*-hp-hpux9}hppa*-hp-hpux9 + +The HP assembler has major problems on this platform. We've tried to work +around the worst of the problems. However, those workarounds may be causing +linker crashes in some circumstances; the workarounds also probably prevent +shared libraries from working. Use the GNU assembler to avoid these problems. + + +The configuration scripts for GCC will also trigger a bug in the hpux9 +shell. To avoid this problem set @env{CONFIG_SHELL} to @file{/bin/ksh} +and @env{SHELL} to @file{/bin/ksh} in your environment. + + +@html +</p> +<hr> +@end html +@heading @anchor{hppa*-hp-hpux10}hppa*-hp-hpux10 + +For hpux10.20, we @emph{highly} recommend you pick up the latest sed patch +@code{PHCO_19798} from HP@. HP has two sites which provide patches free of +charge: + +@itemize @bullet +@item +@html +<a href="http://us-support.external.hp.com">US, Canada, Asia-Pacific, and +Latin-America</a> +@end html +@ifnothtml +@uref{http://us-support.external.hp.com,,}US, Canada, Asia-Pacific, and +Latin-America +@end ifnothtml +@item +@uref{http://europe-support.external.hp.com,,Europe} +@end itemize + +The HP assembler on these systems is much better than the hpux9 assembler, +but still has some problems. Most notably the assembler inserts timestamps +into each object file it creates, causing the 3-stage comparison test to fail +during a @samp{make bootstrap}. You should be able to continue by +saying @samp{make all} after getting the failure from @samp{make +bootstrap}. + + +@html +</p> +<hr> +@end html +@heading @anchor{hppa*-hp-hpux11}hppa*-hp-hpux11 + +GCC 3.0 supports HP-UX 11. You must use GNU binutils 2.11 or above on +this platform. Thread support is not currently implemented for this +platform, so @option{--enable-threads} does not work. +See @uref{http://gcc.gnu.org/ml/gcc-prs/2002-01/msg00551.html} +and @uref{http://gcc.gnu.org/ml/gcc-bugs/2002-01/msg00663.html}. +GCC 2.95.x is not supported under HP-UX 11 and cannot be used to +compile GCC 3.0. Refer to @uref{binaries.html,,binaries} for information +about obtaining precompiled GCC binaries for HP-UX. + +@html +</p> +<hr> +@end html +@heading @anchor{i370-*-*}i370-*-* +This port is very preliminary and has many known bugs. We hope to +have a higher-quality port for this machine soon. + +@html +</p> +<hr> +@end html +@heading @anchor{*-*-linux-gnu}*-*-linux-gnu + +If you use glibc 2.2 (or 2.1.9x), GCC 2.95.2 won't install +out-of-the-box. You'll get compile errors while building @samp{libstdc++}. +The patch @uref{glibc-2.2.patch,,glibc-2.2.patch}, that is to be +applied in the GCC source tree, fixes the compatibility problems. + +@html +</p> +@end html + +@html +<p> +@end html + +Currently Glibc 2.2.3 (and older releases) and GCC 3.0 are out of sync +since the latest exception handling changes for GCC@. Compiling glibc +with GCC 3.0 will give a binary incompatible glibc and therefore cause +lots of problems and might make your system completly unusable. This +will definitly need fixes in glibc but might also need fixes in GCC@. We +strongly advise to wait for glibc 2.2.4 and to read the release notes of +glibc 2.2.4 whether patches for GCC 3.0 are needed. You can use glibc +2.2.3 with GCC 3.0, just do not try to recompile it. + +@html +</p> +<hr> +@end html +@heading @anchor{ix86-*-linux*oldld}i?86-*-linux*oldld +Use this configuration to generate @file{a.out} binaries on Linux-based +GNU systems if you do not have gas/binutils version 2.5.2 or later +installed. This is an obsolete configuration. + +@html +</p> +<hr> +@end html +@heading @anchor{ix86-*-linux*aout}i?86-*-linux*aout +Use this configuration to generate @file{a.out} binaries on Linux-based +GNU systems. This configuration is being superseded. You must use +gas/binutils version 2.5.2 or later. + +@html +</p> +<hr> +@end html +@heading @anchor{ix86-*-linux*}i?86-*-linux* + +You will need binutils 2.9.1.0.15 or newer for exception handling to work. + +If you receive Signal 11 errors when building on GNU/Linux, then it is +possible you have a hardware problem. Further information on this can be +found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}. + +@html +</p> +<hr> +@end html +@heading @anchor{ix86-*-sco}i?86-*-sco +Compilation with RCC is recommended. Also, it may be a good idea to +link with GNU malloc instead of the malloc that comes with the system. + +@html +</p> +<hr> +@end html +@heading @anchor{ix86-*-sco3.2v4}i?86-*-sco3.2v4 +Use this configuration for SCO release 3.2 version 4. + +@html +</p> +<hr> +@end html +@heading @anchor{ix86-*-sco3.2v5*}i?86-*-sco3.2v5* +Use this for the SCO OpenServer Release 5 family of operating systems. + +Unlike earlier versions of GCC, the ability to generate COFF with this +target is no longer provided. + +Earlier versions of GCC emitted DWARF 1 when generating ELF to allow +the system debugger to be used. That support was too burdensome to +maintain. GCC now emits only DWARF 2 for this target. This means you +may use either the UDK debugger or GDB to debug programs built by this +version of GCC@. + +Use of the @option{-march=pentiumpro} flag can result in +unrecognized opcodes when using the native assembler on OS versions before +5.0.6. (Support for P6 opcodes was added to the native ELF assembler in +that version.) While it's rather rare to see these emitted by GCC yet, +errors of the basic form: + +@example + /usr/tmp/ccaNlqBc.s:22:unknown instruction: fcomip + /usr/tmp/ccaNlqBc.s:50:unknown instruction: fucomip +@end example + +are symptoms of this problem. You may work around this by not +building affected files with that flag, by using the GNU assembler, or +by using the assembler provided with the current version of the OS@. +Users of GNU assembler should see the note below for hazards on doing +so. + +The native SCO assembler that is provided with the OS at no +charge is normally required. If, however, you must be able to use +the GNU assembler (perhaps you're compiling code with asms that +require GAS syntax) you may configure this package using the flags +@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}}. You must +use a recent version of GNU binutils; versions past 2.9.1 seem to work +well. + +In general, the @option{--with-gnu-as} option isn't as well tested +as the native assembler. + +Look in @file{gcc/config/i386/sco5.h} (search for ``messy'') for +additional OpenServer-specific flags. + +Systems based on OpenServer before 5.0.4 (@samp{uname -X} +will tell you what you're running) require TLS597 from +@uref{ftp://ftp.sco.com/TLS/,,ftp://ftp.sco.com/TLS/} +for C++ constructors and destructors to work right. + +The system linker in (at least) 5.0.4 and 5.0.5 will sometimes +do the wrong thing for a construct that GCC will emit for PIC +code. This can be seen as execution testsuite failures when using +@option{-fPIC} on @file{921215-1.c}, @file{931002-1.c}, @file{nestfunc-1.c}, and @file{gcov-1.c}. +For 5.0.5, an updated linker that will cure this problem is +available. You must install both +@uref{ftp://ftp.sco.com/Supplements/rs505a/,,ftp://ftp.sco.com/Supplements/rs505a/} +and @uref{ftp://ftp.sco.com/SLS/,,OSS499A}. + +The dynamic linker in OpenServer 5.0.5 (earlier versions may show +the same problem) aborts on certain G77-compiled programs. It's particularly +likely to be triggered by building Fortran code with the @option{-fPIC} flag. +Although it's conceivable that the error could be triggered by other +code, only G77-compiled code has been observed to cause this abort. +If you are getting core dumps immediately upon execution of your +G77 program---and especially if it's compiled with @option{-fPIC}---try applying +@uref{sco_osr5_g77.patch,,@file{sco_osr5_g77.patch}} to your @samp{libf2c} and +rebuilding GCC@. +Affected faults, when analyzed in a debugger, will show a stack +backtrace with a fault occurring in @code{rtld()} and the program +running as @file{/usr/lib/ld.so.1}. This problem has been reported to SCO +engineering and will hopefully be addressed in later releases. + + +@html +</p> +<hr> +@end html +@heading @anchor{ix86-*-udk}i?86-*-udk + +This target emulates the SCO Universal Development Kit and requires that +package be installed. (If it is installed, you will have a +@file{/udk/usr/ccs/bin/cc} file present.) It's very much like the +@samp{i?86-*-unixware7*} target +but is meant to be used when hosting on a system where UDK isn't the +default compiler such as OpenServer 5 or Unixware 2. This target will +generate binaries that will run on OpenServer, Unixware 2, or Unixware 7, +with the same warnings and caveats as the SCO UDK@. + +This target is a little tricky to build because we have to distinguish +it from the native tools (so it gets headers, startups, and libraries +from the right place) while making the tools not think we're actually +building a cross compiler. The easiest way to do this is with a configure +command like this: + +@samp{CC=/udk/usr/ccs/bin/cc @var{/your/path/to}/gcc/configure +--host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk-} + +@emph{You should substitute @samp{i686} in the above command with the appropriate +processor for your host.} + +After the usual @samp{make bootstrap} and +@samp{make install}, you can then access the UDK-targeted GCC +tools by adding @command{udk-} before the commonly known name. For +example, to invoke the C compiler, you would use @command{udk-gcc}. +They will coexist peacefully with any native-target GCC tools you may +have installed. + + +@html +</p> +<hr> +@end html +@heading @anchor{ix86-*-isc}i?86-*-isc +It may be a good idea to link with GNU malloc instead of the malloc that +comes with the system. + +In ISC version 4.1, @command{sed} core dumps when building +@file{deduced.h}. Use the version of @command{sed} from version 4.0. + +@html +</p> +<hr> +@end html +@heading @anchor{ix86-*-esix}i?86-*-esix +It may be good idea to link with GNU malloc instead of the malloc that +comes with the system. + +@html +</p> +<hr> +@end html +@heading @anchor{ix86-ibm-aix}i?86-ibm-aix +You need to use GAS version 2.1 or later, and LD from +GNU binutils version 2.2 or later. + +@html +</p> +<hr> +@end html +@heading @anchor{ix86-sequent-bsd}i?86-sequent-bsd +Go to the Berkeley universe before compiling. + +@html +</p> +<hr> +@end html +@heading @anchor{ix86-sequent-ptx1*}i?86-sequent-ptx1*, i?86-sequent-ptx2* +You must install GNU @command{sed} before running @command{configure}. + +@html +</p> +<hr> +@end html +@heading @anchor{#ix86-*-sysv3*}i?86-*-sysv3* +The @code{fixproto} shell script may trigger a bug in the system shell. +If you encounter this problem, upgrade your operating system or +use @command{bash} (the GNU shell) to run @code{fixproto}. + + +@html +</p> +<hr> +@end html +@heading @anchor{i860-intel-osf*}i860-intel-osf* +On the Intel Paragon (an i860 machine), if you are using operating +system version 1.0, you will get warnings or errors about redefinition +of @code{va_arg} when you build GCC@. + +If this happens, then you need to link most programs with the library +@file{iclib.a}. You must also modify @file{stdio.h} as follows: before +the lines + +@example +#if defined(__i860__) && !defined(_VA_LIST) +#include <va_list.h> +@end example + +@noindent +insert the line + +@example +#if __PGC__ +@end example + +@noindent +and after the lines + +@example +extern int vprintf(const char *, va_list ); +extern int vsprintf(char *, const char *, va_list ); +#endif +@end example + +@noindent +insert the line + +@example +#endif /* __PGC__ */ +@end example + +These problems don't exist in operating system version 1.1. + +@html +</p> +<hr> +@end html +@heading @anchor{ia64-*-linux}ia64-*-linux +IA-64 processor (also known as IPF, or Itanium Processor Family) +running GNU/Linux. + +The toolchain is not completely finished, so requirements will continue +to change. +GCC 3.0.1 and later require glibc 2.2.4. +GCC 3.0.2 requires binutils from 2001-09-05 or later. +GCC 3.0.1 requires binutils 2.11.1 or later. + +None of the following versions of GCC has an ABI that is compatible +with any of the other versions in this list, with the exception that +Red Hat 2.96 and Trillian 000171 are compatible with each other: +3.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717. +This primarily affects C++ programs and programs that create shared libraries. +Because of these ABI incompatibilities, GCC 3.0.2 is not recommended for +user programs on GNU/Linux systems built using earlier compiler releases. +GCC 3.0.2 is recommended for compiling linux, the kernel. +GCC 3.0.2 is believed to be fully ABI compliant, and hence no more major +ABI changes are expected. + +@html +</p> +<hr> +@end html +@heading @anchor{*-lynx-lynxos}*-lynx-lynxos +LynxOS 2.2 and earlier comes with GCC 1.x already installed as +@file{/bin/gcc}. You should compile with this instead of @file{/bin/cc}. +You can tell GCC to use the GNU assembler and linker, by specifying +@samp{--with-gnu-as --with-gnu-ld} when configuring. These will produce +COFF format object files and executables; otherwise GCC will use the +installed tools, which produce @file{a.out} format executables. + +@html +</p> +<hr> +<!-- rs6000-ibm-aix*, powerpc-ibm-aix* --> +@end html +@heading @anchor{*-ibm-aix*}*-ibm-aix* + +AIX Make frequently has problems with GCC makefiles. GNU Make 3.76 or +newer is recommended to build on this platform. + +Errors involving @code{alloca} when building GCC generally are due +to an incorrect definition of @code{CC} in the Makefile or mixing files +compiled with the native C compiler and GCC@. During the stage1 phase of +the build, the native AIX compiler @strong{must} be invoked as @command{cc} +(not @command{xlc}). Once @command{configure} has been informed of +@command{xlc}, one needs to use @samp{make distclean} to remove the +configure cache files and ensure that @env{CC} environment variable +does not provide a definition that will confuse @command{configure}. +If this error occurs during stage2 or later, then the problem most likely +is the version of Make (see above). + +The GNU Assembler incorrectly reports that it supports WEAK symbols on +AIX which causes GCC to try to utilize weak symbol functionality which +is not really supported on the platform. The native @command{as} and +@command{ld} still are recommended. The native AIX tools do +interoperate with GCC@. + +Building @file{libstdc++.a} requires a fix for a AIX Assembler bug +APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1). + +Linking executables and shared libraries may produce warnings of +duplicate symbols. The assembly files generated by GCC for AIX always +have included multiple symbol definitions for certain global variable +and function declarations in the original program. The warnings should +not prevent the linker from producing a correct library or runnable +executable. + +AIX 4.3 utilizes a ``large format'' archive to support both 32-bit and +64-bit object modules. The routines provided in AIX 4.3.0 and AIX 4.3.1 +to parse archive libraries did not handle the new format correctly. +These routines are used by GCC and result in error messages during +linking such as ``not a COFF file''. The version of the routines shipped +with AIX 4.3.1 should work for a 32-bit environment. The @option{-g} +option of the archive command may be used to create archives of 32-bit +objects using the original ``small format''. A correct version of the +routines is shipped with AIX 4.3.2 and above. + +Some versions of the AIX binder (linker) can fail with a relocation +overflow severe error when the @option{-bbigtoc} option is used to link +GCC-produced object files into an executable that overflows the TOC@. A fix +for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is +available from IBM Customer Support and from its +@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com} +website as PTF U455193. + +The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core +with a segmentation fault when invoked by any version of GCC@. A fix for +APAR IX87327 is available from IBM Customer Support and from its +@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com} +website as PTF U461879. This fix is incorporated in AIX 4.3.3 and above. + +The initial assembler shipped with AIX 4.3.0 generates incorrect object +files. A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS +TO ASSEMBLE/BIND) is available from IBM Customer Support and from its +@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com} +website as PTF U453956. This fix is incorporated in AIX 4.3.1 and above. + +AIX provides National Language Support (NLS)@. Compilers and assemblers +use NLS to support locale-specific representations of various data +formats including floating-point numbers (e.g., @samp{.} vs @samp{,} for +separating decimal fractions). There have been problems reported where +GCC does not produce the same floating-point formats that the assembler +expects. If one encounters this problem, set the @env{LANG} +environment variable to @samp{C} or @samp{En_US}. + +By default, GCC for AIX 4.1 and above produces code that can be used on +both Power or PowerPC processors. + +A default can be specified with the @option{-mcpu=@var{cpu_type}} +switch and using the configure option @option{--with-cpu-@var{cpu_type}}. + +@html +</p> +<hr> +@end html +@heading @anchor{m32r-*-elf}m32r-*-elf +Mitsubishi M32R processor. +This configuration is intended for embedded systems. + +@html +</p> +<hr> +@end html +@heading @anchor{m68000-hp-bsd}m68000-hp-bsd +HP 9000 series 200 running BSD@. Note that the C compiler that comes +with this system cannot compile GCC; contact @email{law@@cygnus.com} +to get binaries of GCC for bootstrapping. + +@html +</p> +<hr> +@end html +@heading @anchor{m6811-elf}m6811-elf +Motorola 68HC11 family micro controllers. These are used in embedded +applications. There are no standard Unix configurations. + +@html +</p> +<hr> +@end html +@heading @anchor{m6812-elf}m6812-elf +Motorola 68HC12 family micro controllers. These are used in embedded +applications. There are no standard Unix configurations. + +@html +</p> +<hr> +@end html +@heading @anchor{m68k-altos}m68k-altos +Altos 3068. You must use the GNU assembler, linker and debugger. +Also, you must fix a kernel bug. + +@html +</p> +<hr> +@end html +@heading @anchor{m68k-apple-aux}m68k-apple-aux +Apple Macintosh running A/UX@. +You may configure GCC to use either the system assembler and +linker or the GNU assembler and linker. You should use the GNU configuration +if you can, especially if you also want to use G++. You enable +that configuration with the @option{--with-gnu-as} and @option{--with-gnu-ld} +options to @code{configure}. + +Note the C compiler that comes +with this system cannot compile GCC@. You can find binaries of GCC +for bootstrapping on @code{jagubox.gsfc.nasa.gov}. +You will also a patched version of @file{/bin/ld} there that +raises some of the arbitrary limits found in the original. + +@html +</p> +<hr> +@end html +@heading @anchor{m68k-att-sysv}m68k-att-sysv +AT&T 3b1, a.k.a.@: 7300 PC@. This version of GCC cannot +be compiled with the system C compiler, which is too buggy. +You will need to get a previous version of GCC and use it to +bootstrap. Binaries are available from the OSU-CIS archive, at +@uref{ftp://archive.cis.ohio-state.edu/pub/att7300/}. + +@html +</p> +<hr> +@end html +@heading @anchor{m68k-bull-sysv}m68k-bull-sysv +Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GCC works +either with native assembler or GNU assembler. You can use +GNU assembler with native COFF generation by providing @option{--with-gnu-as} to +the configure script or use GNU assembler with stabs-in-COFF encapsulation +by providing @samp{--with-gnu-as --stabs}. For any problem with the native +assembler or for availability of the DPX/2 port of GAS, contact +@email{F.Pierresteguy@@frcl.bull.fr}. + +@html +</p> +<hr> +@end html +@heading @anchor{m68k-crds-unox}m68k-crds-unox +Use @samp{configure unos} for building on Unos. + +The Unos assembler is named @code{casm} instead of @code{as}. For some +strange reason linking @file{/bin/as} to @file{/bin/casm} changes the +behavior, and does not work. So, when installing GCC, you should +install the following script as @file{as} in the subdirectory where +the passes of GCC are installed: + +@example +#!/bin/sh +casm $* +@end example + +The default Unos library is named @file{libunos.a} instead of +@file{libc.a}. To allow GCC to function, either change all +references to @option{-lc} in @file{gcc.c} to @option{-lunos} or link +@file{/lib/libc.a} to @file{/lib/libunos.a}. + +@cindex @code{alloca}, for Unos +When compiling GCC with the standard compiler, to overcome bugs in +the support of @code{alloca}, do not use @option{-O} when making stage 2. +Then use the stage 2 compiler with @option{-O} to make the stage 3 +compiler. This compiler will have the same characteristics as the usual +stage 2 compiler on other systems. Use it to make a stage 4 compiler +and compare that with stage 3 to verify proper compilation. + +(Perhaps simply defining @code{ALLOCA} in @file{x-crds} as described in +the comments there will make the above paragraph superfluous. Please +inform us of whether this works.) + +Unos uses memory segmentation instead of demand paging, so you will need +a lot of memory. 5 Mb is barely enough if no other tasks are running. +If linking @file{cc1} fails, try putting the object files into a library +and linking from that library. + +@html +</p> +<hr> +@end html +@heading @anchor{m68k-hp-hpux}m68k-hp-hpux +HP 9000 series 300 or 400 running HP-UX@. HP-UX version 8.0 has a bug in +the assembler that prevents compilation of GCC@. This +bug manifests itself during the first stage of compilation, while +building @file{libgcc2.a}: + +@smallexample +_floatdisf +cc1: warning: `-g' option not supported on this version of GCC +cc1: warning: `-g1' option not supported on this version of GCC +./xgcc: Internal compiler error: program as got fatal signal 11 +@end smallexample + +A patched version of the assembler is available as the file +@uref{ftp://altdorf.ai.mit.edu/archive/cph/hpux-8.0-assembler}. If you +have HP software support, the patch can also be obtained directly from +HP, as described in the following note: + +@quotation +This is the patched assembler, to patch SR#1653-010439, where the +assembler aborts on floating point constants. + +The bug is not really in the assembler, but in the shared library +version of the function ``cvtnum(3c)''. The bug on ``cvtnum(3c)'' is +SR#4701-078451. Anyway, the attached assembler uses the archive +library version of ``cvtnum(3c)'' and thus does not exhibit the bug. +@end quotation + +This patch is also known as PHCO_4484. + +In addition, if you wish to use gas, you must use +gas version 2.1 or later, and you must use the GNU linker version 2.1 or +later. Earlier versions of gas relied upon a program which converted the +gas output into the native HP-UX format, but that program has not been +kept up to date. gdb does not understand that native HP-UX format, so +you must use gas if you wish to use gdb. + +On HP-UX version 8.05, but not on 8.07 or more recent versions, the +@code{fixproto} shell script triggers a bug in the system shell. If you +encounter this problem, upgrade your operating system or use BASH (the +GNU shell) to run @code{fixproto}. This bug will cause the fixproto +program to report an error of the form: + +@example +./fixproto: sh internal 1K buffer overflow +@end example + +To fix this, you can also change the first line of the fixproto script +to look like: + +@example +#!/bin/ksh +@end example + + +@html +</p> +<hr> +@end html +@heading @anchor{m68k-*-nextstep*}m68k-*-nextstep* + +Current GCC versions probably do not work on version 2 of the NeXT +operating system. + +On NeXTStep 3.0, the Objective-C compiler does not work, due, +apparently, to a kernel bug that it happens to trigger. This problem +does not happen on 3.1. + +You absolutely @strong{must} use GNU sed and GNU make on this platform. + + +On NeXTSTEP 3.x where x < 3 the build of GCC will abort during +stage1 with an error message like this: + +@example + _eh + /usr/tmp/ccbbsZ0U.s:987:Unknown pseudo-op: .section + /usr/tmp/ccbbsZ0U.s:987:Rest of line ignored. 1st junk character + valued 95 (_). +@end example + +The reason for this is the fact that NeXT's assembler for these +versions of the operating system does not support the @samp{.section} +pseudo op that's needed for full C++ exception functionality. + +As NeXT's assembler is a derived work from GNU as, a free +replacement that does can be obtained at +@uref{ftp://ftp.next.peak.org:/next-ftp/next/apps/devtools/as.3.3.NIHS.s.tar.gz,,ftp://ftp.next.peak.org:/next-ftp/next/apps/devtools/as.3.3.NIHS.s.tar.gz}. + +If you try to build the integrated C++ & C++ runtime libraries on this system +you will run into trouble with include files. The way to get around this is +to use the following sequence. Note you must have write permission to +the directory @var{prefix} you specified in the configuration process of GCC +for this sequence to work. + +@example + cd bld-gcc + make all-texinfo all-bison all-byacc all-binutils all-gas all-ld + cd gcc + make bootstrap + make install-headers-tar + cd .. + make bootstrap3 +@end example + +@html +</p> +<hr> +@end html +@heading @anchor{m68k-ncr-*}m68k-ncr-* +On the Tower models 4@var{n}0 and 6@var{n}0, by default a process is not +allowed to have more than one megabyte of memory. GCC cannot compile +itself (or many other programs) with @option{-O} in that much memory. + +To solve this problem, reconfigure the kernel adding the following line +to the configuration file: + +@smallexample +MAXUMEM = 4096 +@end smallexample + + +@html +</p> +<hr> +@end html +@heading @anchor{m68k-sun}m68k-sun +Sun 3. We do not provide a configuration file to use the Sun FPA by +default, because programs that establish signal handlers for floating +point traps inherently cannot work with the FPA@. + +@html +</p> +<hr> +@end html +@heading @anchor{m68k-sun-sunos4.1.1}m68k-sun-sunos4.1.1 + +It is reported that you may need the GNU assembler on this platform. + + +@html +</p> +<hr> +@end html +@heading @anchor{m88k-*-svr3}m88k-*-svr3 +Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference port. +These systems tend to use the Green Hills C, revision 1.8.5, as the +standard C compiler. There are apparently bugs in this compiler that +result in object files differences between stage 2 and stage 3. If this +happens, make the stage 4 compiler and compare it to the stage 3 +compiler. If the stage 3 and stage 4 object files are identical, this +suggests you encountered a problem with the standard C compiler; the +stage 3 and 4 compilers may be usable. + +It is best, however, to use an older version of GCC for bootstrapping +if you have one. + +@html +</p> +<hr> +@end html +@heading @anchor{m88k-*-dgux}m88k-*-dgux +Motorola m88k running DG/UX@. To build 88open BCS native or cross +compilers on DG/UX, specify the configuration name as +@samp{m88k-*-dguxbcs} and build in the 88open BCS software development +environment. To build ELF native or cross compilers on DG/UX, specify +@samp{m88k-*-dgux} and build in the DG/UX ELF development environment. +You set the software development environment by issuing +@samp{sde-target} command and specifying either @samp{m88kbcs} or +@samp{m88kdguxelf} as the operand. + +If you do not specify a configuration name, @file{configure} guesses the +configuration based on the current software development environment. + +@html +</p> +<hr> +@end html +@heading @anchor{m88k-tektronix-sysv3}m88k-tektronix-sysv3 +Tektronix XD88 running UTekV 3.2e. Do not turn on +optimization while building stage1 if you bootstrap with +the buggy Green Hills compiler. Also, the bundled LAI +System V NFS is buggy so if you build in an NFS mounted +directory, start from a fresh reboot, or avoid NFS all together. +Otherwise you may have trouble getting clean comparisons +between stages. + +@html +</p> +<hr> +@end html +@heading @anchor{mips-*-*}mips-*-* +If you use the 1.31 version of the MIPS assembler (such as was shipped +with Ultrix 3.1), you will need to use the @option{-fno-delayed-branch} switch +when optimizing floating point code. Otherwise, the assembler will +complain when the GCC compiler fills a branch delay slot with a +floating point instruction, such as @code{add.d}. + +If on a MIPS system you get an error message saying ``does not have gp +sections for all it's [sic] sectons [sic]'', don't worry about it. This +happens whenever you use GAS with the MIPS linker, but there is not +really anything wrong, and it is okay to use the output file. You can +stop such warnings by installing the GNU linker. + +It would be nice to extend GAS to produce the gp tables, but they are +optional, and there should not be a warning about their absence. + +Users have reported some problems with version 2.0 of the MIPS +compiler tools that were shipped with Ultrix 4.1. Version 2.10 +which came with Ultrix 4.2 seems to work fine. + +Users have also reported some problems with version 2.20 of the +MIPS compiler tools that were shipped with RISC/os 4.x. The earlier +version 2.11 seems to work fine. + +Some versions of the MIPS linker will issue an assertion failure +when linking code that uses @code{alloca} against shared +libraries on RISC-OS 5.0, and DEC's OSF/1 systems. This is a bug +in the linker, that is supposed to be fixed in future revisions. +To protect against this, GCC passes @option{-non_shared} to the +linker unless you pass an explicit @option{-shared} or +@option{-call_shared} switch. + +@heading @anchor{mips-mips-bsd}mips-mips-bsd +MIPS machines running the MIPS operating system in BSD mode. It's +possible that some old versions of the system lack the functions +@code{memcpy}, @code{memmove}, @code{memcmp}, and @code{memset}. If your +system lacks these, you must remove or undo the definition of +@code{TARGET_MEM_FUNCTIONS} in @file{mips-bsd.h}. + +If you use the MIPS C compiler to bootstrap, it may be necessary +to increase its table size for switch statements with the +@option{-Wf,-XNg1500} option. If you use the @option{-O2} +optimization option, you also need to use @option{-Olimit 3000}. +Both of these options are automatically generated in the +@file{Makefile} that the shell script @file{configure} builds. +If you override the @code{CC} make variable and use the MIPS +compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}. + +@html +</p> +<hr> +@end html +@heading @anchor{mips-dec-*}mips-dec-* +MIPS-based DECstations can support three different personalities: +Ultrix, DEC OSF/1, and OSF/rose. (Alpha-based DECstation products have +a configuration name beginning with @samp{alpha*-dec}.) To configure GCC +for these platforms use the following configurations: + +@table @samp +@item mips-dec-ultrix +Ultrix configuration. + +@item mips-dec-osf1 +DEC's version of OSF/1. + +@item mips-dec-osfrose +Open Software Foundation reference port of OSF/1 which uses the +OSF/rose object file format instead of ECOFF@. Normally, you +would not select this configuration. +@end table + +If you use the MIPS C compiler to bootstrap, it may be necessary +to increase its table size for switch statements with the +@option{-Wf,-XNg1500} option. If you use the @option{-O2} +optimization option, you also need to use @option{-Olimit 3000}. +Both of these options are automatically generated in the +@file{Makefile} that the shell script @file{configure} builds. +If you override the @code{CC} make variable and use the MIPS +compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}. + +@html +</p> +<hr> +@end html +@heading @anchor{mips-mips-riscos*}mips-mips-riscos* +If you use the MIPS C compiler to bootstrap, it may be necessary +to increase its table size for switch statements with the +@option{-Wf,-XNg1500} option. If you use the @option{-O2} +optimization option, you also need to use @option{-Olimit 3000}. +Both of these options are automatically generated in the +@file{Makefile} that the shell script @file{configure} builds. +If you override the @code{CC} make variable and use the MIPS +compilers, you may need to add @samp{-Wf,-XNg1500 -Olimit 3000}. + +MIPS computers running RISC-OS can support four different +personalities: default, BSD 4.3, System V.3, and System V.4 +(older versions of RISC-OS don't support V.4). To configure GCC +for these platforms use the following configurations: + +@table @samp +@item mips-mips-riscos@var{rev} +Default configuration for RISC-OS, revision @var{rev}. + +@item mips-mips-riscos@var{rev}bsd +BSD 4.3 configuration for RISC-OS, revision @var{rev}. + +@item mips-mips-riscos@var{rev}sysv4 +System V.4 configuration for RISC-OS, revision @var{rev}. + +@html +</p> +<hr> +@end html +@item mips-mips-riscos@var{rev}sysv +System V.3 configuration for RISC-OS, revision @var{rev}. +@end table + +The revision @code{rev} mentioned above is the revision of +RISC-OS to use. You must reconfigure GCC when going from a +RISC-OS revision 4 to RISC-OS revision 5. This has the effect of +avoiding a linker bug. + +@html +</p> +<hr> +@end html +@heading @anchor{mips-sgi-irix4}mips-sgi-irix4 + +In order to compile GCC on an SGI running IRIX 4, the ``c.hdr.lib'' +option must be installed from the CD-ROM supplied from Silicon Graphics. +This is found on the 2nd CD in release 4.0.1. + +On IRIX version 4.0.5F, and perhaps on some other versions as well, +there is an assembler bug that reorders instructions incorrectly. To +work around it, specify the target configuration +@samp{mips-sgi-irix4loser}. This configuration inhibits assembler +optimization. + +In a compiler configured with target @samp{mips-sgi-irix4}, you can turn +off assembler optimization by using the @option{-noasmopt} option. This +compiler option passes the option @option{-O0} to the assembler, to +inhibit reordering. + +The @option{-noasmopt} option can be useful for testing whether a problem +is due to erroneous assembler reordering. Even if a problem does not go +away with @option{-noasmopt}, it may still be due to assembler +reordering---perhaps GCC itself was miscompiled as a result. + +You may get the following warning on IRIX 4 platforms, it can be safely +ignored. +@example + warning: foo.o does not have gp tables for all its sections. +@end example + +@html +</p> +<hr> +@end html +@heading @anchor{mips-sgi-irix5}mips-sgi-irix5 + +This configuration has considerable problems, which will be fixed in a +future release. + +In order to compile GCC on an SGI running IRIX 5, the ``compiler_dev.hdr'' +subsystem must be installed from the IDO CD-ROM supplied by Silicon +Graphics. It is also available for download from +@uref{http://www.sgi.com/developers/devtools/apis/ido.html,,http://www.sgi.com/developers/devtools/apis/ido.html}. + +@code{make compare} may fail on version 5 of IRIX unless you add +@option{-save-temps} to @code{CFLAGS}. On these systems, the name of the +assembler input file is stored in the object file, and that makes +comparison fail if it differs between the @code{stage1} and +@code{stage2} compilations. The option @option{-save-temps} forces a +fixed name to be used for the assembler input file, instead of a +randomly chosen name in @file{/tmp}. Do not add @option{-save-temps} +unless the comparisons fail without that option. If you do you +@option{-save-temps}, you will have to manually delete the @samp{.i} and +@samp{.s} files after each series of compilations. + +If you use the MIPS C compiler to bootstrap, it may be necessary +to increase its table size for switch statements with the +@option{-Wf,-XNg1500} option. If you use the @option{-O2} +optimization option, you also need to use @option{-Olimit 3000}. + +To enable debugging under IRIX 5, you must use GNU @command{as} 2.11.2 +or later, +and use the @option{--with-gnu-as} configure option when configuring GCC. +GNU @command{as} is distributed as part of the binutils package. +When using release 2.11.2, you need to apply a patch +@uref{http://sources.redhat.com/ml/binutils/2001-07/msg00352.html,,http://sources.redhat.com/ml/binutils/2001-07/msg00352.html} +which will be included in the next release of binutils. + +When building GCC, the build process loops rebuilding @command{cc1} over +and over again. This happens on @samp{mips-sgi-irix5.2}, and possibly +other platforms. It has been reported that this is a known bug in the +@command{make} shipped with IRIX 5.2. We recommend you use GNU +@command{make} instead of the vendor supplied @command{make} program; +however, you may have success with @command{smake} on IRIX 5.2 if you do +not have GNU @command{make} available. + +@html +</p> +<hr> +@end html +@heading @anchor{mips-sgi-irix6}mips-sgi-irix6 + +If you are using IRIX @command{cc} as your bootstrap compiler, you must +ensure that the N32 ABI is in use. To test this, compile a simple C +file with @command{cc} and then run @command{file} on the +resulting object file. The output should look like: + +@example +test.o: ELF N32 MSB @dots{} +@end example + +If you see: + +@example +test.o: ELF 32-bit MSB @dots{} +@end example + +or + +@example +test.o: ELF 64-bit MSB @dots{} +@end example + +then your version of @command{cc} uses the O32 or N64 ABI by default. You +should set the environment variable @env{CC} to @samp{cc -n32} +before configuring GCC@. + +GCC on IRIX 6 is usually built to support both the N32 and N64 ABIs. If +you build GCC on a system that doesn't have the N64 libraries installed, +you need to configure with @option{--disable-multilib} so GCC doesn't +try to use them. Look for @file{/usr/lib64/libc.so.1} to see if you +have the 64-bit libraries installed. + +You must @emph{not} use GNU @command{as} (which isn't built anyway as of +binutils 2.11.2) on IRIX 6 platforms; doing so will only cause problems. + +GCC does not currently support generating O32 ABI binaries in the +@samp{mips-sgi-irix6} configurations. It is possible to create a GCC +with O32 ABI only support by configuring it for the @samp{mips-sgi-irix5} +target and using a patched GNU @command{as} 2.11.2 as documented in the +@uref{#mips-sgi-irix5,,@samp{mips-sgi-irix5}} section above. Using the +native assembler requires patches to GCC which will be included in a +future release. It is +expected that O32 ABI support will be available again in a future release. + +The @option{--enable-threads} option doesn't currently work, a patch is +in preparation for a future release. The @option{--enable-libgcj} +option is disabled by default: IRIX 6 uses a very low default limit +(20480) for the command line length. Although libtool contains a +workaround for this problem, at least the N64 @samp{libgcj} is known not +to build despite this, running into an internal error of the native +@command{ld}. A sure fix is to increase this limit (@samp{ncargs}) to +its maximum of 262144 bytes. If you have root access, you can use the +@command{systune} command to do this. + +GCC does not correctly pass/return structures which are +smaller than 16 bytes and which are not 8 bytes. The problem is very +involved and difficult to fix. It affects a number of other targets also, +but IRIX 6 is affected the most, because it is a 64 bit target, and 4 byte +structures are common. The exact problem is that structures are being padded +at the wrong end, e.g.@: a 4 byte structure is loaded into the lower 4 bytes +of the register when it should be loaded into the upper 4 bytes of the +register. + +GCC is consistent with itself, but not consistent with the SGI C compiler +(and the SGI supplied runtime libraries), so the only failures that can +happen are when there are library functions that take/return such +structures. There are very few such library functions. Currently this +is known to affect @code{inet_ntoa}, @code{inet_lnaof}, +@code{inet_netof}, @code{inet_makeaddr}, and @code{semctl}. Until the +bug is fixed, GCC contains workarounds for the known affected functions. + +See @uref{http://freeware.sgi.com/,,http://freeware.sgi.com/} for more +information about using GCC on IRIX platforms. + +@html +</p> +<hr> +@end html +@heading @anchor{mips-sony-sysv}mips-sony-sysv +Sony MIPS NEWS@. This works in NEWSOS 5.0.1, but not in 5.0.2 (which +uses ELF instead of COFF)@. Support for 5.0.2 will probably be provided +soon by volunteers. In particular, the linker does not like the +code generated by GCC when shared libraries are linked in. + + +@html +</p> +<hr> +@end html +@heading @anchor{ns32k-encore}ns32k-encore +Encore ns32000 system. Encore systems are supported only under BSD@. + +@html +</p> +<hr> +@end html +@heading @anchor{ns32k-*-genix}ns32k-*-genix +National Semiconductor ns32000 system. Genix has bugs in @code{alloca} +and @code{malloc}; you must get the compiled versions of these from GNU +Emacs. + +@html +</p> +<hr> +@end html +@heading @anchor{ns32k-sequent}ns32k-sequent +Go to the Berkeley universe before compiling. + +@html +</p> +<hr> +@end html +@heading @anchor{ns32k-utek}ns32k-utek +UTEK ns32000 system (``merlin''). The C compiler that comes with this +system cannot compile GCC; contact @samp{tektronix!reed!mason} to get +binaries of GCC for bootstrapping. + + +@html +</p> +<hr> +@end html +@heading @anchor{powerpc*-*-*}powerpc-*-* + +You can specify a default version for the @option{-mcpu=@var{cpu_type}} +switch by using the configure option @option{--with-cpu-@var{cpu_type}}. + +@html +</p> +<hr> +@end html +@heading @anchor{powerpc-*-darwin*}powerpc-*-darwin* +PowerPC running Darwin (Mac OS X kernel). + +GCC 3.0 does not support Darwin, but 3.1 and later releases will work. + +Pre-installed versions of Mac OS X may not include any developer tools, +meaning that you will not be able to build GCC from source. Tool +binaries are available at +@uref{http://www.opensource.apple.com/projects/darwin} (free +registration required). + +Versions of the assembler prior to ``cctools-364'' cannot handle the +4-argument form of rlwinm and related mask-using instructions. Darwin +1.3 (Mac OS X 10.0) uses cctools-353 for instance. To get cctools-364, +check out @file{cctools} with tag @samp{Apple-364}, build it, and +install the assembler as @file{usr/bin/as}. See +@uref{http://www.opensource.apple.com/tools/cvs/docs.html} for details. + +Also, the default stack limit of 512K is too small, and a bootstrap will +typically fail when self-compiling @file{expr.c}. Set the stack to 800K +or more, for instance by doing @samp{limit stack 800}. It's also +convenient to use the GNU preprocessor instead of Apple's during the +first stage of bootstrapping; this is automatic when doing @samp{make +bootstrap}, but to do it from the toplevel objdir you will need to say +@samp{make CC='cc -no-cpp-precomp' bootstrap}. + +Note that the version of GCC shipped by Apple typically includes a +number of extensions not available in a standard GCC release. These +extensions are generally specific to Mac programming. + +@html +</p> +<hr> +@end html +@heading @anchor{powerpc-*-elf}powerpc-*-elf, powerpc-*-sysv4 +PowerPC system in big endian mode, running System V.4. + +@html +</p> +<hr> +@end html +@heading @anchor{powerpc-*-linux-gnu*}powerpc-*-linux-gnu* + +You will need +@uref{ftp://ftp.varesearch.com/pub/support/hjl/binutils,,binutils 2.9.4.0.8} +or newer for a working GCC@. It is strongly recommended to recompile binutils +if you initially built it with gcc-2.7.2.x. + +@html +</p> +<hr> +@end html +@heading @anchor{powerpc-*-netbsd*}powerpc-*-netbsd* +PowerPC system in big endian mode running NetBSD@. To build the +documentation you will need Texinfo version 4.0 (NetBSD 1.5.1 included +Texinfo version 3.12). + +@html +</p> +<hr> +@end html +@heading @anchor{powerpc-*-eabiaix}powerpc-*-eabiaix +Embedded PowerPC system in big endian mode with @option{-mcall-aix} selected as +the default. + +@html +</p> +<hr> +@end html +@heading @anchor{powerpc-*-eabisim}powerpc-*-eabisim +Embedded PowerPC system in big endian mode for use in running under the +PSIM simulator. + +@html +</p> +<hr> +@end html +@heading @anchor{powerpc-*-eabi}powerpc-*-eabi +Embedded PowerPC system in big endian mode. + +@html +</p> +<hr> +@end html +@heading @anchor{powerpcle-*-elf}powerpcle-*-elf, powerpcle-*-sysv4 +PowerPC system in little endian mode, running System V.4. + +@html +</p> +<hr> +@end html +@heading @anchor{powerpcle-*-eabisim}powerpcle-*-eabisim +Embedded PowerPC system in little endian mode for use in running under +the PSIM simulator. + +@html +</p> +<hr> +@end html +@heading @anchor{powerpcle-*-eabi}powerpcle-*-eabi +Embedded PowerPC system in little endian mode. + +@html +</p> +<hr> +@end html +@heading @anchor{powerpcle-*-winnt}powerpcle-*-winnt, powerpcle-*-pe +PowerPC system in little endian mode running Windows NT@. + +@html +</p> +<hr> +@end html +@heading @anchor{romp-*-aos}romp-*-aos, romp-*-mach +The only operating systems supported for the IBM RT PC are AOS and +MACH@. GCC does not support AIX running on the RT@. We recommend you +compile GCC with an earlier version of itself; if you compile GCC +with @command{hc}, the Metaware compiler, it will work, but you will get +mismatches between the stage 2 and stage 3 compilers in various files. +These errors are minor differences in some floating-point constants and +can be safely ignored; the stage 3 compiler is correct. + +@html +</p> +<hr> +@end html +@heading @anchor{s390-*-linux*}s390-*-linux* +S/390 system running Linux for S/390@. + +@html +</p> +<hr> +@end html +@heading @anchor{s390x-*-linux*}s390x-*-linux* +zSeries system (64 Bit) running Linux for zSeries@. + +@html +</p> +<hr> +@end html +@c Please use Solaris 2 to refer to all release of Solaris, starting +@c with 2.0 until 2.6, 7, and 8. Solaris 1 was a marketing name for +@c SunOS 4 releases which we don't use to avoid confusion. Solaris +@c alone is too unspecific and must be avoided. +@heading @anchor{*-*-solaris2*}*-*-solaris2* + +Sun does not ship a C compiler with Solaris 2. To bootstrap and install +GCC you first have to install a pre-built compiler, see our +@uref{binaries.html,,binaries page} for details. + +The Solaris 2 @command{/bin/sh} will often fail to configure +@file{libstdc++-v3}, @file{boehm-gc} or +@file{libjava}. If you encounter this problem, set @env{CONFIG_SHELL} to +@command{/bin/ksh} in your environment and run @command{make bootstrap} again. +Another possibility that sometimes helps is to remove +@file{*-*-solaris2*/config.cache}. + +Solaris 2 comes with a number of optional OS packages. Some of these +packages are needed to use GCC fully, namely @code{SUNWarc}, +@code{SUNWbtool}, @code{SUNWesu}, @code{SUNWhea}, @code{SUNWlibm}, +@code{SUNWsprot}, and @code{SUNWtoo}. If you did not install all +optional packages when installing Solaris 2, you will need to verify that +the packages that GCC needs are installed. + +To check whether an optional package is installed, use +the @command{pkginfo} command. To add an optional package, use the +@command{pkgadd} command. For further details, see the Solaris 2 +documentation. + +Trying to use the linker and other tools in +@file{/usr/ucb} to install GCC has been observed to cause trouble. +For example, the linker may hang indefinitely. The fix is to remove +@file{/usr/ucb} from your @env{PATH}. + +All releases of GNU binutils prior to 2.11.2 have known bugs on this +platform. We recommend the use of GNU binutils 2.11.2 or the vendor +tools (Sun @command{as}, Sun @command{ld}). + +Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or +newer: @command{g++} will complain that types are missing. These headers assume +that omitting the type means @code{int}; this assumption worked for C89 but +is wrong for C++, and is now wrong for C99 also. + +@command{g++} accepts such (invalid) constructs with the option +@option{-fpermissive}; it +will assume that any missing type is @code{int} (as defined by C89). + +There are patches for Solaris 2.6 (105633-56 or newer for SPARC, +106248-42 or newer for Intel), Solaris 7 (108376-21 or newer for SPARC, +108377-20 for Intel), and Solaris 8 (108652-24 or newer for SPARC, +108653-22 for Intel) that fix this bug. + +@html +</p> +<hr> +@end html +@heading @anchor{sparc-sun-solaris2*}sparc-sun-solaris2* + +Sun @command{as} 4.x is broken in that it cannot cope with long symbol names. +A typical error message might look similar to the following: + +@samp{/usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: +error: can't compute value of an expression involving an external symbol.} + +This is Sun bug 4237974. This is fixed with patch 108908-02 for Solaris +2.6 and has been fixed in later (5.x) versions of the assembler, +starting with Solaris 7. + +Starting with Solaris 7, the operating system is capable of executing +64-bit SPARC V9 binaries. GCC 3.1 and later should properly support +this. GCC 3.0 lacks the infrastructure necessary to support this +configuration properly. However, if all you want is code tuned for +the UltraSPARC CPU, you should try the @option{-mtune=ultrasparc} +option instead, which should be safe from those bugs and produce code +that, unlike full 64-bit code, can still run on non-UltraSPARC +machines. + +@html +</p> +<hr> +@end html +@heading @anchor{sparc-sun-solaris2.7}sparc-sun-solaris2.7 + +Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug in +the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8 +and later, including all EGCS releases. Sun formerly recommended +107058-01 for all Solaris 7 users, but around 1999-09-01 it started to +recommend it only for people who use Sun's compilers. + +Here are some workarounds to this problem: +@itemize @bullet +@item +Do not install Sun patch 107058-01 until after Sun releases a +complete patch for bug 4210064. This is the simplest course to take, +unless you must also use Sun's C compiler. Unfortunately 107058-01 +is preinstalled on some new Solaris 7-based hosts, so you may have to +back it out. + +@item +Copy the original, unpatched Solaris 7 +@command{/usr/ccs/bin/as} into +@command{/usr/local/lib/gcc-lib/sparc-sun-solaris2.7/3.0/as}, +adjusting the latter name to fit your local conventions and software +version numbers. + +@item +Install Sun patch 106950-03 (1999-05-25) or later. Nobody with +both 107058-01 and 106950-03 installed has reported the bug with GCC +and Sun's dynamic linker. This last course of action is riskiest, +for two reasons. First, you must install 106950 on all hosts that +run code generated by GCC; it doesn't suffice to install it only on +the hosts that run GCC itself. Second, Sun says that 106950-03 is +only a partial fix for bug 4210064, but Sun doesn't know whether the +partial fix is adequate for GCC@. Revision -08 or later should fix +the bug. The current (as of 2001-09-24) revision is -14, and is included in +the Solaris 7 Recommended Patch Cluster. +@end itemize + + +@html +<p> +<hr> +@end html +@heading @anchor{*-*-solaris2.8}*-*-solaris2.8 + +The Solaris 8 linker fails to link some @samp{libjava} programs if +previously-installed GCC java libraries already exist in the configured +prefix. For this reason, @samp{libgcj} is disabled by default on Solaris 8. +If you use GNU @command{ld}, or if you don't have a previously-installed @samp{libgcj} in +the same prefix, use @option{--enable-libgcj} to build and install the +Java libraries. + +@html +<p> +<hr> +@end html +@heading @anchor{sparc-sun-sunos4*}sparc-sun-sunos4* + +A bug in the SunOS 4 linker will cause it to crash when linking +@option{-fPIC} compiled objects (and will therefore not allow you to build +shared libraries). + +To fix this problem you can either use the most recent version of +binutils or get the latest SunOS 4 linker patch (patch ID 100170-10) +from Sun's patch site. + +Sometimes on a Sun 4 you may observe a crash in the program +@command{genflags} or @command{genoutput} while building GCC. This is said to +be due to a bug in @command{sh}. You can probably get around it by running +@command{genflags} or @command{genoutput} manually and then retrying the +@command{make}. + +@html +</p> +<hr> +@end html +@heading @anchor{sparc-unknown-linux-gnulibc1}sparc-unknown-linux-gnulibc1 + +It has been reported that you might need +@uref{ftp://ftp.yggdrasil.com/private/hjl,,binutils 2.8.1.0.23} +for this platform, too. + + +@html +</p> +<hr> +@end html +@heading @anchor{sparc-*-linux*}sparc-*-linux* + +GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4 +or newer on this platform. All earlier binutils and glibc +releases mishandled unaligned relocations on @code{sparc-*-*} targets. + + +@html +</p> +<hr> +@end html +@heading @anchor{sparc64-*-*}sparc64-*-* + +GCC version 2.95 is not able to compile code correctly for +@code{sparc64} targets. Users of the Linux kernel, at least, +can use the @code{sparc32} program to start up a new shell +invocation with an environment that causes @command{configure} to +recognize (via @samp{uname -a}) the system as @samp{sparc-*-*} instead. + +@html +</p> +<hr> +@end html +@heading @anchor{sparcv9-*-solaris2*}sparcv9-*-solaris2* + +The following compiler flags must be specified in the configure +step in order to bootstrap this target with the Sun compiler: + +@example + % CC="cc -xildoff -xarch=v9" @var{srcdir}/configure [@var{options}] [@var{target}] +@end example + +@option{-xildoff} turns off the incremental linker, and @option{-xarch=v9} +specifies the v9 architecture to the Sun linker and assembler. + +@html +</p> +<hr> +@end html +@heading @anchor{#*-*-sysv*}*-*-sysv* +On System V release 3, you may get this error message +while linking: + +@smallexample +ld fatal: failed to write symbol name @var{something} + in strings table for file @var{whatever} +@end smallexample + +This probably indicates that the disk is full or your ulimit won't allow +the file to be as large as it needs to be. + +This problem can also result because the kernel parameter @code{MAXUMEM} +is too small. If so, you must regenerate the kernel and make the value +much larger. The default value is reported to be 1024; a value of 32768 +is said to work. Smaller values may also work. + +On System V, if you get an error like this, + +@example +/usr/local/lib/bison.simple: In function `yyparse': +/usr/local/lib/bison.simple:625: virtual memory exhausted +@end example + +@noindent +that too indicates a problem with disk space, ulimit, or @code{MAXUMEM}. + +On a System V release 4 system, make sure @file{/usr/bin} precedes +@file{/usr/ucb} in @code{PATH}. The @code{cc} command in +@file{/usr/ucb} uses libraries which have bugs. + +@html +</p> +<hr> +@end html +@heading @anchor{vax-dec-ultrix}vax-dec-ultrix +Don't try compiling with VAX C (@code{vcc}). It produces incorrect code +in some cases (for example, when @code{alloca} is used). + +@html +</p> +<hr> +@end html +@heading @anchor{we32k-*-*}we32k-*-* +These computers are also known as the 3b2, 3b5, 3b20 and other similar +names. (However, the 3b1 is actually a 68000.) + +Don't use @option{-g} when compiling with the system's compiler. The +system's linker seems to be unable to handle such a large program with +debugging information. + +The system's compiler runs out of capacity when compiling @file{stmt.c} +in GCC@. You can work around this by building @file{cpp} in GCC +first, then use that instead of the system's preprocessor with the +system's C compiler to compile @file{stmt.c}. Here is how: + +@smallexample +mv /lib/cpp /lib/cpp.att +cp cpp /lib/cpp.gnu +echo '/lib/cpp.gnu -traditional $@{1+"$@@"@}' > /lib/cpp +chmod +x /lib/cpp +@end smallexample + +The system's compiler produces bad code for some of the GCC +optimization files. So you must build the stage 2 compiler without +optimization. Then build a stage 3 compiler with optimization. +That executable should work. Here are the necessary commands: + +@smallexample +make LANGUAGES=c CC=stage1/xgcc CFLAGS="-Bstage1/ -g" +make stage2 +make CC=stage2/xgcc CFLAGS="-Bstage2/ -g -O" +@end smallexample + +You may need to raise the ULIMIT setting to build a C++ compiler, +as the file @file{cc1plus} is larger than one megabyte. + +@html +</p> +<hr> +@end html +@heading @anchor{xtensa-*-elf}xtensa-*-elf + +This target is intended for embedded Xtensa systems using the +@samp{newlib} C library. It uses ELF but does not support shared +objects. Designed-defined instructions specified via the +Tensilica Instruction Extension (TIE) language are only supported +through inline assembly. + +The Xtensa configuration information must be specified prior to +building GCC@. The @file{gcc/config/xtensa/xtensa-config.h} header +file contains the configuration information. If you created your +own Xtensa configuration with the Xtensa Processor Generator, the +downloaded files include a customized copy of this header file, +which you can use to replace the default header file. + +@html +</p> +<hr> +@end html +@heading @anchor{xtensa-*-linux*}xtensa-*-linux* + +This target is for Xtensa systems running GNU/Linux. It supports ELF +shared objects and the GNU C library (glibc). It also generates +position-independent code (PIC) regardless of whether the +@option{-fpic} or @option{-fPIC} options are used. In other +respects, this target is the same as the +@uref{#xtensa-*-elf,,@samp{xtensa-*-elf}} target. + +@html +</p> +<hr> +@end html +@heading @anchor{windows}Microsoft Windows (32 bit) + +A port of GCC 2.95.x is included with the +@uref{http://www.cygwin.com/,,Cygwin environment}. + +Current (as of early 2001) snapshots of GCC will build under Cygwin +without modification. + +@html +</p> +<hr> +@end html +@heading @anchor{os2}OS/2 + +GCC does not currently support OS/2. However, Andrew Zabolotny has been +working on a generic OS/2 port with pgcc. The current code can be found +at @uref{http://www.goof.com/pcg/os2/,,http://www.goof.com/pcg/os2/}. + +An older copy of GCC 2.8.1 is included with the EMX tools available at +@uref{ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/,, +ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/}. + +@html +</p> +<hr> +@end html +@heading @anchor{older}Older systems + +GCC contains support files for many older (1980s and early +1990s) Unix variants. For the most part, support for these systems +has not been deliberately removed, but it has not been maintained for +several years and may suffer from bitrot. Support from some systems +has been removed from GCC 3: fx80, ns32-ns-genix, pyramid, tahoe, +gmicro, spur; most of these targets had not been updated since GCC +version 1. + +Support for older systems as targets for cross-compilation is less +problematic than support for them as hosts for GCC; if an enthusiast +wishes to make such a target work again (including resurrecting any +of the targets that never worked with GCC 2, starting from the last +CVS version before they were removed), patches +@uref{../contribute.html,,following the usual requirements} +would be likely to be accepted, since they should not affect the +support for more modern targets. + +Support for old systems as hosts for GCC can cause problems if the +workarounds for compiler, library and operating system bugs affect the +cleanliness or maintainability of the rest of GCC@. In some cases, to +bring GCC up on such a system, if still possible with current GCC, may +require first installing an old version of GCC which did work on that +system, and using it to compile a more recent GCC, to avoid bugs in +the vendor compiler. Old releases of GCC 1 and GCC 2 are available in +the @file{old-releases} directory on the +@uref{../mirrors.html,,GCC mirror sites}. Header bugs may generally +be avoided using @command{fixincludes}, but bugs or deficiencies in +libraries and the operating system may still cause problems. + +For some systems, old versions of GNU binutils may also be useful, +and are available from @file{pub/binutils/old-releases} on +@uref{http://sources.redhat.com/mirrors.html,,sources.redhat.com mirror sites}. + +Some of the information on specific systems above relates to +such older systems, but much of the information +about GCC on such systems (which may no longer be applicable to +current GCC) is to be found in the GCC texinfo manual. + +@html +</p> +<hr> +@end html +@heading @anchor{elf_targets}all ELF targets (SVR4, Solaris 2, etc.) + +C++ support is significantly better on ELF targets if you use the +@uref{./configure.html#with-gnu-ld,,GNU linker}; duplicate copies of +inlines, vtables and template instantiations will be discarded +automatically. + + +@html +</p> +<hr> +<p> +@end html +@ifhtml +@uref{./index.html,,Return to the GCC Installation page} +@end ifhtml +@end ifset + +@c ***Old documentation****************************************************** +@ifset oldhtml +@include install-old.texi +@html +</p> +<hr> +<p> +@end html +@ifhtml +@uref{./index.html,,Return to the GCC Installation page} +@end ifhtml +@end ifset + +@c ***GFDL******************************************************************** +@ifset gfdlhtml +@include fdl.texi +@html +</p> +<hr> +<p> +@end html +@ifhtml +@uref{./index.html,,Return to the GCC Installation page} +@end ifhtml +@end ifset + +@c *************************************************************************** +@c Part 6 The End of the Document +@ifinfo +@comment node-name, next, previous, up +@node Concept Index, , GNU Free Documentation License, Top +@end ifinfo + +@ifinfo +@unnumbered Concept Index + +@printindex cp + +@contents +@end ifinfo +@bye |