| \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.amelek.gda.pl/avr,,http://www.amelek.gda.pl/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 |