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