]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/doc/install.texi
Daily bump.
[thirdparty/gcc.git] / gcc / doc / install.texi
CommitLineData
f42974dc
DW
1\input texinfo.tex @c -*-texinfo-*-
2@c @ifnothtml
3@c %**start of header
4@setfilename install.info
5@settitle Installing GCC
6@setchapternewpage odd
7@c %**end of header
8@c @end ifnothtml
9
10@c Specify title for specific html page
11@ifset indexhtml
12@settitle Installing GCC
13@end ifset
14@ifset specifichtml
15@settitle Host/Target specific installation notes for GCC
16@end ifset
17@ifset downloadhtml
18@settitle Downloading GCC
19@end ifset
20@ifset configurehtml
21@settitle Installing GCC: Configuration
22@end ifset
23@ifset buildhtml
24@settitle Installing GCC: Building
25@end ifset
26@ifset testhtml
27@settitle Installing GCC: Testing
28@end ifset
29@ifset finalinstallhtml
30@settitle Installing GCC: Final installation
31@end ifset
32@ifset binarieshtml
33@settitle Installing GCC: Binaries
34@end ifset
35
f42974dc
DW
36@c Copyright (C) 2001 Free Software Foundation, Inc.
37@c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com
38
39@c Include everything if we're not making html
40@ifnothtml
41@set indexhtml
42@set specifichtml
43@set downloadhtml
44@set configurehtml
45@set buildhtml
46@set testhtml
47@set finalinstallhtml
48@set binarieshtml
49@end ifnothtml
50
51@c Part 2 Summary Description and Copyright
52@ifinfo
53
54Copyright @copyright{} 2001 Free Software Foundation, Inc.
55@end ifinfo
56
57@c Part 3 Titlepage and Copyright
58@titlepage
59@sp 10
60@comment The title is printed in a large font.
ef88b07d 61@center @titlefont{Installing GCC}
f42974dc
DW
62
63@c The following two commands start the copyright page.
64@page
ef88b07d 65@vskip 0pt plus 1filll
f42974dc
DW
66Copyright @copyright{} 2001 Free Software Foundation, Inc.
67@end titlepage
68
69@c Part 4 Top node and Master Menu
70@ifinfo
71@node Top, , , (dir)
72@comment node-name, next, Previous, up
73
74@menu
75* Installing GCC:: This document describes the generic installation
76 procedure for GCC as well as detailing some target
f9047ed3 77 specific installation instructions.
f42974dc
DW
78
79* Specific:: Host/target specific installation notes for GCC.
80* Binaries:: Where to get pre-compiled binaries.
81
82* Concept Index:: This index has two entries.
83@end menu
84@end ifinfo
85
86@c Part 5 The Body of the Document
87@c ***Installing GCC**********************************************************
6cfb3f16 88@ifnothtml
f42974dc
DW
89@comment node-name, next, previous, up
90@node Installing GCC, Binaries, , Top
6cfb3f16 91@end ifnothtml
f42974dc
DW
92@ifset indexhtml
93@html
94<h1 align="center">Installing GCC</h1>
95@end html
96@ifnothtml
97@chapter Installing GCC
98@end ifnothtml
99
100The latest version of this document is always available at
f9047ed3 101@uref{http://gcc.gnu.org/install/,,http://gcc.gnu.org/install/}.
f42974dc
DW
102
103This document describes the generic installation procedure for GCC as well
f9047ed3 104as detailing some target specific installation instructions.
f42974dc 105
f9047ed3
JM
106GCC includes several components that previously were separate distributions
107with their own installation instructions. This document supersedes all
eea81d3e 108package specific installation instructions.
f42974dc 109
f9047ed3 110@emph{Before} starting the build/install procedure please check the
f42974dc 111@ifnothtml
eea81d3e 112@ref{Specific, host/target specific installation notes}.
f42974dc 113@end ifnothtml
c009f01f 114@ifhtml
f9047ed3 115@uref{specific.html,,host/target specific installation notes}.
c009f01f 116@end ifhtml
f9047ed3 117We recommend you browse the entire generic installation instructions before
f42974dc
DW
118you proceed.
119
c009f01f
JJ
120Lists of successful builds for released versions of GCC are
121available at our web pages for
122@uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,3.0}
123and
124@uref{http://gcc.gnu.org/gcc-2.95/buildstat.html,,2.95}.
125These lists are updated as new information becomes available.
126
f9047ed3 127The installation procedure itself is broken into five steps.
f42974dc
DW
128
129@ifinfo
130@menu
131* Downloading the source::
132* Configuration::
133* Building::
134* Testing:: (optional)
135* Final install::
136@end menu
137@end ifinfo
c009f01f 138@ifhtml
f42974dc 139@enumerate
f9047ed3 140@item
f42974dc 141@uref{download.html,,Downloading the source}
f42974dc 142@item
f9047ed3
JM
143@uref{configure.html,,Configuration}
144@item
145@uref{build.html,,Building}
146@item
147@uref{test.html,,Testing} (optional)
f42974dc
DW
148@item
149@uref{finalinstall.html,,Final install}
150@end enumerate
c009f01f 151@end ifhtml
f42974dc 152
38209993 153Please note that GCC does not support @samp{make uninstall} and probably
f9047ed3 154won't do so in the near future as this would open a can of worms. Instead,
f42974dc 155we suggest that you install GCC into a directory of its own and simply
38209993 156remove that directory when you do not need that specific version of GCC
eea81d3e
RO
157any longer, and, if shared libraries are installed there as well, no
158more binaries exist that use them.
f42974dc
DW
159
160@html
161<hr>
162<p>
163@end html
164@ifhtml
165@uref{./index.html,,Return to the GCC Installation page}
166@end ifhtml
167@end ifset
168
169@c ***Downloading the source**************************************************
6cfb3f16 170@ifnothtml
f42974dc
DW
171@comment node-name, next, previous, up
172@node Downloading the source, Configuration, , Installing GCC
6cfb3f16 173@end ifnothtml
f42974dc
DW
174@ifset downloadhtml
175@html
176<h1 align="center">Downloading GCC</h1>
177@end html
178@ifnothtml
179@chapter Downloading GCC
180@end ifnothtml
181@cindex Downloading GCC
182@cindex Downloading the Source
183
eea81d3e
RO
184GCC is distributed via @uref{http://gcc.gnu.org/cvs.html,,CVS} and FTP
185tarballs compressed with @command{gzip} or
6cfb3f16 186@command{bzip2}. It is possible to download a full distribution or specific
f42974dc
DW
187components.
188
189Please refer to our @uref{http://gcc.gnu.org/releases.html,,releases web page}
161d7b59 190for information on how to obtain GCC@.
f42974dc
DW
191
192The full distribution includes the C, C++, Objective-C, Fortran, Java,
eea81d3e
RO
193and CHILL compilers. The full distribution also includes runtime libraries
194for C++, Objective-C, Fortran, Java and CHILL. (GCC 3.0 does not
195include CHILL.) In GCC 3.0 and later versions, GNU compiler testsuites
ecb7d6b3 196are also included in the full distribution.
f42974dc
DW
197
198If you choose to download specific components, you must download the core
eea81d3e 199GCC distribution plus any language specific distributions you wish to
6c0a4eab 200use. The core distribution includes the C language front end as well as the
767094dd 201shared components. Each language has a tarball which includes the language
6c0a4eab 202front end as well as the language runtime (when appropriate).
f42974dc
DW
203
204Unpack the core distribution as well as any language specific
205distributions in the same directory.
206
207If you also intend to build binutils (either to upgrade an existing
208installation or for use in place of the corresponding tools of your
209OS), unpack the binutils distribution either in the same directory or
210a separate one. In the latter case, add symbolic links to any
211components of the binutils you intend to build alongside the compiler
6cfb3f16
JM
212(@file{bfd}, @file{binutils}, @file{gas}, @file{gprof}, @file{ld},
213@file{opcodes}, @dots{}) to the directory containing the GCC sources.
f42974dc
DW
214
215@html
216<hr>
217<p>
218@end html
219@ifhtml
220@uref{./index.html,,Return to the GCC Installation page}
221@end ifhtml
222@end ifset
223
224@c ***Configuration***********************************************************
6cfb3f16 225@ifnothtml
f42974dc
DW
226@comment node-name, next, previous, up
227@node Configuration, Building, Downloading the source, Installing GCC
6cfb3f16 228@end ifnothtml
f42974dc
DW
229@ifset configurehtml
230@html
231<h1 align="center">Installing GCC: Configuration</h1>
232@end html
233@ifnothtml
234@chapter Installing GCC: Configuration
235@end ifnothtml
236@cindex Configuration
237@cindex Installing GCC: Configuration
238
239Like most GNU software, GCC must be configured before it can be built.
240This document describes the recommended configuration procedure
241for both native and cross targets.
242
38209993
LG
243We use @var{srcdir} to refer to the toplevel source directory for
244GCC; we use @var{objdir} to refer to the toplevel build/object directory.
245
246If you obtained the sources via CVS, @var{srcdir} must refer to the top
247@file{gcc} directory, the one where the @file{MAINTAINERS} can be found,
248and not its @file{gcc} subdirectory, otherwise the build will fail.
f42974dc
DW
249
250First, we @strong{highly} recommend that GCC be built into a
251separate directory than the sources which does @strong{not} reside
252within the source tree. This is how we generally build GCC; building
38209993
LG
253where @var{srcdir} == @var{objdir} should still work, but doesn't
254get extensive testing; building where @var{objdir} is a subdirectory
255of @var{srcdir} is unsupported.
f42974dc 256
eea81d3e 257If you have previously built GCC in the same directory for a
f85b8d1a
JM
258different target machine, do @samp{make distclean} to delete all files
259that might be invalid. One of the files this deletes is
260@file{Makefile}; if @samp{make distclean} complains that @file{Makefile}
261does not exist, it probably means that the directory is already suitably
262clean. However, with the recommended method of building in a separate
263@var{objdir}, you should simply use a different @var{objdir} for each
264target.
265
38209993
LG
266Second, when configuring a native system, either @command{cc} or
267@command{gcc} must be in your path or you must set @env{CC} in
df002c7d
DE
268your environment before running configure. Otherwise the configuration
269scripts may fail.
f42974dc 270
eea81d3e
RO
271Note that the bootstrap compiler and the resulting GCC must be link
272compatible, else the bootstrap will fail with linker errors about
273incompatible object file formats. Several multilibed targets are
e69aa433
GP
274affected by this requirement, see
275@ifnothtml
276@ref{Specific, host/target specific installation notes}.
277@end ifnothtml
c009f01f 278@ifhtml
e69aa433 279@uref{specific.html,,host/target specific installation notes}.
c009f01f 280@end ifhtml
eea81d3e 281
f42974dc
DW
282To configure GCC:
283
284@example
38209993
LG
285 % mkdir @var{objdir}
286 % cd @var{objdir}
eea81d3e 287 % @var{srcdir}/configure [@var{options}] [@var{target}]
f42974dc
DW
288@end example
289
290
ef88b07d 291@heading Target specification
f42974dc
DW
292@itemize @bullet
293@item
38209993 294GCC has code to correctly determine the correct value for @var{target}
f9047ed3 295for nearly all native systems. Therefore, we highly recommend you not
f42974dc
DW
296provide a configure target when configuring a native compiler.
297
298@item
6cfb3f16 299@var{target} must be specified as @option{--target=@var{target}}
f9047ed3 300when configuring a cross compiler; examples of valid targets would be
f42974dc
DW
301i960-rtems, m68k-coff, sh-elf, etc.
302
303@item
6cfb3f16 304Specifying just @var{target} instead of @option{--target=@var{target}}
38209993 305implies that the host defaults to @var{target}.
f42974dc
DW
306@end itemize
307
308
ef88b07d 309@heading Options specification
f42974dc 310
ef88b07d 311Use @var{options} to override several configure time options for
161d7b59 312GCC@. A partial list of supported @var{options}:
f42974dc 313
ef88b07d
JM
314@table @code
315@item --prefix=@var{dirname}
316Specify the toplevel installation
f42974dc
DW
317directory. This is the recommended way to install the tools into a directory
318other than the default. The toplevel installation directory defaults to
6cfb3f16 319@file{/usr/local}.
f42974dc 320
38209993
LG
321We @strong{highly} recommend against @var{dirname} being the same or a
322subdirectory of @var{objdir} or vice versa.
f42974dc
DW
323
324These additional options control where certain parts of the distribution
325are installed. Normally you should not need to use these options.
ef88b07d 326@table @code
f42974dc 327
ab130aa5
JM
328@item --exec-prefix=@var{dirname}
329Specify the toplevel installation directory for architecture-dependent
330files. The default is @file{@var{prefix}}.
331
332@item --bindir=@var{dirname}
333Specify the installation directory for the executables called by users
334(such as @command{gcc} and @command{g++}). The default is
335@file{@var{exec-prefix}/bin}.
336
337@item --libdir=@var{dirname}
338Specify the installation directory for object code libraries and
161d7b59 339internal parts of GCC@. The default is @file{@var{exec-prefix}/lib}.
ab130aa5
JM
340
341@item --with-slibdir=@var{dirname}
342Specify the installation directory for the shared libgcc library. The
343default is @file{@var{libdir}}.
344
345@item --infodir=@var{dirname}
346Specify the installation directory for documentation in info format.
347The default is @file{@var{prefix}/info}.
348
349@item --mandir=@var{dirname}
350Specify the installation directory for manual pages. The default is
351@file{@var{prefix}/man}. (Note that the manual pages are only extracts from
352the full GCC manuals, which are provided in Texinfo format. The
353@command{g77} manpage is unmaintained and may be out of date; the others
354are derived by an automatic conversion process from parts of the full
355manual.)
356
ef88b07d
JM
357@item --with-gxx-include-dir=@var{dirname}
358Specify
eea81d3e 359the installation directory for G++ header files. The default is
ecb7d6b3
JM
360@file{@var{prefix}/include/g++-v3}.
361
ef88b07d 362@end table
f42974dc 363
ef88b07d
JM
364@item --with-local-prefix=@var{dirname}
365Specify the
6ac48571
JM
366installation directory for local include files. The default is
367@file{/usr/local}. Specify this option if you want the compiler to
368search directory @file{@var{dirname}/include} for locally installed
369header files @emph{instead} of @file{/usr/local/include}.
370
371You should specify @option{--with-local-prefix} @strong{only} if your
372site has a different convention (not @file{/usr/local}) for where to put
373site-specific files.
374
375The default value for @option{--with-local-prefix} is @file{/usr/local}
376regardless of the value of @option{--prefix}. Specifying
377@option{--prefix} has no effect on which directory GCC searches for
378local header files. This may seem counterintuitive, but actually it is
379logical.
380
381The purpose of @option{--prefix} is to specify where to @emph{install
382GCC}. The local header files in @file{/usr/local/include}---if you put
161d7b59 383any in that directory---are not part of GCC@. They are part of other
6ac48571
JM
384programs---perhaps many others. (GCC installs its own header files in
385another directory which is based on the @option{--prefix} value.)
386
387@strong{Do not} specify @file{/usr} as the @option{--with-local-prefix}!
388The directory you use for @option{--with-local-prefix} @strong{must not}
389contain any of the system's standard header files. If it did contain
390them, certain programs would be miscompiled (including GNU Emacs, on
391certain targets), because this would override and nullify the header
392file corrections made by the @code{fixincludes} script.
393
394Indications are that people who use this option use it based on mistaken
395ideas of what it is for. People use it as if it specified where to
161d7b59 396install part of GCC@. Perhaps they make this assumption because
6ac48571
JM
397installing GCC creates the directory.
398
6cfb3f16 399@item --enable-shared[=@var{package}[,@dots{}]]
0cb98517
AO
400Build shared versions of libraries, if shared libraries are supported on
401the target platform. Unlike GCC 2.95.x and earlier, shared libraries
eea81d3e
RO
402are enabled by default on all platforms that support shared libraries,
403except for @samp{libobjc} which is built as a static library only by
404default.
0cb98517
AO
405
406If a list of packages is given as an argument, build shared libraries
407only for the listed packages. For other packages, only static libraries
408will be built. Package names currently recognized in the GCC tree are
409@samp{libgcc} (also known as @samp{gcc}), @samp{libstdc++} (not
410@samp{libstdc++-v3}), @samp{libffi}, @samp{zlib}, @samp{boehm-gc} and
411@samp{libjava}. Note that @samp{libobjc} does not recognize itself by
412any name, so, if you list package names in @option{--enable-shared},
eea81d3e 413you will only get static Objective-C libraries. @samp{libf2c} and
0cb98517
AO
414@samp{libiberty} do not support shared libraries at all.
415
416Use @option{--disable-shared} to build only static libraries. Note that
417@option{--disable-shared} does not accept a list of package names as
418argument, only @option{--enable-shared} does.
f42974dc 419
ef88b07d
JM
420@item @anchor{with-gnu-as}--with-gnu-as
421Specify that the compiler should assume that the
767094dd 422assembler it finds is the GNU assembler. However, this does not modify
38209993 423the rules to find an assembler and will result in confusion if found
8c26c999
JM
424assembler is not actually the GNU assembler. (Confusion will also
425result if the compiler finds the GNU assembler but has not been
426configured with @option{--with-gnu-as}.) If you have more than one
38209993 427assembler installed on your system, you may want to use this option in
eea81d3e 428connection with @option{--with-as=@var{pathname}}.
38209993 429
8c26c999
JM
430The systems where it makes a difference whether you use the GNU assembler are
431@samp{hppa1.0-@var{any}-@var{any}}, @samp{hppa1.1-@var{any}-@var{any}},
432@samp{i386-@var{any}-sysv}, @samp{i386-@var{any}-isc},
433@samp{i860-@var{any}-bsd}, @samp{m68k-bull-sysv},
434@samp{m68k-hp-hpux}, @samp{m68k-sony-bsd},
435@samp{m68k-altos-sysv}, @samp{m68000-hp-hpux},
436@samp{m68000-att-sysv}, @samp{@var{any}-lynx-lynxos},
437and @samp{mips-@var{any}}.
438On any other system, @option{--with-gnu-as} has no effect.
439
440On the systems listed above (except for the HP-PA, for ISC on the
441386, and for @samp{mips-sgi-irix5.*}), if you use the GNU assembler,
442you should also use the GNU linker (and specify @option{--with-gnu-ld}).
443
eea81d3e 444@item --with-as=@var{pathname}
ef88b07d 445Specify that the
38209993
LG
446compiler should use the assembler pointed to by @var{pathname}, rather
447than the one found by the standard rules to find an assembler, which
448are:
f42974dc
DW
449@itemize @bullet
450@item
38209993
LG
451Check the
452@file{@var{exec_prefix}/lib/gcc-lib/@var{target}/@var{version}}
453directory, where @var{exec_prefix} defaults to @var{prefix} which
454defaults to @file{/usr/local} unless overridden by the
eea81d3e 455@option{--prefix=@var{pathname}} switch described above. @var{target} is the
b953cc4b 456target system triple, such as @samp{sparc-sun-solaris2.7}, and
eea81d3e 457@var{version} denotes the GCC version, such as 3.0.
f42974dc 458@item
e979f9e8 459Check operating system specific directories (e.g.@: @file{/usr/ccs/bin} on
250d5688 460Sun Solaris 2).
f42974dc 461@end itemize
767094dd 462Note that these rules do not check for the value of @env{PATH}. You may
38209993
LG
463want to use @option{--with-as} if no assembler is installed in the
464directories listed above, or if you have multiple assemblers installed
465and want to choose one that is not found by the above rules.
f42974dc 466
ef88b07d
JM
467@item @anchor{with-gnu-ld}--with-gnu-ld
468Same as @uref{#with-gnu-as,,@option{--with-gnu-as}}
38209993 469but for linker.
20293b4c 470
f42974dc 471
eea81d3e 472@item --with-ld=@var{pathname}
ef88b07d 473Same as
38209993 474@option{--with-as}, but for the linker.
f42974dc 475
ef88b07d
JM
476@item --with-stabs
477Specify that stabs debugging
38209993
LG
478information should be used instead of whatever format the host normally
479uses. Normally GCC uses the same debug format as the host system.
f42974dc 480
8c26c999
JM
481On MIPS based systems and on Alphas, you must specify whether you want
482GCC to create the normal ECOFF debugging format, or to use BSD-style
483stabs passed through the ECOFF symbol table. The normal ECOFF debug
161d7b59
JM
484format cannot fully handle languages other than C@. BSD stabs format can
485handle other languages, but it only works with the GNU debugger GDB@.
8c26c999
JM
486
487Normally, GCC uses the ECOFF debugging format by default; if you
161d7b59 488prefer BSD stabs, specify @option{--with-stabs} when you configure GCC@.
8c26c999
JM
489
490No matter which default you choose when you configure GCC, the user
491can use the @option{-gcoff} and @option{-gstabs+} options to specify explicitly
492the debug format for a particular compilation.
493
494@option{--with-stabs} is meaningful on the ISC system on the 386, also, if
495@option{--with-gas} is used. It selects use of stabs debugging
496information embedded in COFF output. This kind of debugging information
497supports C++ well; ordinary COFF debugging information does not.
498
499@option{--with-stabs} is also meaningful on 386 systems running SVR4. It
500selects use of stabs debugging information embedded in ELF output. The
501C++ compiler currently (2.6.0) does not support the DWARF debugging
502information normally used on 386 SVR4 platforms; stabs provide a
503workable alternative. This requires gas and gdb, as the normal SVR4
504tools can not generate or interpret stabs.
505
eea81d3e 506@item --disable-multilib
ef88b07d 507Specify that multiple target
eea81d3e
RO
508libraries to support different target variants, calling
509conventions, etc should not be built. The default is to build a
510predefined set of them.
f42974dc 511
e8515283
DE
512Some targets provide finer-grained control over which multilibs are built
513(e.g., @option{--disable-softfloat}):
514@table @code
515
516@item arc-*-elf*
517biendian.
518
519@item arm-*-*
520fpu, 26bit, underscore, interwork, biendian, nofmult.
521
522@item m68*-*-*
523softfloat, m68881, m68000, m68020.
524
525@item mips*-*-*
526single-float, biendian, softfloat.
527
528@item powerpc*-*-*, rs6000*-*-*
529aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
530sysv, aix.
531
532@end table
533
ef88b07d
JM
534@item --enable-threads
535Specify that the target
38209993
LG
536supports threads. This affects the Objective-C compiler and runtime
537library, and exception handling for other languages like C++ and Java.
6ac48571 538On some systems, this is the default.
f42974dc 539
f6160ed5
LR
540In general, the best (and, in many cases, the only known) threading
541model available will be configured for use. Beware that on some
542systems, gcc has not been taught what threading models are generally
3c6bb1db
LR
543available for the system. In this case, @option{--enable-threads} is an
544alias for @option{--enable-threads=single}.
f6160ed5
LR
545
546@item --disable-threads
547Specify that threading support should be disabled for the system.
3c6bb1db 548This is an alias for @option{--enable-threads=single}.
f6160ed5 549
ef88b07d
JM
550@item --enable-threads=@var{lib}
551Specify that
38209993
LG
552@var{lib} is the thread support library. This affects the Objective-C
553compiler and runtime library, and exception handling for other languages
f85b8d1a
JM
554like C++ and Java. The possibilities for @var{lib} are:
555
556@table @code
557@item aix
558AIX thread support.
559@item dce
560DCE thread support.
f85b8d1a 561@item mach
eea81d3e 562Generic MACH thread support, known to work on NeXTSTEP@. (Please note
3c6bb1db 563that the file needed to support this configuration, @file{gthr-mach.h}, is
f6160ed5
LR
564missing and thus this setting will cause a known bootstrap failure.)
565@item no
566This is an alias for @samp{single}.
f85b8d1a 567@item posix
c771326b 568Generic POSIX thread support.
f85b8d1a 569@item pthreads
f6160ed5
LR
570Same as @samp{posix} on arm*-*-linux*, *-*-chorusos* and *-*-freebsd*
571only. A future release of gcc might remove this alias or extend it
572to all platforms.
573@item rtems
574RTEMS thread support.
f85b8d1a
JM
575@item single
576Disable thread support, should work for all platforms.
577@item solaris
eea81d3e 578Sun Solaris 2 thread support.
f85b8d1a
JM
579@item vxworks
580VxWorks thread support.
581@item win32
582Microsoft Win32 API thread support.
583@end table
f42974dc 584
ef88b07d
JM
585@item --with-cpu=@var{cpu}
586Specify which cpu variant the
f42974dc
DW
587compiler should generate code for by default. This is currently
588only supported on the some ports, specifically arm, powerpc, and
161d7b59 589SPARC@. If configure does not recognize the model name (e.g.@: arm700,
f42974dc
DW
590603e, or ultrasparc) you provide, please check the configure script
591for a complete list of supported models.
592
ef88b07d
JM
593@item --enable-target-optspace
594Specify that target
38209993
LG
595libraries should be optimized for code space instead of code speed.
596This is the default for the m32r platform.
f42974dc 597
ab130aa5
JM
598@item --disable-cpp
599Specify that a user visible @command{cpp} program should not be installed.
600
601@item --with-cpp-install-dir=@var{dirname}
602Specify that the user visible @command{cpp} program should be installed
603in @file{@var{prefix}/@var{dirname}/cpp}, in addition to @var{bindir}.
f42974dc 604
ef88b07d
JM
605@item --enable-maintainer-mode
606The build rules that
6cfb3f16 607regenerate the GCC master message catalog @file{gcc.pot} are normally
767094dd
JM
608disabled. This is because it can only be rebuilt if the complete source
609tree is present. If you have changed the sources and want to rebuild the
6ac48571 610catalog, configuring with @option{--enable-maintainer-mode} will enable
767094dd 611this. Note that you need a recent version of the @code{gettext} tools
6ac48571
JM
612to do so.
613
ef88b07d
JM
614@item --enable-version-specific-runtime-libs
615Specify
38209993
LG
616that runtime libraries should be installed in the compiler specific
617subdirectory (@file{@var{libsubdir}}) rather than the usual places. In
eea81d3e 618addition, @samp{libstdc++}'s include files will be installed in
38209993 619@file{@var{libsubdir}/include/g++} unless you overruled it by using
6cfb3f16 620@option{--with-gxx-include-dir=@var{dirname}}. Using this option is
38209993 621particularly useful if you intend to use several versions of GCC in
eea81d3e
RO
622parallel. This is currently supported by @samp{libf2c} and
623@samp{libstdc++}, and is the default for @samp{libobjc} which cannot be
624changed in this case.
38209993 625
ef88b07d
JM
626@item --enable-languages=@var{lang1},@var{lang2},@dots{}
627Specify that only a particular subset of compilers and
767094dd 628their runtime libraries should be built. For a list of valid values for
6cfb3f16 629@var{langN} you can issue the following command in the
eea81d3e
RO
630@file{gcc} directory of your GCC source tree:@*
631@example
632grep language= */config-lang.in
633@end example
634Currently, you can use any of the following:
e23381df 635@code{ada}, @code{c}, @code{c++}, @code{f77}, @code{java}, @code{objc}.
f42974dc 636@code{CHILL} is not currently maintained, and will almost
e23381df
GB
637certainly fail to compile. Building the Ada compiler has special
638requirements, see below.@*
38209993 639If you do not pass this flag, all languages available in the @file{gcc}
6cfb3f16 640sub-tree will be configured. Re-defining @code{LANGUAGES} when calling
ef88b07d 641@samp{make bootstrap} @strong{does not} work anymore, as those
38209993 642language sub-directories might not have been configured!
f42974dc 643
ef88b07d
JM
644@item --disable-libgcj
645Specify that the run-time libraries
f42974dc
DW
646used by GCJ should not be built. This is useful in case you intend
647to use GCJ with some other run-time, or you're going to install it
648separately, or it just happens not to build on your particular
6c0a4eab 649machine. In general, if the Java front end is enabled, the GCJ
f42974dc 650libraries will be enabled too, unless they're known to not work on
eea81d3e 651the target platform. If GCJ is enabled but @samp{libgcj} isn't built, you
f42974dc 652may need to port it; in this case, before modifying the top-level
eea81d3e 653@file{configure.in} so that @samp{libgcj} is enabled by default on this platform,
f42974dc
DW
654you may use @option{--enable-libgcj} to override the default.
655
ef88b07d
JM
656@item --with-dwarf2
657Specify that the compiler should
eea81d3e 658use DWARF 2 debugging information as the default.
f85b8d1a
JM
659
660@item --enable-win32-registry
eea81d3e 661@itemx --enable-win32-registry=@var{key}
f85b8d1a 662@itemx --disable-win32-registry
6cfb3f16 663The @option{--enable-win32-registry} option enables Windows-hosted GCC
f85b8d1a
JM
664to look up installations paths in the registry using the following key:
665
666@smallexample
eea81d3e 667@code{HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\@var{key}}
f85b8d1a
JM
668@end smallexample
669
eea81d3e
RO
670@var{key} defaults to GCC version number, and can be overridden by the
671@option{--enable-win32-registry=@var{key}} option. Vendors and distributors
f85b8d1a
JM
672who use custom installers are encouraged to provide a different key,
673perhaps one comprised of vendor name and GCC version number, to
767094dd 674avoid conflict with existing installations. This feature is enabled
6cfb3f16 675by default, and can be disabled by @option{--disable-win32-registry}
f85b8d1a
JM
676option. This option has no effect on the other hosts.
677
678@item --nfp
679Specify that the machine does not have a floating point unit. This
680option only applies to @samp{m68k-sun-sunos@var{n}} and
6cfb3f16 681@samp{m68k-isi-bsd}. On any other system, @option{--nfp} has no effect.
f85b8d1a
JM
682
683@item --enable-checking
684@itemx --enable-checking=@var{list}
685When you specify this option, the compiler is built to perform checking
686of tree node types when referencing fields of that node, and some other
687internal consistency checks. This does not change the generated code,
688but adds error checking within the compiler. This will slow down the
689compiler and may only work properly if you are building the compiler
161d7b59 690with GCC@. This is on by default when building from CVS or snapshots,
f85b8d1a
JM
691but off for releases. More control over the checks may be had by
692specifying @var{list}; the categories of checks available are
693@samp{misc}, @samp{tree}, @samp{gc}, @samp{rtl} and @samp{gcac}. The
694default when @var{list} is not specified is @samp{misc,tree,gc}; the
695checks @samp{rtl} and @samp{gcac} are very expensive.
696
697@item --enable-nls
698@itemx --disable-nls
6cfb3f16 699The @option{--enable-nls} option enables Native Language Support (NLS),
f85b8d1a 700which lets GCC output diagnostics in languages other than American
767094dd 701English. Native Language Support is enabled by default if not doing a
161d7b59 702canadian cross build. The @option{--disable-nls} option disables NLS@.
f85b8d1a
JM
703
704@item --with-included-gettext
c771326b 705If NLS is enabled, the @option{--with-included-gettext} option causes the build
021c4bfd 706procedure to prefer its copy of GNU @command{gettext}.
f85b8d1a
JM
707
708@item --with-catgets
709If NLS is enabled, and if the host lacks @code{gettext} but has the
710inferior @code{catgets} interface, the GCC build procedure normally
711ignores @code{catgets} and instead uses GCC's copy of the GNU
6cfb3f16 712@code{gettext} library. The @option{--with-catgets} option causes the
f85b8d1a 713build procedure to use the host's @code{catgets} in this situation.
ef88b07d 714@end table
f42974dc
DW
715
716Some options which only apply to building cross compilers:
ef88b07d
JM
717@table @code
718@item --with-headers=@var{dir}
719Specifies a directory
38209993 720which has target include files.
f42974dc 721@emph{This options is required} when building a cross
38209993
LG
722compiler, if @file{@var{prefix}/@var{target}/sys-include} doesn't pre-exist.
723These include files will be copied into the @file{gcc} install directory.
724Fixincludes will be run on these files to make them compatible with
eea81d3e 725GCC.
ef88b07d 726@item --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}''
38209993
LG
727Specifies a list of directories which contain the target runtime
728libraries. These libraries will be copied into the @file{gcc} install
729directory.
ef88b07d 730@item --with-newlib
eea81d3e 731Specifies that @samp{newlib} is
38209993 732being used as the target C library. This causes @code{__eprintf} to be
eea81d3e
RO
733omitted from @file{libgcc.a} on the assumption that it will be provided by
734@samp{newlib}.
ef88b07d 735@end table
f9047ed3 736
38209993
LG
737Note that each @option{--enable} option has a corresponding
738@option{--disable} option and that each @option{--with} option has a
739corresponding @option{--without} option.
f42974dc
DW
740
741@html
742<hr>
743<p>
744@end html
745@ifhtml
746@uref{./index.html,,Return to the GCC Installation page}
747@end ifhtml
748@end ifset
749
750@c ***Building****************************************************************
6cfb3f16 751@ifnothtml
f42974dc
DW
752@comment node-name, next, previous, up
753@node Building, Testing, Configuration, Installing GCC
6cfb3f16 754@end ifnothtml
f42974dc
DW
755@ifset buildhtml
756@html
757<h1 align="center">Installing GCC: Building</h1>
758@end html
759@ifnothtml
760@chapter Building
761@end ifnothtml
762@cindex Installing GCC: Building
763
764Now that GCC is configured, you are ready to build the compiler and
765runtime libraries.
766
767We @strong{highly} recommend that GCC be built using GNU make;
e23381df
GB
768other versions may work, then again they might not.
769GNU make is required for compiling GNAT, the Ada compiler.
f42974dc
DW
770
771(For example, many broken versions of make will fail if you use the
b8df899a
JM
772recommended setup where @var{objdir} is different from @var{srcdir}.
773Other broken versions may recompile parts of the compiler when
774installing the compiler.)
f42974dc 775
b8df899a 776Some commands executed when making the compiler may fail (return a
df2a54e9 777nonzero status) and be ignored by @code{make}. These failures, which
b8df899a
JM
778are often due to files that were not found, are expected, and can safely
779be ignored.
780
781It is normal to have compiler warnings when compiling certain files.
782Unless you are a GCC developer, you can generally ignore these warnings
783unless they cause compilation to fail.
784
785On certain old systems, defining certain environment variables such as
6cfb3f16 786@env{CC} can interfere with the functioning of @command{make}.
b8df899a
JM
787
788If you encounter seemingly strange errors when trying to build the
789compiler in a directory other than the source directory, it could be
790because you have previously configured the compiler in the source
791directory. Make sure you have done all the necessary preparations.
792
793If you build GCC on a BSD system using a directory stored in an old System
794V file system, problems may occur in running @code{fixincludes} if the
795System V file system doesn't support symbolic links. These problems
796result in a failure to fix the declaration of @code{size_t} in
797@file{sys/types.h}. If you find that @code{size_t} is a signed type and
798that type mismatches occur, this could be the cause.
799
161d7b59 800The solution is not to use such a directory for building GCC@.
f42974dc 801
f85b8d1a
JM
802When building from CVS or snapshots, or if you modify parser sources,
803you need the Bison parser generator installed. Any version 1.25 or
804later should work; older versions may also work. If you do not modify
805parser sources, releases contain the Bison-generated files and you do
806not need Bison installed to build them.
807
808When building from CVS or snapshots, or if you modify Texinfo
809documentation, you need version 4.0 or later of Texinfo installed if you
810want Info documentation to be regenerated. Releases contain Info
811documentation pre-built for the unmodified documentation in the release.
812
f42974dc
DW
813@section Building a native compiler
814
f9047ed3 815For a native build issue the command @samp{make bootstrap}. This
f42974dc
DW
816will build the entire GCC system, which includes the following steps:
817
818@itemize @bullet
819@item
820Build host tools necessary to build the compiler such as texinfo, bison,
821gperf.
822
823@item
824Build target tools for use by the compiler such as binutils (bfd,
eea81d3e
RO
825binutils, gas, gprof, ld, and opcodes)
826if they have been individually linked
f42974dc
DW
827or moved into the top level GCC source tree before configuring.
828
829@item
830Perform a 3-stage bootstrap of the compiler.
831
832@item
833Perform a comparison test of the stage2 and stage3 compilers.
834
835@item
836Build runtime libraries using the stage3 compiler from the previous step.
f9047ed3 837
f42974dc
DW
838@end itemize
839
38209993
LG
840If you are short on disk space you might consider @samp{make
841bootstrap-lean} instead. This is identical to @samp{make
842bootstrap} except that object files from the stage1 and
f42974dc
DW
843stage2 of the 3-stage bootstrap of the compiler are deleted as
844soon as they are no longer needed.
845
846
847If you want to save additional space during the bootstrap and in
848the final installation as well, you can build the compiler binaries
38209993
LG
849without debugging information with @samp{make CFLAGS='-O' LIBCFLAGS='-g
850-O2' LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap}. This will save
f42974dc
DW
851roughly 40% of disk space both for the bootstrap and the final installation.
852(Libraries will still contain debugging information.)
853
eea81d3e
RO
854If you wish to use non-default GCC flags when compiling the stage2 and
855stage3 compilers, set @code{BOOT_CFLAGS} on the command line when doing
f85b8d1a
JM
856@samp{make bootstrap}. Non-default optimization flags are less well
857tested here than the default of @samp{-g -O2}, but should still work.
858In a few cases, you may find that you need to specify special flags such
859as @option{-msoft-float} here to complete the bootstrap; or, if the
860native compiler miscompiles the stage1 compiler, you may need to work
861around this, by choosing @code{BOOT_CFLAGS} to avoid the parts of the
862stage1 compiler that were miscompiled, or by using @samp{make
863bootstrap4} to increase the number of stages of bootstrap.
864
6cfb3f16 865If you used the flag @option{--enable-languages=@dots{}} to restrict
f42974dc 866the compilers to be built, only those you've actually enabled will be
767094dd 867built. This will of course only build those runtime libraries, for
f42974dc 868which the particular compiler has been built. Please note,
eea81d3e 869that re-defining @env{LANGUAGES} when calling @samp{make bootstrap}
ef88b07d 870@strong{does not} work anymore!
f42974dc 871
f85b8d1a 872If the comparison of stage2 and stage3 fails, this normally indicates
eea81d3e 873that the stage2 compiler has compiled GCC incorrectly, and is therefore
f85b8d1a
JM
874a potentially serious bug which you should investigate and report. (On
875a few systems, meaningful comparison of object files is impossible; they
876always appear ``different''. If you encounter this problem, you will
877need to disable comparison in the @file{Makefile}.)
f42974dc
DW
878
879@section Building a cross compiler
880
881We recommend reading the
882@uref{http://www.objsw.com/CrossGCC/,,crossgcc FAQ}
883for information about building cross compilers.
884
885When building a cross compiler, it is not generally possible to do a
8863-stage bootstrap of the compiler. This makes for an interesting problem
161d7b59 887as parts of GCC can only be built with GCC@.
f42974dc
DW
888
889To build a cross compiler, we first recommend building and installing a
890native compiler. You can then use the native GCC compiler to build the
891cross compiler.
892
893Assuming you have already installed a native copy of GCC and configured
6cfb3f16 894your cross compiler, issue the command @command{make}, which performs the
f42974dc
DW
895following steps:
896
897@itemize @bullet
898@item
899Build host tools necessary to build the compiler such as texinfo, bison,
900gperf.
901
902@item
903Build target tools for use by the compiler such as binutils (bfd,
904binutils, gas, gprof, ld, and opcodes)
905if they have been individually linked or moved into the top level GCC source
906tree before configuring.
907
908@item
909Build the compiler (single stage only).
910
911@item
912Build runtime libraries using the compiler from the previous step.
913@end itemize
914
915Note that if an error occurs in any step the make process will exit.
916
917@section Building in parallel
918
38209993
LG
919If you have a multiprocessor system you can use @samp{make bootstrap
920MAKE="make -j 2" -j 2} or just @samp{make -j 2 bootstrap}
921for GNU Make 3.79 and above instead of just @samp{make bootstrap}
161d7b59 922when building GCC@. You can use a bigger number instead of two if
f42974dc
DW
923you like. In most cases, it won't help to use a number bigger than
924the number of processors in your machine.
925
e23381df
GB
926@section Building the Ada compiler
927
928In order to build GNAT, the Ada compiler, you need a working GNAT
929compiler, since the Ada front end is written in Ada (with some
930GNAT-specific extensions), and GNU make.
931
932However, you do not need a full installation of GNAT, just the GNAT
933binary @file{gnat1}, a copy of @file{gnatbind}, and a compiler driver
934which can deal with Ada input (by invoking the @file{gnat1} binary).
935You can specify this compiler driver by setting the @env{ADAC}
936environment variable at the configure step. @command{configure} can
937detect the driver automatically if it has got a common name such as
938@command{gcc} or @command{gnatgcc}. Of course, you still need a working
939C compiler (the compiler driver can be different or not).
940
941Additional build tools (such as @command{gnatmake}) or a working GNAT
942run-time library installation are usually @emph{not} required. However,
943if you want to boostrap the compiler using a minimal version of GNAT,
944you have to issue the following commands before invoking @samp{make
945boostrap} (this assumes that you start with an unmodified and consistent
946source distribution):
947
948@example
949 cd @var{srcdir}/gcc/ada
950 touch treeprs.ads [es]info.h nmake.ad[bs]
951@end example
952
953At the moment, the GNAT library and several tools for GNAT are not built
954by @samp{make bootstrap}. You have to invoke
955@samp{make gnatlib_and_tools} in the @file{@var{objdir}/gcc}
956subdirectory before proceeding with the next steps.
957
958For example, you can build a native Ada compiler by issuing the
959following commands (assuming @command{make} is GNU make):
960
961@example
962 cd @var{objdir}
963 @var{srcdir}/configure --enable-languages=c,ada
964 cd @var{srcdir}/gcc/ada
965 touch treeprs.ads [es]info.h nmake.ad[bs]
966 cd @var{objdir}
967 make bootstrap
968 cd gcc
969 make gnatlib_and_tools
970 cd ..
971@end example
972
973Currently, when compiling the Ada front end, you cannot use the parallel
974build feature described in the previous section.
975
f42974dc
DW
976@html
977<hr>
978<p>
979@end html
980@ifhtml
981@uref{./index.html,,Return to the GCC Installation page}
982@end ifhtml
983@end ifset
984
985@c ***Testing*****************************************************************
6cfb3f16 986@ifnothtml
f42974dc
DW
987@comment node-name, next, previous, up
988@node Testing, Final install, Building, Installing GCC
6cfb3f16 989@end ifnothtml
f42974dc
DW
990@ifset testhtml
991@html
992<h1 align="center">Installing GCC: Testing</h1>
993@end html
994@ifnothtml
995@chapter Installing GCC: Testing
996@end ifnothtml
997@cindex Testing
998@cindex Installing GCC: Testing
999@cindex Testsuite
1000
767094dd 1001Before you install GCC, you might wish to run the testsuite. This
f42974dc
DW
1002step is optional and may require you to download additional software.
1003
f9047ed3
JM
1004First, you must have @uref{download.html,,downloaded the testsuites}.
1005The full distribution contains testsuites; only if you downloaded the
f42974dc
DW
1006``core'' compiler plus any front ends, you do not have the testsuites.
1007
1008Second, you must have a @uref{http://www.gnu.org/software/dejagnu/,,current version of DejaGnu} installed;
1009dejagnu 1.3 is not sufficient.
1010
1011Now you may need specific preparations:
1012
1013@itemize @bullet
f42974dc
DW
1014
1015@item
ecb7d6b3 1016The following environment variables may need to be set appropriately, as in
f42974dc 1017the following example (which assumes that DejaGnu has been installed
6cfb3f16 1018under @file{/usr/local}):
f42974dc
DW
1019
1020@example
1021 TCL_LIBRARY = /usr/local/share/tcl8.0
1022 DEJAGNULIBS = /usr/local/share/dejagnu
1023@end example
1024
1025On systems such as Cygwin, these paths are required to be actual
1026paths, not mounts or links; presumably this is due to some lack of
1027portability in the DejaGnu code.
1028
ecb7d6b3
JM
1029If the directories where @command{runtest} and @command{expect} were
1030installed are in the @env{PATH}, it should not be necessary to set these
1031environment variables.
1032
f42974dc
DW
1033@end itemize
1034
1035Finally, you can run the testsuite (which may take a long time):
1036@example
ef88b07d 1037 cd @var{objdir}; make -k check
f42974dc
DW
1038@end example
1039
1040The testing process will try to test as many components in the GCC
2147b154 1041distribution as possible, including the C, C++, Objective-C and Fortran
ecb7d6b3 1042compilers as well as the C++ and Java runtime libraries.
f42974dc
DW
1043
1044@section How can I run the test suite on selected tests?
1045
1046As a first possibility to cut down the number of tests that are run it is
38209993 1047possible to use @samp{make check-gcc} or @samp{make check-g++}
eea81d3e 1048in the @file{gcc} subdirectory of the object directory. To further cut down the
f42974dc
DW
1049tests the following is possible:
1050
1051@example
6cfb3f16 1052 make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}"
f42974dc
DW
1053@end example
1054
eea81d3e 1055This will run all @command{gcc} execute tests in the testsuite.
f42974dc
DW
1056
1057@example
6cfb3f16 1058 make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}"
f42974dc
DW
1059@end example
1060
eea81d3e 1061This will run the @command{g++} ``old-deja'' tests in the testsuite where the filename
6cfb3f16 1062matches @samp{9805*}.
f42974dc 1063
6cfb3f16
JM
1064The @file{*.exp} files are located in the testsuite directories of the GCC
1065source, the most important ones being @file{compile.exp},
1066@file{execute.exp}, @file{dg.exp} and @file{old-deja.exp}.
1067To get a list of the possible @file{*.exp} files, pipe the
38209993 1068output of @samp{make check} into a file and look at the
6cfb3f16 1069@samp{Running @dots{} .exp} lines.
f42974dc
DW
1070
1071@section How to interpret test results
1072
6cfb3f16 1073After the testsuite has run you'll find various @file{*.sum} and @file{*.log}
767094dd 1074files in the testsuite subdirectories. The @file{*.log} files contain a
f42974dc 1075detailed log of the compiler invocations and the corresponding
767094dd 1076results, the @file{*.sum} files summarize the results. These summaries list
f42974dc
DW
1077all the tests that have been run with a corresponding status code:
1078
1079@itemize @bullet
1080@item
1081PASS: the test passed as expected
1082@item
1083XPASS: the test unexpectedly passed
1084@item
1085FAIL: the test unexpectedly failed
1086@item
1087XFAIL: the test failed as expected
1088@item
1089UNSUPPORTED: the test is not supported on this platform
1090@item
1091ERROR: the testsuite detected an error
1092@item
1093WARNING: the testsuite detected a possible problem
1094@end itemize
1095
38209993
LG
1096It is normal for some tests to report unexpected failures. At the
1097current time our testing harness does not allow fine grained control
1098over whether or not a test is expected to fail. We expect to fix this
1099problem in future releases.
f42974dc
DW
1100
1101
1102@section Submitting test results
1103
1104If you want to report the results to the GCC project, use the
767094dd 1105@file{contrib/test_summary} shell script. Start it in the @var{objdir} with
f42974dc
DW
1106
1107@example
6cfb3f16
JM
1108 @var{srcdir}/contrib/test_summary -p your_commentary.txt \
1109 -m gcc-testresults@@gcc.gnu.org |sh
f42974dc
DW
1110@end example
1111
6cfb3f16 1112This script uses the @command{Mail} program to send the results, so
767094dd 1113make sure it is in your @env{PATH}. The file @file{your_commentary.txt} is
f42974dc 1114prepended to the testsuite summary and should contain any special
767094dd 1115remarks you have on your results or your build environment. Please
f42974dc 1116do not edit the testsuite result block or the subject line, as these
f9047ed3 1117messages are automatically parsed and presented at the
f42974dc
DW
1118@uref{http://gcc.gnu.org/testresults/,,GCC testresults} web
1119page. Here you can also gather information on how specific tests
767094dd 1120behave on different platforms and compare them with your results. A
f42974dc
DW
1121few failing testcases are possible even on released versions and you
1122should look here first if you think your results are unreasonable.
1123
1124@end ifset
1125
1126@c ***Final install***********************************************************
6cfb3f16 1127@ifnothtml
f42974dc
DW
1128@comment node-name, next, previous, up
1129@node Final install, , Testing, Installing GCC
6cfb3f16 1130@end ifnothtml
f42974dc
DW
1131@ifset finalinstallhtml
1132@html
1133<h1 align="center">Installing GCC: Final installation</h1>
1134@end html
1135@ifnothtml
1136@chapter Installing GCC: Final installation
1137@end ifnothtml
1138
eea81d3e
RO
1139Now that GCC has been built (and optionally tested), you can install it with
1140@example
1141cd @var{objdir}; make install
1142@end example
f42974dc
DW
1143
1144That step completes the installation of GCC; user level binaries can
38209993
LG
1145be found in @file{@var{prefix}/bin} where @var{prefix} is the value you
1146specified with the @option{--prefix} to configure (or @file{/usr/local}
ab130aa5
JM
1147by default). (If you specified @option{--bindir}, that directory will
1148be used instead; otherwise, if you specified @option{--exec-prefix},
1149@file{@var{exec-prefix}/bin} will be used.) Headers for the C++ and
1150Java libraries are installed in @file{@var{prefix}/include}; libraries
1151in @file{@var{libdir}} (normally @file{@var{prefix}/lib}); internal
1152parts of the compiler in @file{@var{libdir}/gcc-lib}; documentation in
1153info format in @file{@var{infodir}} (normally @file{@var{prefix}/info}).
f42974dc 1154
c009f01f
JJ
1155If you built a released version of GCC then if you don't mind, please
1156quickly review the build status page for
1157@uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,3.0} or
1158@uref{http://gcc.gnu.org/gcc-2.95/buildstat.html,,2.95}.
f42974dc 1159If your system is not listed, send a note to
eea81d3e
RO
1160@email{gcc@@gcc.gnu.org} indicating
1161that you successfully built and installed GCC.
f42974dc 1162
c474f76b 1163Include the output from running @file{@var{srcdir}/config.guess}. (Do
eea81d3e 1164not send us the @file{config.guess} file itself, just the one-line output from
c009f01f 1165running it!) Also specify which version you built.
b9da07da
JJ
1166If the build was for GNU/Linux, also include the distribution name and version
1167(e.g., Red Hat 7.1 or Debian 2.2.3, available from @file{/etc/issue})
1168and the version of glibc you used; for RPM-based systems like Red Hat,
1169Mandrake, and SuSE type @samp{rpm -q glibc} to get the glibc version,
1170and on systems like Debian and Progeny use @samp{dpkg -l libc6}.
c009f01f
JJ
1171
1172We'd also like to know if the
1173@ifnothtml
1174@ref{Specific, host/target specific installation notes}
1175@end ifnothtml
1176@ifhtml
1177@uref{specific.html,,host/target specific installation notes}
1178@end ifhtml
1179didn't include your host/target information or if that information is
1180incomplete or out of date. Send a note to
1181@email{gcc@@gcc.gnu.org} telling us how the information should be changed.
f42974dc
DW
1182
1183If you find a bug, please report it following our
1184@uref{../bugs.html,,bug reporting guidelines}.
1185
ab130aa5
JM
1186If you want to print the GCC manuals, do @samp{cd @var{objdir}; make
1187dvi}. You will need to have @command{texi2dvi} (version at least 4.0)
1188and @TeX{} installed. This creates a number of @file{.dvi} files in
1189subdirectories of @file{@var{objdir}}; these may be converted for
1190printing with programs such as @command{dvips}. You can also
1191@uref{http://www.gnu.org/order/order.html,,buy printed manuals from the
1192Free Software Foundation}, though such manuals may not be for the most
161d7b59 1193recent version of GCC@.
ab130aa5 1194
f42974dc
DW
1195@html
1196<hr>
1197<p>
1198@end html
1199@ifhtml
1200@uref{./index.html,,Return to the GCC Installation page}
1201@end ifhtml
1202@end ifset
1203
1204@c ***Binaries****************************************************************
6cfb3f16 1205@ifnothtml
f42974dc
DW
1206@comment node-name, next, previous, up
1207@node Binaries, Specific, Installing GCC, Top
6cfb3f16 1208@end ifnothtml
f42974dc
DW
1209@ifset binarieshtml
1210@html
1211<h1 align="center">Installing GCC: Binaries</h1>
1212@end html
1213@ifnothtml
1214@chapter Installing GCC: Binaries
1215@end ifnothtml
1216@cindex Binaries
1217@cindex Installing GCC: Binaries
1218
161d7b59 1219We are often asked about pre-compiled versions of GCC@. While we cannot
f42974dc
DW
1220provide these for all platforms, below you'll find links to binaries for
1221various platforms where creating them by yourself is not easy due to various
1222reasons.
1223
1224Please note that we did not create these binaries, nor do we
1225support them. If you have any problems installing them, please
1226contact their makers.
1227
1228@itemize
1229@item
df002c7d
DE
1230AIX:
1231@itemize
1232@item
4b5eb038 1233@uref{http://freeware.bull.net,,Bull's Freeware and Shareware Archive for AIX};
df002c7d
DE
1234
1235@item
9da6e781 1236@uref{http://aixpdslib.seas.ucla.edu,,UCLA Software Library for AIX};
df002c7d 1237@end itemize
f42974dc
DW
1238
1239@item
6cfb3f16 1240DOS---@uref{http://www.delorie.com/djgpp/,,DJGPP};
f42974dc 1241
f404402c
MW
1242@item
1243HP-UX:
1244@itemize
f42974dc
DW
1245@item
1246@uref{http://hpux.cae.wisc.edu/,,HP-UX Porting Center};
1247
f404402c
MW
1248@item
1249@uref{ftp://sunsite.informatik.rwth-aachen.de/pub/packages/gcc_hpux/,,Binaries for HP-UX 11.00 at Aachen University of Technology}.
1250@end itemize
1251
f42974dc 1252@item
38209993
LG
1253@uref{http://www.sco.com/skunkware/devtools/index.html#gcc,,SCO
1254OpenServer/Unixware};
f42974dc
DW
1255
1256@item
250d5688 1257Solaris 2 (SPARC, Intel)---@uref{http://www.sunfreeware.com/,,Sunfreeware};
f42974dc
DW
1258
1259@item
6cfb3f16 1260SGI---@uref{http://freeware.sgi.com/,,SGI Freeware};
f42974dc
DW
1261
1262@item
1263Windows 95, 98, and NT:
1264@itemize
1265@item
1266The @uref{http://sources.redhat.com/cygwin/,,Cygwin} project;
1267@item
1268@uref{http://www.xraylith.wisc.edu/~khan/software/gnu-win32/,,GNU Win32}
1269related projects by Mumit Khan.
1270@end itemize
1271
1272@item
1273@uref{ftp://ftp.thewrittenword.com/packages/free/by-name/gcc-2.95.2/,,The
1274Written Word} offers binaries for Solaris 2.5.1, 2.6, 2.7/SPARC, 2.7/Intel,
1275IRIX 6.2, 6.5, Digital UNIX 4.0D, HP-UX 10.20, and HP-UX 11.00.
1276
1277@item
6cfb3f16
JM
1278Hitachi H8/300[HS]---@uref{http://h8300-hms.sourceforge.net/,,GNU
1279Development Tools for the Hitachi H8/300[HS] Series}
f42974dc
DW
1280
1281@end itemize
1282
1283In addition to those specific offerings, you can get a binary
1284distribution CD-ROM from the
f9047ed3 1285@uref{http://www.fsf.org/order/order.html,,Free Software Foundation}.
f42974dc 1286It contains binaries for a number of platforms, and
767094dd 1287includes not only GCC, but other stuff as well. The current CD does
f42974dc 1288not contain the latest version of GCC, but it should allow
767094dd 1289bootstrapping the compiler. An updated version of that disk is in the
f42974dc
DW
1290works.
1291
1292@html
1293<hr>
1294<p>
1295@end html
1296@ifhtml
1297@uref{./index.html,,Return to the GCC Installation page}
1298@end ifhtml
1299@end ifset
1300
1301@c ***Specific****************************************************************
6cfb3f16 1302@ifnothtml
f42974dc
DW
1303@comment node-name, next, previous, up
1304@node Specific, Concept Index, Binaries, Top
6cfb3f16 1305@end ifnothtml
f42974dc
DW
1306@ifset specifichtml
1307@html
1308<h1 align="center">Host/target specific installation notes for GCC</h1>
1309@end html
1310@ifnothtml
1311@chapter Host/target specific installation notes for GCC
1312@end ifnothtml
1313@cindex Specific
1314@cindex Specific installation notes
1315@cindex Target specific installation
1316@cindex Host specific installation
1317@cindex Target specific installation notes
1318
1319Please read this document carefully @emph{before} installing the
1320GNU Compiler Collection on your machine.
1321
c009f01f
JJ
1322Lists of successful builds for released versions of GCC are
1323available at our web pages for
1324@uref{http://gcc.gnu.org/gcc-3.0/buildstat.html,,3.0}
1325and
1326@uref{http://gcc.gnu.org/gcc-2.95/buildstat.html,,2.95}.
1327These lists are updated as new information becomes available.
1328
ef88b07d 1329@ifhtml
f42974dc
DW
1330@itemize
1331@item
b8df899a
JM
1332@uref{#1750a-*-*,,1750a-*-*}
1333@item
1334@uref{#a29k,,a29k}
1335@item
1336@uref{#a29k-*-bsd,,a29k-*-bsd}
1337@item
333e14b0 1338@uref{#alpha*-*-*,,alpha*-*-*}
f42974dc
DW
1339@item
1340@uref{#alpha*-dec-osf*,,alpha*-dec-osf*}
1341@item
71b96724
RL
1342@uref{#alphaev5-cray-unicosmk*,,alphaev5-cray-unicosmk*}
1343@item
b8df899a
JM
1344@uref{#arc-*-elf,,arc-*-elf}
1345@item
1346@uref{#arm-*-aout,,arm-*-aout}
1347@item
1348@uref{#arm-*-elf,,arm-*-elf}
1349@item
476c334e
PB
1350@uref{#arm*-*-linux-gnu,,arm*-*-linux-gnu}
1351@item
b8df899a
JM
1352@uref{#arm-*-riscix,,arm-*-riscix}
1353@item
f42974dc
DW
1354@uref{#avr,,avr}
1355@item
0132e321
MH
1356@uref{#c4x,,c4x}
1357@item
f42974dc
DW
1358@uref{#dos,,DOS}
1359@item
b8df899a
JM
1360@uref{#dsp16xx,,dsp16xx}
1361@item
1362@uref{#elxsi-elxsi-bsd,,elxsi-elxsi-bsd}
1363@item
021c4bfd
RO
1364@uref{#*-*-freebsd*,,*-*-freebsd*}
1365@item
f42974dc
DW
1366@uref{#h8300-hms,,h8300-hms}
1367@item
1368@uref{#hppa*-hp-hpux*,,hppa*-hp-hpux*}
1369@item
1370@uref{#hppa*-hp-hpux9,,hppa*-hp-hpux9}
1371@item
1372@uref{#hppa*-hp-hpux10,,hppa*-hp-hpux10}
1373@item
1374@uref{#hppa*-hp-hpux11,,hppa*-hp-hpux11}
1375@item
b8df899a
JM
1376@uref{#i370-*-*,,i370-*-*}
1377@item
f42974dc
DW
1378@uref{#*-*-linux-gnu,,*-*-linux-gnu}
1379@item
b8df899a
JM
1380@uref{#ix86-*-linux*oldld,,i?86-*-linux*oldld}
1381@item
1382@uref{#ix86-*-linux*aout,,i?86-*-linux*aout}
1383@item
f42974dc
DW
1384@uref{#ix86-*-linux*,,i?86-*-linux*}
1385@item
b8df899a
JM
1386@uref{#ix86-*-sco,,i?86-*-sco}
1387@item
1388@uref{#ix86-*-sco3.2v4,,i?86-*-sco3.2v4}
1389@item
f42974dc
DW
1390@uref{#ix86-*-sco3.2v5*,,i?86-*-sco3.2v5*}
1391@item
f42974dc
DW
1392@uref{#ix86-*-udk,,i?86-*-udk}
1393@item
b8df899a
JM
1394@uref{#ix86-*-isc,,i?86-*-isc}
1395@item
1396@uref{#ix86-*-esix,,i?86-*-esix}
1397@item
1398@uref{#ix86-ibm-aix,,i?86-ibm-aix}
1399@item
1400@uref{#ix86-sequent-bsd,,i?86-sequent-bsd}
1401@item
1402@uref{#ix86-sequent-ptx1*,,i?86-sequent-ptx1*, i?86-sequent-ptx2*}
1403@item
1404@uref{#ix86-*-sysv3*,,i?86-*-sysv3*}
1405@item
1406@uref{#i860-intel-osf*,,i860-intel-osf*}
1407@item
b499d9ab
JJ
1408@uref{#ia64-*-linux,,ia64-*-linux}
1409@item
b8df899a
JM
1410@uref{#*-lynx-lynxos,,*-lynx-lynxos}
1411@item
f42974dc
DW
1412@uref{#*-ibm-aix*,,*-ibm-aix*}
1413@item
b8df899a
JM
1414@uref{#m32r-*-elf,,m32r-*-elf}
1415@item
1416@uref{#m68000-hp-bsd,,m68000-hp-bsd}
1417@item
1418@uref{#m6811-elf,,m6811-elf}
1419@item
1420@uref{#m6812-elf,,m6812-elf}
1421@item
1422@uref{#m68k-altos,,m68k-altos}
1423@item
1424@uref{#m68k-apple-aux,,m68k-apple-aux}
1425@item
1426@uref{#m68k-att-sysv,,m68k-att-sysv}
1427@item
1428@uref{#m68k-bull-sysv,,m68k-bull-sysv}
1429@item
1430@uref{#m68k-crds-unox,,m68k-crds-unox}
1431@item
1432@uref{#m68k-hp-hpux,,m68k-hp-hpux}
1433@item
f42974dc
DW
1434@uref{#m68k-*-nextstep*,,m68k-*-nextstep*}
1435@item
b8df899a
JM
1436@uref{#m68k-ncr-*,,m68k-ncr-*}
1437@item
1438@uref{#m68k-sun,,m68k-sun}
1439@item
f42974dc
DW
1440@uref{#m68k-sun-sunos4.1.1,,m68k-sun-sunos4.1.1}
1441@item
b8df899a
JM
1442@uref{#m88k-*-svr3,,m88k-*-svr3}
1443@item
1444@uref{#m88k-*-dgux,,m88k-*-dgux}
1445@item
1446@uref{#m88k-tektronix-sysv3,,m88k-tektronix-sysv3}
1447@item
1448@uref{#mips-*-*,,mips-*-*}
1449@item
021c4bfd
RO
1450@uref{#mips-dec-*,,mips-dec-*}
1451@item
b8df899a
JM
1452@uref{#mips-mips-bsd,,mips-mips-bsd}
1453@item
1454@uref{#mips-mips-riscos*,,mips-mips-riscos*}
1455@item
b953cc4b 1456@uref{#mips-sgi-irix4,,mips-sgi-irix4}
213ba345 1457@item
b953cc4b 1458@uref{#mips-sgi-irix5,,mips-sgi-irix5}
f42974dc 1459@item
b953cc4b 1460@uref{#mips-sgi-irix6,,mips-sgi-irix6}
f42974dc 1461@item
b8df899a
JM
1462@uref{#mips-sony-sysv,,mips-sony-sysv}
1463@item
1464@uref{#ns32k-encore,,ns32k-encore}
1465@item
1466@uref{#ns32k-*-genix,,ns32k-*-genix}
1467@item
1468@uref{#ns32k-sequent,,ns32k-sequent}
1469@item
1470@uref{#ns32k-utek,,ns32k-utek}
1471@item
021c4bfd
RO
1472@uref{#powerpc*-*-*,,powerpc*-*-*, powerpc-*-sysv4}
1473@item
4f2b1139
SS
1474@uref{#powerpc-*-darwin*,,powerpc-*-darwin*}
1475@item
b8df899a
JM
1476@uref{#powerpc-*-elf,,powerpc-*-elf, powerpc-*-sysv4}
1477@item
f42974dc
DW
1478@uref{#powerpc-*-linux-gnu*,,powerpc-*-linux-gnu*}
1479@item
edf1b3f3
AC
1480@uref{#powerpc-*-netbsd*,,powerpc-*-netbsd*}
1481@item
b8df899a
JM
1482@uref{#powerpc-*-eabiaix,,powerpc-*-eabiaix}
1483@item
1484@uref{#powerpc-*-eabisim,,powerpc-*-eabisim}
1485@item
1486@uref{#powerpc-*-eabi,,powerpc-*-eabi}
1487@item
1488@uref{#powerpcle-*-elf,,powerpcle-*-elf, powerpcle-*-sysv4}
1489@item
1490@uref{#powerpcle-*-eabisim,,powerpcle-*-eabisim}
1491@item
1492@uref{#powerpcle-*-eabi,,powerpcle-*-eabi}
1493@item
1494@uref{#powerpcle-*-winnt,,powerpcle-*-winnt, powerpcle-*-pe}
1495@item
1496@uref{#romp-*-aos,,romp-*-aos, romp-*-mach}
1497@item
91abf72d
HP
1498@uref{#s390-*-linux*}
1499@item
1500@uref{#s390x-*-linux*}
1501@item
250d5688 1502@uref{#*-*-solaris2*,,*-*-solaris2*}
f42974dc 1503@item
250d5688 1504@uref{#sparc-sun-solaris2*,,sparc-sun-solaris2*}
f42974dc
DW
1505@item
1506@uref{#sparc-sun-solaris2.7,,sparc-sun-solaris2.7}
1507@item
250d5688 1508@uref{#*-*-solaris2.8,,*-*-solaris2.8}
f42974dc 1509@item
250d5688 1510@uref{#sparc-sun-sunos4*,,sparc-sun-sunos4*}
f42974dc
DW
1511@item
1512@uref{#sparc-unknown-linux-gnulibc1,,sparc-unknown-linux-gnulibc1}
1513@item
1514@uref{#sparc64-*-*,,sparc64-*-*}
1515@item
b8df899a
JM
1516@uref{#*-*-sysv*,,*-*-sysv*}
1517@item
1518@uref{#vax-dec-ultrix,,vax-dec-ultrix}
1519@item
1520@uref{#we32k-*-*,,we32k-*-*}
1521@item
f42974dc
DW
1522@uref{#windows,,Microsoft Windows}
1523@item
1524@uref{#os2,,OS/2}
1525@item
1526@uref{#older,,Older systems}
1527@end itemize
1528
1529@itemize
1530@item
250d5688 1531@uref{#elf_targets,,all ELF targets} (SVR4, Solaris 2, etc.)
f42974dc 1532@end itemize
ef88b07d 1533@end ifhtml
f42974dc
DW
1534
1535
1536@html
1537<!-- -------- host/target specific issues start here ---------------- -->
1538<hr>
f42974dc 1539@end html
b8df899a
JM
1540@heading @anchor{1750a-*-*}1750a-*-*
1541MIL-STD-1750A processors.
1542
1543The MIL-STD-1750A cross configuration produces output for
021c4bfd 1544@code{as1750}, an assembler/linker available under the GNU General Public
161d7b59 1545License for the 1750A@. @code{as1750} can be obtained at
b8df899a
JM
1546@uref{ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/}.
1547A similarly licensed simulator for
1548the 1750A is available from same address.
1549
021c4bfd
RO
1550You should ignore a fatal error during the building of @samp{libgcc}
1551(@samp{libgcc} is not yet implemented for the 1750A@.)
b8df899a
JM
1552
1553The @code{as1750} assembler requires the file @file{ms1750.inc}, which is
021c4bfd 1554found in the directory @file{gcc/config/1750a}.
b8df899a 1555
f0523f02 1556GCC produced the same sections as the Fairchild F9450 C Compiler,
b8df899a
JM
1557namely:
1558
1559@table @code
1560@item Normal
1561The program code section.
1562
1563@item Static
1564The read/write (RAM) data section.
1565
1566@item Konst
1567The read-only (ROM) constants section.
1568
1569@item Init
161d7b59 1570Initialization section (code to copy KREL to SREL)@.
b8df899a
JM
1571@end table
1572
021c4bfd 1573The smallest addressable unit is 16 bits (@code{BITS_PER_UNIT} is 16). This
6cfb3f16
JM
1574means that type @code{char} is represented with a 16-bit word per character.
1575The 1750A's ``Load/Store Upper/Lower Byte'' instructions are not used by
161d7b59 1576GCC@.
b8df899a
JM
1577
1578@html
1579</p>
1580<hr>
1581@end html
1582@heading @anchor{a29k}a29k
1583AMD Am29k-family processors. These are normally used in embedded
1584applications. There are no standard Unix configurations.
1585This configuration
1586corresponds to AMD's standard calling sequence and binary interface
1587and is compatible with other 29k tools.
1588
1589You may need to make a variant of the file @file{a29k.h} for your
1590particular configuration.
1591
1592@html
1593</p>
1594<hr>
1595@end html
1596@heading @anchor{a29k-*-bsd}a29k-*-bsd
1597AMD Am29050 used in a system running a variant of BSD Unix.
1598
1599@html
1600</p>
1601<hr>
1602@end html
333e14b0
LR
1603@heading @anchor{alpha*-*-*}alpha*-*-*
1604
1605This section contains general configuration information for all
1606alpha-based platforms using ELF (in particular, ignore this section for
161d7b59 1607DEC OSF/1, Digital UNIX and Tru64 UNIX)@. In addition to reading this
f2541106 1608section, please read all other sections that match your target.
333e14b0 1609
021c4bfd
RO
1610We require binutils 2.11.2 or newer.
1611Previous binutils releases had a number of problems with DWARF 2
333e14b0
LR
1612debugging information, not the least of which is incorrect linking of
1613shared libraries.
1614
b8df899a
JM
1615@html
1616</p>
1617<hr>
1618@end html
f2541106 1619@heading @anchor{alpha*-dec-osf*}alpha*-dec-osf*
b8df899a 1620Systems using processors that implement the DEC Alpha architecture and
f2541106
RO
1621are running the DEC/Compaq Unix (DEC OSF/1, Digital UNIX, or Compaq
1622Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
1623
1624In Tru64 UNIX V5.1, Compaq introduced a new assembler that does not
1625currently (2001-06-13) work with @command{mips-tfile}. As a workaround,
1626we need to use the old assembler, invoked via the barely documented
1627@option{-oldas} option. To bootstrap GCC, you either need to use the
1628Compaq C Compiler:
1629
1630@example
eea81d3e 1631 % CC=cc @var{srcdir}/configure [@var{options}] [@var{target}]
f2541106
RO
1632@end example
1633
1634or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0:
1635
1636@example
eea81d3e 1637 % CC=gcc -Wa,-oldas @var{srcdir}/configure [@var{options}] [@var{target}]
f2541106 1638@end example
b8df899a 1639
b953cc4b
RO
1640As of GNU binutils 2.11.2, neither GNU @command{as} nor GNU @command{ld}
1641are supported on Tru64 UNIX, so you must not configure GCC with
1642@option{--with-gnu-as} or @option{--with-gnu-ld}.
1643
1644The @option{--enable-threads} options isn't supported yet. A patch is
1645in preparation for a future release. The Java runtime library has been
1646reported to work on Tru64 UNIX V4.0F, V5.0, and V5.1, so you may try
1647@option{--enable-libgcj} and report your results.
1648
f0523f02 1649GCC writes a @samp{.verstamp} directive to the assembler output file
b8df899a
JM
1650unless it is built as a cross-compiler. It gets the version to use from
1651the system header file @file{/usr/include/stamp.h}. If you install a
1652new version of DEC Unix, you should rebuild GCC to pick up the new version
1653stamp.
1654
1655Note that since the Alpha is a 64-bit architecture, cross-compilers from
165632-bit machines will not generate code as efficient as that generated
1657when the compiler is running on a 64-bit machine because many
1658optimizations that depend on being able to represent a word on the
1659target in an integral value on the host cannot be performed. Building
1660cross-compilers on the Alpha for 32-bit machines has only been tested in
1661a few cases and may not work properly.
1662
1663@code{make compare} may fail on old versions of DEC Unix unless you add
6cfb3f16 1664@option{-save-temps} to @code{CFLAGS}. On these systems, the name of the
b8df899a
JM
1665assembler input file is stored in the object file, and that makes
1666comparison fail if it differs between the @code{stage1} and
6cfb3f16 1667@code{stage2} compilations. The option @option{-save-temps} forces a
b8df899a 1668fixed name to be used for the assembler input file, instead of a
6cfb3f16 1669randomly chosen name in @file{/tmp}. Do not add @option{-save-temps}
b8df899a 1670unless the comparisons fail without that option. If you add
6cfb3f16 1671@option{-save-temps}, you will have to manually delete the @samp{.i} and
b8df899a
JM
1672@samp{.s} files after each series of compilations.
1673
f0523f02 1674GCC now supports both the native (ECOFF) debugging format used by DBX
161d7b59 1675and GDB and an encapsulated STABS format for use only with GDB@. See the
6cfb3f16 1676discussion of the @option{--with-stabs} option of @file{configure} above
b8df899a
JM
1677for more information on these formats and how to select them.
1678
1679There is a bug in DEC's assembler that produces incorrect line numbers
1680for ECOFF format when the @samp{.align} directive is used. To work
f0523f02 1681around this problem, GCC will not emit such alignment directives
b8df899a
JM
1682while writing ECOFF format debugging information even if optimization is
1683being performed. Unfortunately, this has the very undesirable
6cfb3f16
JM
1684side-effect that code addresses when @option{-O} is specified are
1685different depending on whether or not @option{-g} is also specified.
b8df899a 1686
6cfb3f16 1687To avoid this behavior, specify @option{-gstabs+} and use GDB instead of
161d7b59 1688DBX@. DEC is now aware of this problem with the assembler and hopes to
b8df899a
JM
1689provide a fix shortly.
1690
71b96724
RL
1691@html
1692</p>
1693<hr>
1694@end html
1695@heading @anchor{alphaev5-cray-unicosmk*}alphaev5-cray-unicosmk*
1696Cray T3E systems running Unicos/Mk.
1697
1698This port is incomplete and has many known bugs. We hope to improve the
1699support for this target soon. Currently, only the C front end is supported,
1700and it is not possible to build parallel applications. Cray modules are not
1701supported; in particular, Craylibs are assumed to be in
1702@file{/opt/ctl/craylibs/craylibs}.
1703
1704You absolutely @strong{must} use GNU make on this platform. Also, you
1705need to tell GCC where to find the assembler and the linker. The
1706simplest way to do so is by providing @option{--with-as} and
1707@option{--with-ld} to @file{configure}, e.g.@:
1708
068e5714 1709@samp{configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld
71b96724
RL
1710--enable-languages=c}
1711
1712The comparison test during @samp{make bootstrap} fails on Unicos/Mk
1713because the assembler inserts timestamps into object files. You should
1714be able to work around this by doing @samp{make all} after getting this
1715failure.
1716
b8df899a
JM
1717@html
1718</p>
1719<hr>
1720@end html
1721@heading @anchor{arc-*-elf}arc-*-elf
1722Argonaut ARC processor.
1723This configuration is intended for embedded systems.
1724
1725@html
1726</p>
1727<hr>
1728@end html
1729@heading @anchor{arm-*-aout}arm-*-aout
1730Advanced RISC Machines ARM-family processors. These are often used in
1731embedded applications. There are no standard Unix configurations.
1732This configuration corresponds to the basic instruction sequences and will
1733produce @file{a.out} format object modules.
1734
1735You may need to make a variant of the file @file{arm.h} for your particular
1736configuration.
1737
1738@html
1739</p>
1740<hr>
1741@end html
1742@heading @anchor{arm-*-elf}arm-*-elf
1743This configuration is intended for embedded systems.
1744
476c334e
PB
1745@html
1746</p>
1747<hr>
476c334e 1748@end html
ef88b07d 1749@heading @anchor{arm*-*-linux-gnu}arm*-*-linux-gnu
476c334e
PB
1750
1751We require GNU binutils 2.10 or newer.
1752
b8df899a
JM
1753@html
1754</p>
1755<hr>
1756@end html
1757@heading @anchor{arm-*-riscix}arm-*-riscix
1758The ARM2 or ARM3 processor running RISC iX, Acorn's port of BSD Unix.
1759If you are running a version of RISC iX prior to 1.2 then you must
1760specify the version number during configuration. Note that the
1761assembler shipped with RISC iX does not support stabs debugging
1762information; a new version of the assembler, with stabs support
1763included, is now available from Acorn and via ftp
1764@uref{ftp://ftp.acorn.com/pub/riscix/as+xterm.tar.Z}. To enable stabs
6cfb3f16 1765debugging, pass @option{--with-gnu-as} to configure.
b8df899a 1766
6cfb3f16 1767You will need to install GNU @command{sed} before you can run configure.
b8df899a 1768
f42974dc
DW
1769@html
1770</p>
1771<hr>
f42974dc 1772@end html
ef88b07d 1773@heading @anchor{avr}avr
f42974dc 1774
b8df899a 1775ATMEL AVR-family micro controllers. These are used in embedded
ca52d046
GP
1776applications. There are no standard Unix configurations.
1777@ifnothtml
1778@xref{AVR Options,, AVR Options, gcc, Using and Porting the GNU Compiler
1779Collection (GCC)},
1780@end ifnothtml
98999d8b 1781@ifhtml
ca52d046 1782See ``AVR Options'' in the main manual
98999d8b 1783@end ifhtml
ca52d046 1784for the list of supported MCU types.
b8df899a 1785
161d7b59 1786Use @samp{configure --target=avr --enable-languages="c"} to configure GCC@.
f42974dc
DW
1787
1788Further installation notes and other useful information about AVR tools
1789can also be obtained from:
1790
1791@itemize @bullet
1792@item
1793@uref{http://home.overta.ru/users/denisc,,http://home.overta.ru/users/denisc}
1794@item
1795@uref{http://www.itnet.pl/amelektr/avr,,http://www.itnet.pl/amelektr/avr}
1796@end itemize
1797
20293b4c 1798We @emph{strongly} recommend using binutils 2.11 or newer.
f42974dc
DW
1799
1800The following error:
1801@example
1802 Error: register required
1803@end example
1804
1805indicates that you should upgrade to a newer version of the binutils.
1806
0132e321
MH
1807@html
1808</p>
1809<hr>
1810@end html
1811@heading @anchor{c4x}c4x
1812
1813Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital Signal
1814Processors. These are used in embedded applications. There are no
d8393f64
GP
1815standard Unix configurations.
1816@ifnothtml
1817@xref{TMS320C3x/C4x Options,, TMS320C3x/C4x Options, gcc, Using and
1818Porting the GNU Compiler Collection (GCC)},
1819@end ifnothtml
98999d8b 1820@ifhtml
d8393f64 1821See ``TMS320C3x/C4x Options'' in the main manual
98999d8b 1822@end ifhtml
d8393f64 1823for the list of supported MCU types.
0132e321
MH
1824
1825GCC can be configured as a cross compiler for both the C3x and C4x
1826architectures on the same system. Use @samp{configure --target=c4x
1827--enable-languages="c,c++"} to configure.
1828
1829
1830Further installation notes and other useful information about C4x tools
1831can also be obtained from:
1832
1833@itemize @bullet
1834@item
d8393f64 1835@uref{http://www.elec.canterbury.ac.nz/c4x/,,http://www.elec.canterbury.ac.nz/c4x/}
0132e321
MH
1836@end itemize
1837
0b85d816
HPN
1838@html
1839</p>
1840<hr>
1841@end html
1842@heading @anchor{cris}CRIS
1843
1844CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip
1845series. These are used in embedded applications.
1846
1847@ifnothtml
1848@xref{CRIS Options,, CRIS Options, gcc, Using and Porting the GNU Compiler
1849Collection (GCC)},
1850@end ifnothtml
1851@ifhtml
1852See ``CRIS Options'' in the main manual
1853@end ifhtml
1854for a list of CRIS-specific options.
1855
1856There are a few different CRIS targets:
1857@table @code
1858@item cris-axis-aout
1859Old target. Includes a multilib for the @samp{elinux} a.out-based
1860target. No multilibs for newer architecture variants.
1861@item cris-axis-elf
1862Mainly for monolithic embedded systems. Includes a multilib for the
1863@samp{v10} core used in @samp{ETRAX 100 LX}.
1864@item cris-axis-linux-gnu
1865A GNU/Linux port for the CRIS architecture, currently targeting
1866@samp{ETRAX 100 LX} by default.
1867@end table
1868
1869For @code{cris-axis-aout} and @code{cris-axis-elf} you need binutils 2.11
1870or newer. For @code{cris-axis-linux-gnu} you need binutils 2.12 or newer.
1871
1872Pre-packaged tools can be obtained from
1873@uref{ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/}. More
1874information about this platform is available at
1875@uref{http://developer.axis.com/}.
1876
f42974dc
DW
1877@html
1878</p>
1879<hr>
f42974dc 1880@end html
ef88b07d 1881@heading @anchor{dos}DOS
f42974dc
DW
1882
1883Please have a look at our @uref{binaries.html,,binaries page}.
1884
f0523f02 1885You cannot install GCC by itself on MSDOS; it will not compile under
f85b8d1a
JM
1886any MSDOS compiler except itself. You need to get the complete
1887compilation package DJGPP, which includes binaries as well as sources,
1888and includes all the necessary compilation tools and libraries.
1889
b8df899a
JM
1890@html
1891</p>
1892<hr>
1893@end html
1894@heading @anchor{dsp16xx}dsp16xx
1895A port to the AT&T DSP1610 family of processors.
1896
021c4bfd
RO
1897@html
1898</p>
1899<hr>
1900@end html
1901@heading @anchor{*-*-freebsd*}*-*-freebsd*
1902
1903The version of binutils installed in @file{/usr/bin} is known to work unless
1904otherwise specified in any per-architecture notes. However, binutils
19052.11 is known to improve overall testsuite results.
1906
1907For FreeBSD 1, FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All
1908configuration support and files as shipped with GCC 2.95 are still in
1909place. FreeBSD 2.2.7 has been known to bootstrap completely; however,
1910it is unknown which version of binutils was used (it is assumed that it
1911was the system copy in @file{/usr/bin}) and C++ EH failures were noted.
1912
1913For FreeBSD using the ELF file format: DWARF 2 debugging is now the
1914default for all CPU architectures. It had been the default on
1915FreeBSD/alpha since its inception. You may use @option{-gstabs} instead
1916of @option{-g}, if you really want the old debugging format. There are
1917no known issues with mixing object files and libraries with different
1918debugging formats. Otherwise, this release of GCC should now match more
1919of the configuration used in the stock FreeBSD configuration of GCC. In
1920particular, @option{--enable-threads} is now configured by default.
1921However, as a general user, do not attempt to replace the system
1922compiler with this release. Known to bootstrap and check with good
1923results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3 and 5-CURRENT@.
1924
1925At this time, @option{--enable-threads} is not compatible with
1926@option{--enable-libgcj} on FreeBSD@.
1927
b8df899a
JM
1928@html
1929</p>
1930<hr>
1931@end html
1932@heading @anchor{elxsi-elxsi-bsd}elxsi-elxsi-bsd
1933The Elxsi's C compiler has known limitations that prevent it from
f6df5bd2 1934compiling GCC@. Please contact @email{mrs@@wrs.com} for more details.
b8df899a 1935
f42974dc
DW
1936@html
1937</p>
1938<hr>
f42974dc 1939@end html
ef88b07d 1940@heading @anchor{h8300-hms}h8300-hms
b8df899a 1941Hitachi H8/300 series of processors.
f42974dc
DW
1942
1943Please have a look at our @uref{binaries.html,,binaries page}.
1944
b8df899a
JM
1945The calling convention and structure layout has changed in release 2.6.
1946All code must be recompiled. The calling convention now passes the
1947first three arguments in function calls in registers. Structures are no
1948longer a multiple of 2 bytes.
1949
f42974dc
DW
1950@html
1951</p>
1952<hr>
f42974dc 1953@end html
ef88b07d 1954@heading @anchor{hppa*-hp-hpux*}hppa*-hp-hpux*
f42974dc 1955
021c4bfd 1956We @emph{highly} recommend using gas/binutils 2.8 or newer on all hppa
f9047ed3 1957platforms; you may encounter a variety of problems when using the HP
f42974dc
DW
1958assembler.
1959
1960Specifically, @option{-g} does not work on HP-UX (since that system
1961uses a peculiar debugging format which GCC does not know about), unless you
38209993
LG
1962use GAS and GDB and configure GCC with the
1963@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and
6cfb3f16 1964@option{--with-as=@dots{}} options.
f42974dc
DW
1965
1966If you wish to use pa-risc 2.0 architecture support, you must use either
021c4bfd 1967the HP assembler, gas/binutils 2.11 or a recent
f42974dc
DW
1968@uref{ftp://sources.redhat.com/pub/binutils/snapshots,,snapshot of gas}.
1969
021c4bfd 1970More specific information to @samp{hppa*-hp-hpux*} targets follows.
f42974dc
DW
1971
1972@html
1973</p>
1974<hr>
f42974dc 1975@end html
ef88b07d 1976@heading @anchor{hppa*-hp-hpux9}hppa*-hp-hpux9
f42974dc
DW
1977
1978The HP assembler has major problems on this platform. We've tried to work
1979around the worst of the problems. However, those workarounds may be causing
1980linker crashes in some circumstances; the workarounds also probably prevent
1981shared libraries from working. Use the GNU assembler to avoid these problems.
1982
1983
1984The configuration scripts for GCC will also trigger a bug in the hpux9
38209993
LG
1985shell. To avoid this problem set @env{CONFIG_SHELL} to @file{/bin/ksh}
1986and @env{SHELL} to @file{/bin/ksh} in your environment.
f42974dc
DW
1987
1988
1989@html
1990</p>
1991<hr>
f42974dc 1992@end html
ef88b07d 1993@heading @anchor{hppa*-hp-hpux10}hppa*-hp-hpux10
f42974dc 1994
f9047ed3 1995For hpux10.20, we @emph{highly} recommend you pick up the latest sed patch
161d7b59 1996@code{PHCO_19798} from HP@. HP has two sites which provide patches free of
f42974dc
DW
1997charge:
1998
1999@itemize @bullet
2000@item
2001@html
2002<a href="http://us-support.external.hp.com">US, Canada, Asia-Pacific, and
2003Latin-America</a>
2004@end html
2005@ifnothtml
2006@uref{http://us-support.external.hp.com,,}US, Canada, Asia-Pacific, and
2007Latin-America
2008@end ifnothtml
2009@item
2010@uref{http://europe-support.external.hp.com,,Europe}
2011@end itemize
2012
2013The HP assembler on these systems is much better than the hpux9 assembler,
2014but still has some problems. Most notably the assembler inserts timestamps
2015into each object file it creates, causing the 3-stage comparison test to fail
f9047ed3
JM
2016during a @samp{make bootstrap}. You should be able to continue by
2017saying @samp{make all} after getting the failure from @samp{make
38209993 2018bootstrap}.
f42974dc
DW
2019
2020
2021@html
2022</p>
2023<hr>
f42974dc 2024@end html
ef88b07d 2025@heading @anchor{hppa*-hp-hpux11}hppa*-hp-hpux11
f42974dc 2026
25b5b465
MM
2027GCC 3.0 supports HP-UX 11. You must use GNU binutils 2.11 or above on
2028this platform.
f42974dc 2029
b8df899a
JM
2030@html
2031</p>
2032<hr>
2033@end html
2034@heading @anchor{i370-*-*}i370-*-*
2035This port is very preliminary and has many known bugs. We hope to
2036have a higher-quality port for this machine soon.
2037
f42974dc
DW
2038@html
2039</p>
2040<hr>
f42974dc 2041@end html
ef88b07d 2042@heading @anchor{*-*-linux-gnu}*-*-linux-gnu
f42974dc
DW
2043
2044If you use glibc 2.2 (or 2.1.9x), GCC 2.95.2 won't install
021c4bfd 2045out-of-the-box. You'll get compile errors while building @samp{libstdc++}.
f42974dc
DW
2046The patch @uref{glibc-2.2.patch,,glibc-2.2.patch}, that is to be
2047applied in the GCC source tree, fixes the compatibility problems.
2048
e15ed790
AJ
2049@html
2050</p>
2051@end html
2052
2053@html
2054<p>
2055@end html
2056
2057Currently Glibc 2.2.3 (and older releases) and GCC 3.0 are out of sync
161d7b59 2058since the latest exception handling changes for GCC@. Compiling glibc
e15ed790
AJ
2059with GCC 3.0 will give a binary incompatible glibc and therefore cause
2060lots of problems and might make your system completly unusable. This
161d7b59 2061will definitly need fixes in glibc but might also need fixes in GCC@. We
e15ed790
AJ
2062strongly advise to wait for glibc 2.2.4 and to read the release notes of
2063glibc 2.2.4 whether patches for GCC 3.0 are needed. You can use glibc
20642.2.3 with GCC 3.0, just do not try to recompile it.
2065
b8df899a
JM
2066@html
2067</p>
2068<hr>
2069@end html
2070@heading @anchor{ix86-*-linux*oldld}i?86-*-linux*oldld
2071Use this configuration to generate @file{a.out} binaries on Linux-based
2072GNU systems if you do not have gas/binutils version 2.5.2 or later
767094dd 2073installed. This is an obsolete configuration.
b8df899a
JM
2074
2075@html
2076</p>
2077<hr>
2078@end html
2079@heading @anchor{ix86-*-linux*aout}i?86-*-linux*aout
2080Use this configuration to generate @file{a.out} binaries on Linux-based
767094dd 2081GNU systems. This configuration is being superseded. You must use
b8df899a
JM
2082gas/binutils version 2.5.2 or later.
2083
f42974dc
DW
2084@html
2085</p>
2086<hr>
f42974dc 2087@end html
ef88b07d 2088@heading @anchor{ix86-*-linux*}i?86-*-linux*
f42974dc 2089
021c4bfd 2090You will need binutils 2.9.1.0.15 or newer for exception handling to work.
f42974dc
DW
2091
2092If you receive Signal 11 errors when building on GNU/Linux, then it is
2093possible you have a hardware problem. Further information on this can be
2094found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}.
2095
b8df899a
JM
2096@html
2097</p>
2098<hr>
2099@end html
2100@heading @anchor{ix86-*-sco}i?86-*-sco
2101Compilation with RCC is recommended. Also, it may be a good idea to
2102link with GNU malloc instead of the malloc that comes with the system.
2103
2104@html
2105</p>
2106<hr>
2107@end html
2108@heading @anchor{ix86-*-sco3.2v4}i?86-*-sco3.2v4
2109Use this configuration for SCO release 3.2 version 4.
2110
f42974dc
DW
2111@html
2112</p>
2113<hr>
f42974dc 2114@end html
ef88b07d 2115@heading @anchor{ix86-*-sco3.2v5*}i?86-*-sco3.2v5*
b8df899a 2116Use this for the SCO OpenServer Release 5 family of operating systems.
f42974dc
DW
2117
2118Unlike earlier versions of GCC, the ability to generate COFF with this
2119target is no longer provided.
2120
021c4bfd 2121Earlier versions of GCC emitted DWARF 1 when generating ELF to allow
f42974dc 2122the system debugger to be used. That support was too burdensome to
021c4bfd 2123maintain. GCC now emits only DWARF 2 for this target. This means you
f42974dc 2124may use either the UDK debugger or GDB to debug programs built by this
161d7b59 2125version of GCC@.
f42974dc 2126
021c4bfd 2127Use of the @option{-march=pentiumpro} flag can result in
f42974dc 2128unrecognized opcodes when using the native assembler on OS versions before
767094dd 21295.0.6. (Support for P6 opcodes was added to the native ELF assembler in
f9047ed3 2130that version.) While it's rather rare to see these emitted by GCC yet,
f42974dc
DW
2131errors of the basic form:
2132
2133@example
2134 /usr/tmp/ccaNlqBc.s:22:unknown instruction: fcomip
2135 /usr/tmp/ccaNlqBc.s:50:unknown instruction: fucomip
2136@end example
2137
2138are symptoms of this problem. You may work around this by not
2139building affected files with that flag, by using the GNU assembler, or
161d7b59 2140by using the assembler provided with the current version of the OS@.
f42974dc
DW
2141Users of GNU assembler should see the note below for hazards on doing
2142so.
2143
2144The native SCO assembler that is provided with the OS at no
2145charge is normally required. If, however, you must be able to use
2146the GNU assembler (perhaps you're compiling code with asms that
2147require GAS syntax) you may configure this package using the flags
38209993
LG
2148@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}}. You must
2149use a recent version of GNU binutils; versions past 2.9.1 seem to work
2150well.
f42974dc
DW
2151
2152In general, the @option{--with-gnu-as} option isn't as well tested
2153as the native assembler.
2154
6cfb3f16 2155Look in @file{gcc/config/i386/sco5.h} (search for ``messy'') for
f42974dc
DW
2156additional OpenServer-specific flags.
2157
38209993 2158Systems based on OpenServer before 5.0.4 (@samp{uname -X}
021c4bfd
RO
2159will tell you what you're running) require TLS597 from
2160@uref{ftp://ftp.sco.com/TLS/,,ftp://ftp.sco.com/TLS/}
f42974dc
DW
2161for C++ constructors and destructors to work right.
2162
2163The system linker in (at least) 5.0.4 and 5.0.5 will sometimes
2164do the wrong thing for a construct that GCC will emit for PIC
2165code. This can be seen as execution testsuite failures when using
6cfb3f16 2166@option{-fPIC} on @file{921215-1.c}, @file{931002-1.c}, @file{nestfunc-1.c}, and @file{gcov-1.c}.
f42974dc 2167For 5.0.5, an updated linker that will cure this problem is
f9047ed3 2168available. You must install both
38209993 2169@uref{ftp://ftp.sco.com/Supplements/rs505a/,,ftp://ftp.sco.com/Supplements/rs505a/}
f42974dc
DW
2170and @uref{ftp://ftp.sco.com/SLS/,,OSS499A}.
2171
2172The dynamic linker in OpenServer 5.0.5 (earlier versions may show
021c4bfd 2173the same problem) aborts on certain G77-compiled programs. It's particularly
f42974dc
DW
2174likely to be triggered by building Fortran code with the @option{-fPIC} flag.
2175Although it's conceivable that the error could be triggered by other
2176code, only G77-compiled code has been observed to cause this abort.
2177If you are getting core dumps immediately upon execution of your
021c4bfd
RO
2178G77 program---and especially if it's compiled with @option{-fPIC}---try applying
2179@uref{sco_osr5_g77.patch,,@file{sco_osr5_g77.patch}} to your @samp{libf2c} and
161d7b59 2180rebuilding GCC@.
f42974dc
DW
2181Affected faults, when analyzed in a debugger, will show a stack
2182backtrace with a fault occurring in @code{rtld()} and the program
f9047ed3 2183running as @file{/usr/lib/ld.so.1}. This problem has been reported to SCO
f42974dc
DW
2184engineering and will hopefully be addressed in later releases.
2185
2186
f42974dc
DW
2187@html
2188</p>
2189<hr>
f42974dc 2190@end html
ef88b07d 2191@heading @anchor{ix86-*-udk}i?86-*-udk
f42974dc
DW
2192
2193This target emulates the SCO Universal Development Kit and requires that
f9047ed3
JM
2194package be installed. (If it is installed, you will have a
2195@file{/udk/usr/ccs/bin/cc} file present.) It's very much like the
b953cc4b 2196@samp{i?86-*-unixware7*} target
f42974dc
DW
2197but is meant to be used when hosting on a system where UDK isn't the
2198default compiler such as OpenServer 5 or Unixware 2. This target will
f9047ed3 2199generate binaries that will run on OpenServer, Unixware 2, or Unixware 7,
161d7b59 2200with the same warnings and caveats as the SCO UDK@.
f42974dc 2201
f42974dc
DW
2202This target is a little tricky to build because we have to distinguish
2203it from the native tools (so it gets headers, startups, and libraries
f9047ed3 2204from the right place) while making the tools not think we're actually
f42974dc
DW
2205building a cross compiler. The easiest way to do this is with a configure
2206command like this:
2207
f9047ed3 2208@samp{CC=/udk/usr/ccs/bin/cc @var{/your/path/to}/gcc/configure
f42974dc
DW
2209--host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk-}
2210
6cfb3f16 2211@emph{You should substitute @samp{i686} in the above command with the appropriate
f42974dc
DW
2212processor for your host.}
2213
021c4bfd
RO
2214After the usual @samp{make bootstrap} and
2215@samp{make install}, you can then access the UDK-targeted GCC
38209993
LG
2216tools by adding @command{udk-} before the commonly known name. For
2217example, to invoke the C compiler, you would use @command{udk-gcc}.
2218They will coexist peacefully with any native-target GCC tools you may
2219have installed.
f42974dc
DW
2220
2221
b8df899a
JM
2222@html
2223</p>
2224<hr>
2225@end html
2226@heading @anchor{ix86-*-isc}i?86-*-isc
2227It may be a good idea to link with GNU malloc instead of the malloc that
2228comes with the system.
2229
6cfb3f16
JM
2230In ISC version 4.1, @command{sed} core dumps when building
2231@file{deduced.h}. Use the version of @command{sed} from version 4.0.
b8df899a
JM
2232
2233@html
2234</p>
2235<hr>
2236@end html
2237@heading @anchor{ix86-*-esix}i?86-*-esix
2238It may be good idea to link with GNU malloc instead of the malloc that
2239comes with the system.
2240
2241@html
2242</p>
2243<hr>
2244@end html
2245@heading @anchor{ix86-ibm-aix}i?86-ibm-aix
2246You need to use GAS version 2.1 or later, and LD from
2247GNU binutils version 2.2 or later.
2248
2249@html
2250</p>
2251<hr>
2252@end html
2253@heading @anchor{ix86-sequent-bsd}i?86-sequent-bsd
2254Go to the Berkeley universe before compiling.
2255
2256@html
2257</p>
2258<hr>
2259@end html
2260@heading @anchor{ix86-sequent-ptx1*}i?86-sequent-ptx1*, i?86-sequent-ptx2*
021c4bfd 2261You must install GNU @command{sed} before running @command{configure}.
b8df899a
JM
2262
2263@html
2264</p>
2265<hr>
2266@end html
2267@heading @anchor{#ix86-*-sysv3*}i?86-*-sysv3*
2268The @code{fixproto} shell script may trigger a bug in the system shell.
2269If you encounter this problem, upgrade your operating system or
021c4bfd 2270use @command{bash} (the GNU shell) to run @code{fixproto}.
b8df899a
JM
2271
2272
2273@html
2274</p>
2275<hr>
2276@end html
2277@heading @anchor{i860-intel-osf*}i860-intel-osf*
2278On the Intel Paragon (an i860 machine), if you are using operating
2279system version 1.0, you will get warnings or errors about redefinition
161d7b59 2280of @code{va_arg} when you build GCC@.
b8df899a
JM
2281
2282If this happens, then you need to link most programs with the library
2283@file{iclib.a}. You must also modify @file{stdio.h} as follows: before
2284the lines
2285
2286@example
2287#if defined(__i860__) && !defined(_VA_LIST)
2288#include <va_list.h>
2289@end example
2290
2291@noindent
2292insert the line
2293
2294@example
2295#if __PGC__
2296@end example
2297
2298@noindent
2299and after the lines
2300
2301@example
2302extern int vprintf(const char *, va_list );
2303extern int vsprintf(char *, const char *, va_list );
2304#endif
2305@end example
2306
2307@noindent
2308insert the line
2309
2310@example
2311#endif /* __PGC__ */
2312@end example
2313
2314These problems don't exist in operating system version 1.1.
2315
b499d9ab
JJ
2316@html
2317</p>
2318<hr>
2319@end html
2320@heading @anchor{ia64-*-linux}ia64-*-linux
2321IA-64 processor (also known as IPF, or Itanium Processor Family)
2322running GNU/Linux.
2323
2324The toolchain is not completely finished, so requirements will continue
2325to change.
2326GCC 3.0.1 and later require glibc 2.2.4.
2327GCC 3.0.2 requires binutils from 2001-09-05 or later.
2328GCC 3.0.1 requires binutils 2.11.1 or later.
2329
2330None of the following versions of GCC has an ABI that is compatible
2331with any of the other versions in this list, with the exception that
2332Red Hat 2.96 and Trillian 000171 are compatible with each other:
23333.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717.
2334This primarily affects C++ programs and programs that create shared libraries.
2335Because of these ABI incompatibilities, GCC 3.0.2 is not recommended for
2336user programs on GNU/Linux systems built using earlier compiler releases.
2337GCC 3.0.2 is recommended for compiling linux, the kernel.
2338GCC 3.0.2 is believed to be fully ABI compliant, and hence no more major
2339ABI changes are expected.
2340
b8df899a
JM
2341@html
2342</p>
2343<hr>
2344@end html
2345@heading @anchor{*-lynx-lynxos}*-lynx-lynxos
f0523f02 2346LynxOS 2.2 and earlier comes with GCC 1.x already installed as
b8df899a 2347@file{/bin/gcc}. You should compile with this instead of @file{/bin/cc}.
f0523f02 2348You can tell GCC to use the GNU assembler and linker, by specifying
b8df899a 2349@samp{--with-gnu-as --with-gnu-ld} when configuring. These will produce
f0523f02 2350COFF format object files and executables; otherwise GCC will use the
b8df899a
JM
2351installed tools, which produce @file{a.out} format executables.
2352
f42974dc
DW
2353@html
2354</p>
2355<hr>
f42974dc
DW
2356<!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
2357@end html
ef88b07d 2358@heading @anchor{*-ibm-aix*}*-ibm-aix*
f42974dc
DW
2359
2360AIX Make frequently has problems with GCC makefiles. GNU Make 3.76 or
2361newer is recommended to build on this platform.
2362
6cfb3f16 2363Errors involving @code{alloca} when building GCC generally are due
021c4bfd 2364to an incorrect definition of @code{CC} in the Makefile or mixing files
161d7b59 2365compiled with the native C compiler and GCC@. During the stage1 phase of
6cfb3f16
JM
2366the build, the native AIX compiler @strong{must} be invoked as @command{cc}
2367(not @command{xlc}). Once @command{configure} has been informed of
2368@command{xlc}, one needs to use @samp{make distclean} to remove the
38209993 2369configure cache files and ensure that @env{CC} environment variable
f42974dc
DW
2370does not provide a definition that will confuse @command{configure}.
2371If this error occurs during stage2 or later, then the problem most likely
2372is the version of Make (see above).
2373
df002c7d 2374Binutils 2.10 does not support AIX 4.3. Binutils available from the
38209993
LG
2375@uref{http://www-1.ibm.com/servers/aix/products/aixos/linux/,,AIX
2376Toolbox for Linux: GNU and Open Source tools for AIX};
df002c7d 2377website does work. Binutils 2.11 is expected to include AIX 4.3
021c4bfd
RO
2378support. The GNU Assembler is necessary for @samp{libstdc++} to build. The
2379AIX native @command{ld} still is recommended. The native AIX tools do
161d7b59 2380interoperate with GCC@.
df002c7d
DE
2381
2382Linking executables and shared libraries may produce warnings of
2383duplicate symbols. The assembly files generated by GCC for AIX always
2384have included multiple symbol definitions for certain global variable
2385and function declarations in the original program. The warnings should
2386not prevent the linker from producing a correct library or runnable
2387executable.
2388
d5d8d540
DE
2389GCC's exception handling implementation stores process-specific data in
2390the shared library which prevents exception handling from working
2391correctly on AIX in a default installation. To work around this, the
2392shared objects need to be loaded in the process private segment to
2393prevent them from being shared and marked read-only. This is
2394accomplished on AIX by installing the shared libraries
2395(@file{libgcc_s.a} and @file{libstdc++.a}) with file permissions
2396disallowing read-other (@samp{chmod a+x,o-r}). If the shared libraries
2397have been used, the shared library segment can be cleaned using the
2398@samp{/usr/sbin/slibclean} command.
2399
6cfb3f16 2400AIX 4.3 utilizes a ``large format'' archive to support both 32-bit and
df002c7d
DE
240164-bit object modules. The routines provided in AIX 4.3.0 and AIX 4.3.1
2402to parse archive libraries did not handle the new format correctly.
2403These routines are used by GCC and result in error messages during
6cfb3f16 2404linking such as ``not a COFF file''. The version of the routines shipped
df002c7d
DE
2405with AIX 4.3.1 should work for a 32-bit environment. The @option{-g}
2406option of the archive command may be used to create archives of 32-bit
6cfb3f16 2407objects using the original ``small format''. A correct version of the
d5d8d540 2408routines is shipped with AIX 4.3.2 and above.
df002c7d 2409
f42974dc
DW
2410Some versions of the AIX binder (linker) can fail with a relocation
2411overflow severe error when the @option{-bbigtoc} option is used to link
161d7b59 2412GCC-produced object files into an executable that overflows the TOC@. A fix
f42974dc
DW
2413for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
2414available from IBM Customer Support and from its
d5d8d540 2415@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
f42974dc
DW
2416website as PTF U455193.
2417
df002c7d 2418The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
161d7b59 2419with a segmentation fault when invoked by any version of GCC@. A fix for
df002c7d 2420APAR IX87327 is available from IBM Customer Support and from its
d5d8d540 2421@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
df002c7d 2422website as PTF U461879. This fix is incorporated in AIX 4.3.3 and above.
f42974dc
DW
2423
2424The initial assembler shipped with AIX 4.3.0 generates incorrect object
2425files. A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS
2426TO ASSEMBLE/BIND) is available from IBM Customer Support and from its
d5d8d540 2427@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
f42974dc
DW
2428website as PTF U453956. This fix is incorporated in AIX 4.3.1 and above.
2429
161d7b59 2430AIX provides National Language Support (NLS)@. Compilers and assemblers
df002c7d 2431use NLS to support locale-specific representations of various data
6cfb3f16 2432formats including floating-point numbers (e.g., @samp{.} vs @samp{,} for
df002c7d
DE
2433separating decimal fractions). There have been problems reported where
2434GCC does not produce the same floating-point formats that the assembler
c771326b 2435expects. If one encounters this problem, set the @env{LANG}
6cfb3f16 2436environment variable to @samp{C} or @samp{En_US}.
f42974dc 2437
5791e6da
DE
2438By default, GCC for AIX 4.1 and above produces code that can be used on
2439both Power or PowerPC processors.
2440
d5d8d540
DE
2441A default can be specified with the @option{-mcpu=@var{cpu_type}}
2442switch and using the configure option @option{--with-cpu-@var{cpu_type}}.
f42974dc 2443
b8df899a
JM
2444@html
2445</p>
2446<hr>
2447@end html
2448@heading @anchor{m32r-*-elf}m32r-*-elf
2449Mitsubishi M32R processor.
2450This configuration is intended for embedded systems.
2451
2452@html
2453</p>
2454<hr>
2455@end html
2456@heading @anchor{m68000-hp-bsd}m68000-hp-bsd
161d7b59 2457HP 9000 series 200 running BSD@. Note that the C compiler that comes
f0523f02
JM
2458with this system cannot compile GCC; contact @email{law@@cygnus.com}
2459to get binaries of GCC for bootstrapping.
b8df899a
JM
2460
2461@html
2462</p>
2463<hr>
2464@end html
2465@heading @anchor{m6811-elf}m6811-elf
2466Motorola 68HC11 family micro controllers. These are used in embedded
2467applications. There are no standard Unix configurations.
2468
2469@html
2470</p>
2471<hr>
2472@end html
2473@heading @anchor{m6812-elf}m6812-elf
2474Motorola 68HC12 family micro controllers. These are used in embedded
2475applications. There are no standard Unix configurations.
2476
2477@html
2478</p>
2479<hr>
2480@end html
2481@heading @anchor{m68k-altos}m68k-altos
2482Altos 3068. You must use the GNU assembler, linker and debugger.
021c4bfd 2483Also, you must fix a kernel bug.
b8df899a
JM
2484
2485@html
2486</p>
2487<hr>
2488@end html
2489@heading @anchor{m68k-apple-aux}m68k-apple-aux
161d7b59 2490Apple Macintosh running A/UX@.
b8df899a
JM
2491You may configure GCC to use either the system assembler and
2492linker or the GNU assembler and linker. You should use the GNU configuration
021c4bfd
RO
2493if you can, especially if you also want to use G++. You enable
2494that configuration with the @option{--with-gnu-as} and @option{--with-gnu-ld}
b8df899a
JM
2495options to @code{configure}.
2496
2497Note the C compiler that comes
161d7b59 2498with this system cannot compile GCC@. You can find binaries of GCC
b8df899a
JM
2499for bootstrapping on @code{jagubox.gsfc.nasa.gov}.
2500You will also a patched version of @file{/bin/ld} there that
2501raises some of the arbitrary limits found in the original.
2502
2503@html
2504</p>
2505<hr>
2506@end html
2507@heading @anchor{m68k-att-sysv}m68k-att-sysv
161d7b59 2508AT&T 3b1, a.k.a.@: 7300 PC@. This version of GCC cannot
b8df899a
JM
2509be compiled with the system C compiler, which is too buggy.
2510You will need to get a previous version of GCC and use it to
2511bootstrap. Binaries are available from the OSU-CIS archive, at
2512@uref{ftp://archive.cis.ohio-state.edu/pub/att7300/}.
2513
2514@html
2515</p>
2516<hr>
2517@end html
2518@heading @anchor{m68k-bull-sysv}m68k-bull-sysv
767094dd
JM
2519Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GCC works
2520either with native assembler or GNU assembler. You can use
021c4bfd
RO
2521GNU assembler with native COFF generation by providing @option{--with-gnu-as} to
2522the configure script or use GNU assembler with stabs-in-COFF encapsulation
2523by providing @samp{--with-gnu-as --stabs}. For any problem with the native
b8df899a
JM
2524assembler or for availability of the DPX/2 port of GAS, contact
2525@email{F.Pierresteguy@@frcl.bull.fr}.
2526
2527@html
2528</p>
2529<hr>
2530@end html
2531@heading @anchor{m68k-crds-unox}m68k-crds-unox
2532Use @samp{configure unos} for building on Unos.
2533
2534The Unos assembler is named @code{casm} instead of @code{as}. For some
2535strange reason linking @file{/bin/as} to @file{/bin/casm} changes the
f0523f02 2536behavior, and does not work. So, when installing GCC, you should
b8df899a
JM
2537install the following script as @file{as} in the subdirectory where
2538the passes of GCC are installed:
2539
2540@example
2541#!/bin/sh
2542casm $*
2543@end example
2544
2545The default Unos library is named @file{libunos.a} instead of
f0523f02 2546@file{libc.a}. To allow GCC to function, either change all
6cfb3f16 2547references to @option{-lc} in @file{gcc.c} to @option{-lunos} or link
b8df899a
JM
2548@file{/lib/libc.a} to @file{/lib/libunos.a}.
2549
2550@cindex @code{alloca}, for Unos
f0523f02 2551When compiling GCC with the standard compiler, to overcome bugs in
6cfb3f16
JM
2552the support of @code{alloca}, do not use @option{-O} when making stage 2.
2553Then use the stage 2 compiler with @option{-O} to make the stage 3
b8df899a
JM
2554compiler. This compiler will have the same characteristics as the usual
2555stage 2 compiler on other systems. Use it to make a stage 4 compiler
2556and compare that with stage 3 to verify proper compilation.
2557
2558(Perhaps simply defining @code{ALLOCA} in @file{x-crds} as described in
2559the comments there will make the above paragraph superfluous. Please
2560inform us of whether this works.)
2561
2562Unos uses memory segmentation instead of demand paging, so you will need
2563a lot of memory. 5 Mb is barely enough if no other tasks are running.
2564If linking @file{cc1} fails, try putting the object files into a library
2565and linking from that library.
2566
2567@html
2568</p>
2569<hr>
2570@end html
2571@heading @anchor{m68k-hp-hpux}m68k-hp-hpux
161d7b59
JM
2572HP 9000 series 300 or 400 running HP-UX@. HP-UX version 8.0 has a bug in
2573the assembler that prevents compilation of GCC@. This
b8df899a
JM
2574bug manifests itself during the first stage of compilation, while
2575building @file{libgcc2.a}:
2576
2577@smallexample
2578_floatdisf
2579cc1: warning: `-g' option not supported on this version of GCC
2580cc1: warning: `-g1' option not supported on this version of GCC
2581./xgcc: Internal compiler error: program as got fatal signal 11
2582@end smallexample
2583
2584A patched version of the assembler is available as the file
2585@uref{ftp://altdorf.ai.mit.edu/archive/cph/hpux-8.0-assembler}. If you
2586have HP software support, the patch can also be obtained directly from
2587HP, as described in the following note:
2588
2589@quotation
2590This is the patched assembler, to patch SR#1653-010439, where the
2591assembler aborts on floating point constants.
2592
2593The bug is not really in the assembler, but in the shared library
2594version of the function ``cvtnum(3c)''. The bug on ``cvtnum(3c)'' is
2595SR#4701-078451. Anyway, the attached assembler uses the archive
2596library version of ``cvtnum(3c)'' and thus does not exhibit the bug.
2597@end quotation
2598
2599This patch is also known as PHCO_4484.
2600
021c4bfd 2601In addition, if you wish to use gas, you must use
b8df899a
JM
2602gas version 2.1 or later, and you must use the GNU linker version 2.1 or
2603later. Earlier versions of gas relied upon a program which converted the
2604gas output into the native HP-UX format, but that program has not been
2605kept up to date. gdb does not understand that native HP-UX format, so
2606you must use gas if you wish to use gdb.
2607
2608On HP-UX version 8.05, but not on 8.07 or more recent versions, the
2609@code{fixproto} shell script triggers a bug in the system shell. If you
2610encounter this problem, upgrade your operating system or use BASH (the
2611GNU shell) to run @code{fixproto}. This bug will cause the fixproto
2612program to report an error of the form:
2613
2614@example
2615./fixproto: sh internal 1K buffer overflow
2616@end example
2617
2618To fix this, you can also change the first line of the fixproto script
2619to look like:
2620
2621@example
2622#!/bin/ksh
2623@end example
2624
2625
f42974dc
DW
2626@html
2627</p>
2628<hr>
f42974dc 2629@end html
ef88b07d 2630@heading @anchor{m68k-*-nextstep*}m68k-*-nextstep*
f42974dc 2631
b8df899a
JM
2632Current GCC versions probably do not work on version 2 of the NeXT
2633operating system.
2634
2147b154 2635On NeXTStep 3.0, the Objective-C compiler does not work, due,
b8df899a
JM
2636apparently, to a kernel bug that it happens to trigger. This problem
2637does not happen on 3.1.
2638
f42974dc
DW
2639You absolutely @strong{must} use GNU sed and GNU make on this platform.
2640
2641
eea81d3e 2642On NeXTSTEP 3.x where x < 3 the build of GCC will abort during
f42974dc
DW
2643stage1 with an error message like this:
2644
2645@example
2646 _eh
2647 /usr/tmp/ccbbsZ0U.s:987:Unknown pseudo-op: .section
2648 /usr/tmp/ccbbsZ0U.s:987:Rest of line ignored. 1st junk character
2649 valued 95 (_).
2650@end example
2651
f9047ed3 2652The reason for this is the fact that NeXT's assembler for these
6cfb3f16 2653versions of the operating system does not support the @samp{.section}
f42974dc
DW
2654pseudo op that's needed for full C++ exception functionality.
2655
f9047ed3
JM
2656As NeXT's assembler is a derived work from GNU as, a free
2657replacement that does can be obtained at
f42974dc
DW
2658@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}.
2659
2660If you try to build the integrated C++ & C++ runtime libraries on this system
2661you will run into trouble with include files. The way to get around this is
2662to use the following sequence. Note you must have write permission to
38209993 2663the directory @var{prefix} you specified in the configuration process of GCC
f42974dc
DW
2664for this sequence to work.
2665
2666@example
2667 cd bld-gcc
2668 make all-texinfo all-bison all-byacc all-binutils all-gas all-ld
2669 cd gcc
2670 make bootstrap
2671 make install-headers-tar
2672 cd ..
2673 make bootstrap3
2674@end example
2675
b8df899a
JM
2676@html
2677</p>
2678<hr>
2679@end html
2680@heading @anchor{m68k-ncr-*}m68k-ncr-*
2681On the Tower models 4@var{n}0 and 6@var{n}0, by default a process is not
2682allowed to have more than one megabyte of memory. GCC cannot compile
6cfb3f16 2683itself (or many other programs) with @option{-O} in that much memory.
b8df899a
JM
2684
2685To solve this problem, reconfigure the kernel adding the following line
2686to the configuration file:
2687
2688@smallexample
2689MAXUMEM = 4096
2690@end smallexample
2691
2692
2693@html
2694</p>
2695<hr>
2696@end html
2697@heading @anchor{m68k-sun}m68k-sun
2698Sun 3. We do not provide a configuration file to use the Sun FPA by
2699default, because programs that establish signal handlers for floating
161d7b59 2700point traps inherently cannot work with the FPA@.
f42974dc
DW
2701
2702@html
2703</p>
2704<hr>
f42974dc 2705@end html
ef88b07d 2706@heading @anchor{m68k-sun-sunos4.1.1}m68k-sun-sunos4.1.1
f42974dc
DW
2707
2708It is reported that you may need the GNU assembler on this platform.
2709
2710
b8df899a
JM
2711@html
2712</p>
2713<hr>
2714@end html
2715@heading @anchor{m88k-*-svr3}m88k-*-svr3
2716Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference port.
2717These systems tend to use the Green Hills C, revision 1.8.5, as the
2718standard C compiler. There are apparently bugs in this compiler that
2719result in object files differences between stage 2 and stage 3. If this
2720happens, make the stage 4 compiler and compare it to the stage 3
2721compiler. If the stage 3 and stage 4 object files are identical, this
2722suggests you encountered a problem with the standard C compiler; the
2723stage 3 and 4 compilers may be usable.
2724
f0523f02 2725It is best, however, to use an older version of GCC for bootstrapping
b8df899a
JM
2726if you have one.
2727
2728@html
2729</p>
2730<hr>
2731@end html
2732@heading @anchor{m88k-*-dgux}m88k-*-dgux
161d7b59 2733Motorola m88k running DG/UX@. To build 88open BCS native or cross
b8df899a
JM
2734compilers on DG/UX, specify the configuration name as
2735@samp{m88k-*-dguxbcs} and build in the 88open BCS software development
2736environment. To build ELF native or cross compilers on DG/UX, specify
2737@samp{m88k-*-dgux} and build in the DG/UX ELF development environment.
2738You set the software development environment by issuing
2739@samp{sde-target} command and specifying either @samp{m88kbcs} or
2740@samp{m88kdguxelf} as the operand.
2741
2742If you do not specify a configuration name, @file{configure} guesses the
2743configuration based on the current software development environment.
2744
2745@html
2746</p>
2747<hr>
2748@end html
2749@heading @anchor{m88k-tektronix-sysv3}m88k-tektronix-sysv3
2750Tektronix XD88 running UTekV 3.2e. Do not turn on
2751optimization while building stage1 if you bootstrap with
021c4bfd 2752the buggy Green Hills compiler. Also, the bundled LAI
b8df899a
JM
2753System V NFS is buggy so if you build in an NFS mounted
2754directory, start from a fresh reboot, or avoid NFS all together.
2755Otherwise you may have trouble getting clean comparisons
2756between stages.
2757
2758@html
2759</p>
2760<hr>
2761@end html
2762@heading @anchor{mips-*-*}mips-*-*
2763If you use the 1.31 version of the MIPS assembler (such as was shipped
6cfb3f16 2764with Ultrix 3.1), you will need to use the @option{-fno-delayed-branch} switch
b8df899a
JM
2765when optimizing floating point code. Otherwise, the assembler will
2766complain when the GCC compiler fills a branch delay slot with a
2767floating point instruction, such as @code{add.d}.
2768
2769If on a MIPS system you get an error message saying ``does not have gp
2770sections for all it's [sic] sectons [sic]'', don't worry about it. This
2771happens whenever you use GAS with the MIPS linker, but there is not
2772really anything wrong, and it is okay to use the output file. You can
2773stop such warnings by installing the GNU linker.
2774
2775It would be nice to extend GAS to produce the gp tables, but they are
2776optional, and there should not be a warning about their absence.
2777
2778Users have reported some problems with version 2.0 of the MIPS
2779compiler tools that were shipped with Ultrix 4.1. Version 2.10
2780which came with Ultrix 4.2 seems to work fine.
2781
2782Users have also reported some problems with version 2.20 of the
2783MIPS compiler tools that were shipped with RISC/os 4.x. The earlier
2784version 2.11 seems to work fine.
2785
2786Some versions of the MIPS linker will issue an assertion failure
2787when linking code that uses @code{alloca} against shared
2788libraries on RISC-OS 5.0, and DEC's OSF/1 systems. This is a bug
2789in the linker, that is supposed to be fixed in future revisions.
6cfb3f16
JM
2790To protect against this, GCC passes @option{-non_shared} to the
2791linker unless you pass an explicit @option{-shared} or
2792@option{-call_shared} switch.
b8df899a
JM
2793
2794@heading @anchor{mips-mips-bsd}mips-mips-bsd
2795MIPS machines running the MIPS operating system in BSD mode. It's
2796possible that some old versions of the system lack the functions
2797@code{memcpy}, @code{memmove}, @code{memcmp}, and @code{memset}. If your
2798system lacks these, you must remove or undo the definition of
2799@code{TARGET_MEM_FUNCTIONS} in @file{mips-bsd.h}.
2800
021c4bfd
RO
2801If you use the MIPS C compiler to bootstrap, it may be necessary
2802to increase its table size for switch statements with the
2803@option{-Wf,-XNg1500} option. If you use the @option{-O2}
2804optimization option, you also need to use @option{-Olimit 3000}.
2805Both of these options are automatically generated in the
2806@file{Makefile} that the shell script @file{configure} builds.
2807If you override the @code{CC} make variable and use the MIPS
2808compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}.
2809
2810@html
2811</p>
2812<hr>
2813@end html
2814@heading @anchor{mips-dec-*}mips-dec-*
2815MIPS-based DECstations can support three different personalities:
2816Ultrix, DEC OSF/1, and OSF/rose. (Alpha-based DECstation products have
2817a configuration name beginning with @samp{alpha*-dec}.) To configure GCC
2818for these platforms use the following configurations:
2819
2820@table @samp
2821@item mips-dec-ultrix
2822Ultrix configuration.
2823
2824@item mips-dec-osf1
2825DEC's version of OSF/1.
2826
2827@item mips-dec-osfrose
2828Open Software Foundation reference port of OSF/1 which uses the
2829OSF/rose object file format instead of ECOFF@. Normally, you
2830would not select this configuration.
2831@end table
2832
2833If you use the MIPS C compiler to bootstrap, it may be necessary
2834to increase its table size for switch statements with the
2835@option{-Wf,-XNg1500} option. If you use the @option{-O2}
6cfb3f16 2836optimization option, you also need to use @option{-Olimit 3000}.
b8df899a
JM
2837Both of these options are automatically generated in the
2838@file{Makefile} that the shell script @file{configure} builds.
2839If you override the @code{CC} make variable and use the MIPS
6cfb3f16 2840compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}.
b8df899a
JM
2841
2842@html
2843</p>
2844<hr>
2845@end html
2846@heading @anchor{mips-mips-riscos*}mips-mips-riscos*
021c4bfd
RO
2847If you use the MIPS C compiler to bootstrap, it may be necessary
2848to increase its table size for switch statements with the
2849@option{-Wf,-XNg1500} option. If you use the @option{-O2}
6cfb3f16 2850optimization option, you also need to use @option{-Olimit 3000}.
b8df899a
JM
2851Both of these options are automatically generated in the
2852@file{Makefile} that the shell script @file{configure} builds.
2853If you override the @code{CC} make variable and use the MIPS
2854compilers, you may need to add @samp{-Wf,-XNg1500 -Olimit 3000}.
2855
2856MIPS computers running RISC-OS can support four different
2857personalities: default, BSD 4.3, System V.3, and System V.4
2858(older versions of RISC-OS don't support V.4). To configure GCC
2859for these platforms use the following configurations:
2860
2861@table @samp
021c4bfd
RO
2862@item mips-mips-riscos@var{rev}
2863Default configuration for RISC-OS, revision @var{rev}.
b8df899a 2864
021c4bfd
RO
2865@item mips-mips-riscos@var{rev}bsd
2866BSD 4.3 configuration for RISC-OS, revision @var{rev}.
b8df899a 2867
021c4bfd
RO
2868@item mips-mips-riscos@var{rev}sysv4
2869System V.4 configuration for RISC-OS, revision @var{rev}.
b8df899a
JM
2870
2871@html
2872</p>
2873<hr>
2874@end html
021c4bfd
RO
2875@item mips-mips-riscos@var{rev}sysv
2876System V.3 configuration for RISC-OS, revision @var{rev}.
b8df899a
JM
2877@end table
2878
2879The revision @code{rev} mentioned above is the revision of
2880RISC-OS to use. You must reconfigure GCC when going from a
2881RISC-OS revision 4 to RISC-OS revision 5. This has the effect of
2882avoiding a linker bug.
2883
f42974dc
DW
2884@html
2885</p>
2886<hr>
f42974dc 2887@end html
b953cc4b 2888@heading @anchor{mips-sgi-irix4}mips-sgi-irix4
f42974dc 2889
6cfb3f16 2890In order to compile GCC on an SGI running IRIX 4, the ``c.hdr.lib''
b8df899a
JM
2891option must be installed from the CD-ROM supplied from Silicon Graphics.
2892This is found on the 2nd CD in release 4.0.1.
2893
213ba345 2894On IRIX version 4.0.5F, and perhaps on some other versions as well,
b8df899a
JM
2895there is an assembler bug that reorders instructions incorrectly. To
2896work around it, specify the target configuration
2897@samp{mips-sgi-irix4loser}. This configuration inhibits assembler
2898optimization.
2899
2900In a compiler configured with target @samp{mips-sgi-irix4}, you can turn
6cfb3f16
JM
2901off assembler optimization by using the @option{-noasmopt} option. This
2902compiler option passes the option @option{-O0} to the assembler, to
b8df899a
JM
2903inhibit reordering.
2904
6cfb3f16 2905The @option{-noasmopt} option can be useful for testing whether a problem
b8df899a 2906is due to erroneous assembler reordering. Even if a problem does not go
6cfb3f16 2907away with @option{-noasmopt}, it may still be due to assembler
f0523f02 2908reordering---perhaps GCC itself was miscompiled as a result.
b8df899a 2909
213ba345
RO
2910You may get the following warning on IRIX 4 platforms, it can be safely
2911ignored.
2912@example
2913 warning: foo.o does not have gp tables for all its sections.
2914@end example
b8df899a 2915
213ba345
RO
2916@html
2917</p>
2918<hr>
2919@end html
b953cc4b
RO
2920@heading @anchor{mips-sgi-irix5}mips-sgi-irix5
2921
2922This configuration has considerable problems, which will be fixed in a
2923future release.
f42974dc 2924
213ba345
RO
2925In order to compile GCC on an SGI running IRIX 5, the ``compiler_dev.hdr''
2926subsystem must be installed from the IDO CD-ROM supplied by Silicon
2927Graphics. It is also available for download from
2928@uref{http://www.sgi.com/developers/devtools/apis/ido.html,,http://www.sgi.com/developers/devtools/apis/ido.html}.
f42974dc 2929
213ba345
RO
2930@code{make compare} may fail on version 5 of IRIX unless you add
2931@option{-save-temps} to @code{CFLAGS}. On these systems, the name of the
2932assembler input file is stored in the object file, and that makes
2933comparison fail if it differs between the @code{stage1} and
2934@code{stage2} compilations. The option @option{-save-temps} forces a
2935fixed name to be used for the assembler input file, instead of a
2936randomly chosen name in @file{/tmp}. Do not add @option{-save-temps}
2937unless the comparisons fail without that option. If you do you
2938@option{-save-temps}, you will have to manually delete the @samp{.i} and
2939@samp{.s} files after each series of compilations.
f42974dc 2940
213ba345
RO
2941If you use the MIPS C compiler to bootstrap, it may be necessary
2942to increase its table size for switch statements with the
2943@option{-Wf,-XNg1500} option. If you use the @option{-O2}
2944optimization option, you also need to use @option{-Olimit 3000}.
f42974dc 2945
b953cc4b
RO
2946To enable debugging under IRIX 5, you must use GNU @command{as} 2.11.2
2947or later,
213ba345
RO
2948and use the @option{--with-gnu-as} configure option when configuring GCC.
2949GNU @command{as} is distributed as part of the binutils package.
b953cc4b
RO
2950When using release 2.11.2, you need to apply a patch
2951@uref{http://sources.redhat.com/ml/binutils/2001-07/msg00352.html,,http://sources.redhat.com/ml/binutils/2001-07/msg00352.html}
2952which will be included in the next release of binutils.
f42974dc 2953
213ba345
RO
2954When building GCC, the build process loops rebuilding @command{cc1} over
2955and over again. This happens on @samp{mips-sgi-irix5.2}, and possibly
2956other platforms. It has been reported that this is a known bug in the
2957@command{make} shipped with IRIX 5.2. We recommend you use GNU
2958@command{make} instead of the vendor supplied @command{make} program;
2959however, you may have success with @command{smake} on IRIX 5.2 if you do
2960not have GNU @command{make} available.
f42974dc
DW
2961
2962@html
2963</p>
2964<hr>
f42974dc 2965@end html
b953cc4b 2966@heading @anchor{mips-sgi-irix6}mips-sgi-irix6
f42974dc 2967
213ba345 2968If you are using IRIX @command{cc} as your bootstrap compiler, you must
f42974dc
DW
2969ensure that the N32 ABI is in use. To test this, compile a simple C
2970file with @command{cc} and then run @command{file} on the
2971resulting object file. The output should look like:
2972
2973@example
213ba345 2974test.o: ELF N32 MSB @dots{}
f42974dc
DW
2975@end example
2976
2977If you see:
213ba345
RO
2978
2979@example
2980test.o: ELF 32-bit MSB @dots{}
2981@end example
2982
2983or
2984
f42974dc 2985@example
213ba345 2986test.o: ELF 64-bit MSB @dots{}
f42974dc
DW
2987@end example
2988
213ba345 2989then your version of @command{cc} uses the O32 or N64 ABI by default. You
38209993 2990should set the environment variable @env{CC} to @samp{cc -n32}
161d7b59 2991before configuring GCC@.
f42974dc 2992
213ba345
RO
2993GCC on IRIX 6 is usually built to support both the N32 and N64 ABIs. If
2994you build GCC on a system that doesn't have the N64 libraries installed,
2995you need to configure with @option{--disable-multilib} so GCC doesn't
2996try to use them. Look for @file{/usr/lib64/libc.so.1} to see if you
2997have the 64-bit libraries installed.
2998
2999You must @emph{not} use GNU @command{as} (which isn't built anyway as of
3000binutils 2.11.2) on IRIX 6 platforms; doing so will only cause problems.
3001
f42974dc 3002GCC does not currently support generating O32 ABI binaries in the
b953cc4b 3003@samp{mips-sgi-irix6} configurations. It is possible to create a GCC
213ba345 3004with O32 ABI only support by configuring it for the @samp{mips-sgi-irix5}
b953cc4b
RO
3005target and using a patched GNU @command{as} 2.11.2 as documented in the
3006@uref{#mips-sgi-irix5,,@samp{mips-sgi-irix5}} section above. Using the
3007native assembler requires patches to GCC which will be included in a
3008future release. It is
213ba345 3009expected that O32 ABI support will be available again in a future release.
f42974dc 3010
b953cc4b
RO
3011The @option{--enable-threads} option doesn't currently work, a patch is
3012in preparation for a future release. The @option{--enable-libgcj}
3013option is disabled by default: IRIX 6 uses a very low default limit
3014(20480) for the command line length. Although libtool contains a
3015workaround for this problem, at least the N64 @samp{libgcj} is known not
3016to build despite this, running into an internal error of the native
3017@command{ld}. A sure fix is to increase this limit (@samp{ncargs}) to
3018its maximum of 262144 bytes. If you have root access, you can use the
3019@command{systune} command to do this.
3020
f42974dc 3021GCC does not correctly pass/return structures which are
767094dd
JM
3022smaller than 16 bytes and which are not 8 bytes. The problem is very
3023involved and difficult to fix. It affects a number of other targets also,
f42974dc 3024but IRIX 6 is affected the most, because it is a 64 bit target, and 4 byte
767094dd 3025structures are common. The exact problem is that structures are being padded
e979f9e8 3026at the wrong end, e.g.@: a 4 byte structure is loaded into the lower 4 bytes
f42974dc
DW
3027of the register when it should be loaded into the upper 4 bytes of the
3028register.
3029
3030GCC is consistent with itself, but not consistent with the SGI C compiler
3031(and the SGI supplied runtime libraries), so the only failures that can
3032happen are when there are library functions that take/return such
213ba345
RO
3033structures. There are very few such library functions. Currently this
3034is known to affect @code{inet_ntoa}, @code{inet_lnaof},
46d2e8d7
RO
3035@code{inet_netof}, @code{inet_makeaddr}, and @code{semctl}. Until the
3036bug is fixed, GCC contains workarounds for the known affected functions.
f42974dc 3037
3aa8219e
GP
3038See @uref{http://freeware.sgi.com/,,http://freeware.sgi.com/} for more
3039information about using GCC on IRIX platforms.
f42974dc 3040
b8df899a
JM
3041@html
3042</p>
3043<hr>
3044@end html
3045@heading @anchor{mips-sony-sysv}mips-sony-sysv
161d7b59
JM
3046Sony MIPS NEWS@. This works in NEWSOS 5.0.1, but not in 5.0.2 (which
3047uses ELF instead of COFF)@. Support for 5.0.2 will probably be provided
b8df899a
JM
3048soon by volunteers. In particular, the linker does not like the
3049code generated by GCC when shared libraries are linked in.
3050
3051
3052@html
3053</p>
3054<hr>
3055@end html
3056@heading @anchor{ns32k-encore}ns32k-encore
161d7b59 3057Encore ns32000 system. Encore systems are supported only under BSD@.
b8df899a
JM
3058
3059@html
3060</p>
3061<hr>
3062@end html
3063@heading @anchor{ns32k-*-genix}ns32k-*-genix
3064National Semiconductor ns32000 system. Genix has bugs in @code{alloca}
3065and @code{malloc}; you must get the compiled versions of these from GNU
3066Emacs.
3067
3068@html
3069</p>
3070<hr>
3071@end html
3072@heading @anchor{ns32k-sequent}ns32k-sequent
3073Go to the Berkeley universe before compiling.
3074
3075@html
3076</p>
3077<hr>
3078@end html
3079@heading @anchor{ns32k-utek}ns32k-utek
3080UTEK ns32000 system (``merlin''). The C compiler that comes with this
f0523f02
JM
3081system cannot compile GCC; contact @samp{tektronix!reed!mason} to get
3082binaries of GCC for bootstrapping.
b8df899a
JM
3083
3084
b8df899a
JM
3085@html
3086</p>
3087<hr>
3088@end html
021c4bfd 3089@heading @anchor{powerpc*-*-*}powerpc-*-*
b8df899a 3090
6cfb3f16
JM
3091You can specify a default version for the @option{-mcpu=@var{cpu_type}}
3092switch by using the configure option @option{--with-cpu-@var{cpu_type}}.
b8df899a 3093
4f2b1139
SS
3094@html
3095</p>
3096<hr>
3097@end html
3098@heading @anchor{powerpc-*-darwin*}powerpc-*-darwin*
3099PowerPC running Darwin (Mac OS X kernel).
3100
3101GCC 3.0 does not support Darwin, but 3.1 and later releases will work.
3102
3103Pre-installed versions of Mac OS X may not include any developer tools,
3104meaning that you will not be able to build GCC from source. Tool
3105binaries are available at
3106@uref{http://www.opensource.apple.com/projects/darwin} (free
3107registration required).
3108
3109Versions of the assembler prior to ``cctools-364'' cannot handle the
31104-argument form of rlwinm and related mask-using instructions. Darwin
31111.3 (Mac OS X 10.0) uses cctools-353 for instance. To get cctools-364,
3112check out @file{cctools} with tag @samp{Apple-364}, build it, and
3113install the assembler as @file{usr/bin/as}. See
3114@uref{http://www.opensource.apple.com/tools/cvs/docs.html} for details.
3115
3116Also, the default stack limit of 512K is too small, and a bootstrap will
3117typically fail when self-compiling @file{expr.c}. Set the stack to 800K
3118or more, for instance by doing @samp{limit stack 800}. It's also
3119convenient to use the GNU preprocessor instead of Apple's during the
3120first stage of bootstrapping; this is automatic when doing @samp{make
3121bootstrap}, but to do it from the toplevel objdir you will need to say
3122@samp{make CC='cc -no-cpp-precomp' bootstrap}.
3123
3124Note that the version of GCC shipped by Apple typically includes a
3125number of extensions not available in a standard GCC release. These
3126extensions are generally specific to Mac programming.
3127
021c4bfd
RO
3128@html
3129</p>
3130<hr>
3131@end html
3132@heading @anchor{powerpc-*-elf}powerpc-*-elf, powerpc-*-sysv4
3133PowerPC system in big endian mode, running System V.4.
3134
f42974dc
DW
3135@html
3136</p>
3137<hr>
f42974dc 3138@end html
ef88b07d 3139@heading @anchor{powerpc-*-linux-gnu*}powerpc-*-linux-gnu*
f42974dc 3140
f9047ed3 3141You will need
021c4bfd 3142@uref{ftp://ftp.varesearch.com/pub/support/hjl/binutils,,binutils 2.9.4.0.8}
161d7b59 3143or newer for a working GCC@. It is strongly recommended to recompile binutils
f42974dc
DW
3144if you initially built it with gcc-2.7.2.x.
3145
edf1b3f3
AC
3146@html
3147</p>
3148<hr>
3149@end html
3150@heading @anchor{powerpc-*-netbsd*}powerpc-*-netbsd*
3151PowerPC system in big endian mode running NetBSD@. To build the
3152documentation you will need Texinfo version 4.0 (NetBSD 1.5.1 included
3153Texinfo version 3.12).
3154
b8df899a
JM
3155@html
3156</p>
3157<hr>
3158@end html
3159@heading @anchor{powerpc-*-eabiaix}powerpc-*-eabiaix
6cfb3f16 3160Embedded PowerPC system in big endian mode with @option{-mcall-aix} selected as
b8df899a
JM
3161the default.
3162
b8df899a
JM
3163@html
3164</p>
3165<hr>
3166@end html
3167@heading @anchor{powerpc-*-eabisim}powerpc-*-eabisim
3168Embedded PowerPC system in big endian mode for use in running under the
3169PSIM simulator.
3170
b8df899a
JM
3171@html
3172</p>
3173<hr>
3174@end html
3175@heading @anchor{powerpc-*-eabi}powerpc-*-eabi
3176Embedded PowerPC system in big endian mode.
3177
b8df899a
JM
3178@html
3179</p>
3180<hr>
3181@end html
3182@heading @anchor{powerpcle-*-elf}powerpcle-*-elf, powerpcle-*-sysv4
3183PowerPC system in little endian mode, running System V.4.
3184
b8df899a
JM
3185@html
3186</p>
3187<hr>
3188@end html
3189@heading @anchor{powerpcle-*-eabisim}powerpcle-*-eabisim
3190Embedded PowerPC system in little endian mode for use in running under
3191the PSIM simulator.
3192
3193@html
3194</p>
3195<hr>
3196@end html
3197@heading @anchor{powerpcle-*-eabi}powerpcle-*-eabi
3198Embedded PowerPC system in little endian mode.
3199
b8df899a
JM
3200@html
3201</p>
3202<hr>
3203@end html
3204@heading @anchor{powerpcle-*-winnt}powerpcle-*-winnt, powerpcle-*-pe
161d7b59 3205PowerPC system in little endian mode running Windows NT@.
b8df899a 3206
b8df899a
JM
3207@html
3208</p>
3209<hr>
3210@end html
3211@heading @anchor{romp-*-aos}romp-*-aos, romp-*-mach
3212The only operating systems supported for the IBM RT PC are AOS and
161d7b59 3213MACH@. GCC does not support AIX running on the RT@. We recommend you
f0523f02 3214compile GCC with an earlier version of itself; if you compile GCC
021c4bfd 3215with @command{hc}, the Metaware compiler, it will work, but you will get
b8df899a
JM
3216mismatches between the stage 2 and stage 3 compilers in various files.
3217These errors are minor differences in some floating-point constants and
3218can be safely ignored; the stage 3 compiler is correct.
f42974dc 3219
91abf72d
HP
3220@html
3221</p>
3222<hr>
3223@end html
3224@heading @anchor{s390-*-linux*}s390-*-linux*
3225S/390 system running Linux for S/390@.
3226
3227@html
3228</p>
3229<hr>
3230@end html
3231@heading @anchor{s390x-*-linux*}s390x-*-linux*
3232zSeries system (64 Bit) running Linux for zSeries@.
3233
f42974dc
DW
3234@html
3235</p>
3236<hr>
f42974dc 3237@end html
250d5688
RO
3238@c Please use Solaris 2 to refer to all release of Solaris, starting
3239@c with 2.0 until 2.6, 7, and 8. Solaris 1 was a marketing name for
3240@c SunOS 4 releases which we don't use to avoid confusion. Solaris
3241@c alone is too unspecific and must be avoided.
3242@heading @anchor{*-*-solaris2*}*-*-solaris2*
f42974dc 3243
250d5688 3244Sun does not ship a C compiler with Solaris 2. To bootstrap and install
dbd210ef
KC
3245GCC you first have to install a pre-built compiler, see our
3246@uref{binaries.html,,binaries page} for details.
f42974dc 3247
250d5688
RO
3248The Solaris 2 @command{/bin/sh} will often fail to configure
3249@file{libstdc++-v3}, @file{boehm-gc} or
021c4bfd 3250@file{libjava}. If you encounter this problem, set @env{CONFIG_SHELL} to
250d5688 3251@command{/bin/ksh} in your environment and run @command{make bootstrap} again.
37324a54 3252Another possibility that sometimes helps is to remove
250d5688 3253@file{*-*-solaris2*/config.cache}.
e6855a2d 3254
b8df899a 3255Solaris 2 comes with a number of optional OS packages. Some of these
dbd210ef
KC
3256packages are needed to use GCC fully, namely @code{SUNWarc},
3257@code{SUNWbtool}, @code{SUNWesu}, @code{SUNWhea}, @code{SUNWlibm},
3258@code{SUNWsprot}, and @code{SUNWtoo}. If you did not install all
250d5688 3259optional packages when installing Solaris 2, you will need to verify that
b8df899a
JM
3260the packages that GCC needs are installed.
3261
3262To check whether an optional package is installed, use
dbd210ef 3263the @command{pkginfo} command. To add an optional package, use the
250d5688 3264@command{pkgadd} command. For further details, see the Solaris 2
b8df899a
JM
3265documentation.
3266
250d5688 3267Trying to use the linker and other tools in
b8df899a
JM
3268@file{/usr/ucb} to install GCC has been observed to cause trouble.
3269For example, the linker may hang indefinitely. The fix is to remove
250d5688 3270@file{/usr/ucb} from your @env{PATH}.
f42974dc 3271
021c4bfd
RO
3272All releases of GNU binutils prior to 2.11.2 have known bugs on this
3273platform. We recommend the use of GNU binutils 2.11.2 or the vendor
3274tools (Sun @command{as}, Sun @command{ld}).
f42974dc 3275
250d5688
RO
3276Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or
3277newer: @command{g++} will complain that types are missing. These headers assume
3278that omitting the type means @code{int}; this assumption worked for C89 but
3279is wrong for C++, and is now wrong for C99 also.
3280
3281@command{g++} accepts such (illegal) constructs with the option
3282@option{-fpermissive}; it
3283will assume that any missing type is @code{int} (as defined by C89).
3284
3285There are patches for Solaris 2.6 (105633-56 or newer for SPARC,
3286106248-42 or newer for Intel), Solaris 7 (108376-21 or newer for SPARC,
3287108377-20 for Intel), and Solaris 8 (108652-24 or newer for SPARC,
3288108653-22 for Intel) that fix this bug.
f42974dc 3289
dbd210ef
KC
3290@html
3291</p>
3292<hr>
3293@end html
250d5688 3294@heading @anchor{sparc-sun-solaris2*}sparc-sun-solaris2*
dbd210ef 3295
250d5688 3296Sun @command{as} 4.x is broken in that it cannot cope with long symbol names.
dbd210ef
KC
3297A typical error message might look similar to the following:
3298
3299@samp{/usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041:
3300error: can't compute value of an expression involving an external symbol.}
3301
250d5688
RO
3302This is Sun bug 4237974. This is fixed with patch 108908-02 for Solaris
33032.6 and has been fixed in later (5.x) versions of the assembler,
3304starting with Solaris 7.
dbd210ef 3305
03b272d2 3306Starting with Solaris 7, the operating system is capable of executing
edf1c8df
DM
330764-bit SPARC V9 binaries. GCC 3.1 and later should properly support
3308this. GCC 3.0 lacks the infrastructure necessary to support this
3309configuration properly. However, if all you want is code tuned for
3310the UltraSPARC CPU, you should try the @option{-mtune=ultrasparc}
3311option instead, which should be safe from those bugs and produce code
3312that, unlike full 64-bit code, can still run on non-UltraSPARC
3313machines.
03b272d2 3314
f42974dc
DW
3315@html
3316</p>
3317<hr>
f42974dc 3318@end html
ef88b07d 3319@heading @anchor{sparc-sun-solaris2.7}sparc-sun-solaris2.7
f42974dc 3320
250d5688 3321Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug in
f42974dc
DW
3322the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8
3323and later, including all EGCS releases. Sun formerly recommended
3324107058-01 for all Solaris 7 users, but around 1999-09-01 it started to
3325recommend it only for people who use Sun's compilers.
f9047ed3 3326
f42974dc
DW
3327Here are some workarounds to this problem:
3328@itemize @bullet
3329@item
3330Do not install Sun patch 107058-01 until after Sun releases a
3331complete patch for bug 4210064. This is the simplest course to take,
3332unless you must also use Sun's C compiler. Unfortunately 107058-01
250d5688 3333is preinstalled on some new Solaris 7-based hosts, so you may have to
f42974dc 3334back it out.
f9047ed3 3335
f42974dc
DW
3336@item
3337Copy the original, unpatched Solaris 7
3338@command{/usr/ccs/bin/as} into
021c4bfd 3339@command{/usr/local/lib/gcc-lib/sparc-sun-solaris2.7/3.0/as},
f42974dc
DW
3340adjusting the latter name to fit your local conventions and software
3341version numbers.
3342
3343@item
3344Install Sun patch 106950-03 (1999-05-25) or later. Nobody with
3345both 107058-01 and 106950-03 installed has reported the bug with GCC
3346and Sun's dynamic linker. This last course of action is riskiest,
3347for two reasons. First, you must install 106950 on all hosts that
3348run code generated by GCC; it doesn't suffice to install it only on
3349the hosts that run GCC itself. Second, Sun says that 106950-03 is
3350only a partial fix for bug 4210064, but Sun doesn't know whether the
161d7b59 3351partial fix is adequate for GCC@. Revision -08 or later should fix
250d5688
RO
3352the bug. The current (as of 2001-09-24) revision is -14, and is included in
3353the Solaris 7 Recommended Patch Cluster.
f9047ed3 3354@end itemize
f42974dc
DW
3355
3356
3357@html
3358<p>
3359<hr>
f42974dc 3360@end html
250d5688 3361@heading @anchor{*-*-solaris2.8}*-*-solaris2.8
f42974dc 3362
250d5688 3363The Solaris 8 linker fails to link some @samp{libjava} programs if
0e96b203 3364previously-installed GCC java libraries already exist in the configured
021c4bfd 3365prefix. For this reason, @samp{libgcj} is disabled by default on Solaris 8.
250d5688 3366If you use GNU @command{ld}, or if you don't have a previously-installed @samp{libgcj} in
0e96b203
AO
3367the same prefix, use @option{--enable-libgcj} to build and install the
3368Java libraries.
f42974dc
DW
3369
3370@html
3371<p>
3372<hr>
f42974dc 3373@end html
250d5688 3374@heading @anchor{sparc-sun-sunos4*}sparc-sun-sunos4*
f42974dc 3375
021c4bfd 3376A bug in the SunOS 4 linker will cause it to crash when linking
6cfb3f16 3377@option{-fPIC} compiled objects (and will therefore not allow you to build
f42974dc
DW
3378shared libraries).
3379
3380To fix this problem you can either use the most recent version of
021c4bfd 3381binutils or get the latest SunOS 4 linker patch (patch ID 100170-10)
f42974dc
DW
3382from Sun's patch site.
3383
dbd210ef
KC
3384Sometimes on a Sun 4 you may observe a crash in the program
3385@command{genflags} or @command{genoutput} while building GCC. This is said to
3386be due to a bug in @command{sh}. You can probably get around it by running
3387@command{genflags} or @command{genoutput} manually and then retrying the
3388@command{make}.
f42974dc
DW
3389
3390@html
3391</p>
3392<hr>
f42974dc 3393@end html
ef88b07d 3394@heading @anchor{sparc-unknown-linux-gnulibc1}sparc-unknown-linux-gnulibc1
f42974dc 3395
f9047ed3 3396It has been reported that you might need
021c4bfd 3397@uref{ftp://ftp.yggdrasil.com/private/hjl,,binutils 2.8.1.0.23}
f42974dc
DW
3398for this platform, too.
3399
3400
3401@html
3402</p>
3403<hr>
f42974dc 3404@end html
ef88b07d 3405@heading @anchor{sparc64-*-*}sparc64-*-*
f42974dc
DW
3406
3407GCC version 2.95 is not able to compile code correctly for
3408@code{sparc64} targets. Users of the Linux kernel, at least,
e9d21442 3409can use the @code{sparc32} program to start up a new shell
f42974dc 3410invocation with an environment that causes @command{configure} to
021c4bfd 3411recognize (via @samp{uname -a}) the system as @samp{sparc-*-*} instead.
f42974dc
DW
3412
3413
b8df899a
JM
3414@html
3415</p>
3416<hr>
3417@end html
3418@heading @anchor{#*-*-sysv*}*-*-sysv*
3419On System V release 3, you may get this error message
3420while linking:
3421
3422@smallexample
3423ld fatal: failed to write symbol name @var{something}
3424 in strings table for file @var{whatever}
3425@end smallexample
3426
021c4bfd 3427This probably indicates that the disk is full or your ulimit won't allow
b8df899a
JM
3428the file to be as large as it needs to be.
3429
3430This problem can also result because the kernel parameter @code{MAXUMEM}
3431is too small. If so, you must regenerate the kernel and make the value
3432much larger. The default value is reported to be 1024; a value of 32768
3433is said to work. Smaller values may also work.
3434
3435On System V, if you get an error like this,
3436
3437@example
3438/usr/local/lib/bison.simple: In function `yyparse':
3439/usr/local/lib/bison.simple:625: virtual memory exhausted
3440@end example
3441
3442@noindent
021c4bfd 3443that too indicates a problem with disk space, ulimit, or @code{MAXUMEM}.
b8df899a 3444
f85b8d1a
JM
3445On a System V release 4 system, make sure @file{/usr/bin} precedes
3446@file{/usr/ucb} in @code{PATH}. The @code{cc} command in
3447@file{/usr/ucb} uses libraries which have bugs.
b8df899a
JM
3448
3449@html
3450</p>
3451<hr>
3452@end html
3453@heading @anchor{vax-dec-ultrix}vax-dec-ultrix
8aeea6e6 3454Don't try compiling with VAX C (@code{vcc}). It produces incorrect code
b8df899a
JM
3455in some cases (for example, when @code{alloca} is used).
3456
b8df899a
JM
3457@html
3458</p>
3459<hr>
3460@end html
3461@heading @anchor{we32k-*-*}we32k-*-*
3462These computers are also known as the 3b2, 3b5, 3b20 and other similar
3463names. (However, the 3b1 is actually a 68000.)
3464
6cfb3f16 3465Don't use @option{-g} when compiling with the system's compiler. The
b8df899a
JM
3466system's linker seems to be unable to handle such a large program with
3467debugging information.
3468
3469The system's compiler runs out of capacity when compiling @file{stmt.c}
161d7b59 3470in GCC@. You can work around this by building @file{cpp} in GCC
b8df899a
JM
3471first, then use that instead of the system's preprocessor with the
3472system's C compiler to compile @file{stmt.c}. Here is how:
3473
3474@smallexample
3475mv /lib/cpp /lib/cpp.att
3476cp cpp /lib/cpp.gnu
3477echo '/lib/cpp.gnu -traditional $@{1+"$@@"@}' > /lib/cpp
3478chmod +x /lib/cpp
3479@end smallexample
3480
f0523f02 3481The system's compiler produces bad code for some of the GCC
b8df899a
JM
3482optimization files. So you must build the stage 2 compiler without
3483optimization. Then build a stage 3 compiler with optimization.
3484That executable should work. Here are the necessary commands:
3485
3486@smallexample
3487make LANGUAGES=c CC=stage1/xgcc CFLAGS="-Bstage1/ -g"
3488make stage2
3489make CC=stage2/xgcc CFLAGS="-Bstage2/ -g -O"
3490@end smallexample
3491
3492You may need to raise the ULIMIT setting to build a C++ compiler,
3493as the file @file{cc1plus} is larger than one megabyte.
3494
f42974dc
DW
3495@html
3496</p>
3497<hr>
f42974dc 3498@end html
ef88b07d 3499@heading @anchor{windows}Microsoft Windows (32 bit)
f42974dc 3500
f9047ed3 3501A port of GCC 2.95.x is included with the
f42974dc
DW
3502@uref{http://www.cygwin.com/,,Cygwin environment}.
3503
3504Current (as of early 2001) snapshots of GCC will build under Cygwin
3505without modification.
3506
3507@html
3508</p>
3509<hr>
f42974dc 3510@end html
ef88b07d 3511@heading @anchor{os2}OS/2
f42974dc
DW
3512
3513GCC does not currently support OS/2. However, Andrew Zabolotny has been
14976c58 3514working on a generic OS/2 port with pgcc. The current code can be found
f42974dc
DW
3515at @uref{http://www.goof.com/pcg/os2/,,http://www.goof.com/pcg/os2/}.
3516
f9047ed3 3517An older copy of GCC 2.8.1 is included with the EMX tools available at
f42974dc
DW
3518@uref{ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/,,
3519ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/}.
3520
3521@html
3522</p>
3523<hr>
f42974dc 3524@end html
ef88b07d 3525@heading @anchor{older}Older systems
f9047ed3
JM
3526
3527GCC contains support files for many older (1980s and early
35281990s) Unix variants. For the most part, support for these systems
3529has not been deliberately removed, but it has not been maintained for
3530several years and may suffer from bitrot. Support from some systems
3531has been removed from GCC 3: fx80, ns32-ns-genix, pyramid, tahoe,
3532gmicro, spur; most of these targets had not been updated since GCC
f42974dc 3533version 1.
f9047ed3
JM
3534
3535Support for older systems as targets for cross-compilation is less
3536problematic than support for them as hosts for GCC; if an enthusiast
3537wishes to make such a target work again (including resurrecting any
3538of the targets that never worked with GCC 2, starting from the last
3539CVS version before they were removed), patches
3540@uref{../contribute.html,,following the usual requirements}
3541would be likely to be accepted, since they should not affect the
f42974dc 3542support for more modern targets.
f9047ed3
JM
3543
3544Support for old systems as hosts for GCC can cause problems if the
3545workarounds for compiler, library and operating system bugs affect the
161d7b59 3546cleanliness or maintainability of the rest of GCC@. In some cases, to
f9047ed3
JM
3547bring GCC up on such a system, if still possible with current GCC, may
3548require first installing an old version of GCC which did work on that
3549system, and using it to compile a more recent GCC, to avoid bugs in
3550the vendor compiler. Old releases of GCC 1 and GCC 2 are available in
021c4bfd 3551the @file{old-releases} directory on the
f9047ed3 3552@uref{../mirrors.html,,GCC mirror sites}. Header bugs may generally
38209993
LG
3553be avoided using @command{fixincludes}, but bugs or deficiencies in
3554libraries and the operating system may still cause problems.
f9047ed3
JM
3555
3556For some systems, old versions of GNU binutils may also be useful,
021c4bfd 3557and are available from @file{pub/binutils/old-releases} on
f42974dc 3558@uref{http://sources.redhat.com/mirrors.html,,sources.redhat.com mirror sites}.
f9047ed3
JM
3559
3560Some of the information on specific systems above relates to
3561such older systems, but much of the information
3562about GCC on such systems (which may no longer be applicable to
f42974dc 3563current GCC) is to be found in the GCC texinfo manual.
f9047ed3 3564
f42974dc
DW
3565@html
3566</p>
3567<hr>
f42974dc 3568@end html
250d5688 3569@heading @anchor{elf_targets}all ELF targets (SVR4, Solaris 2, etc.)
f42974dc 3570
38209993
LG
3571C++ support is significantly better on ELF targets if you use the
3572@uref{./configure.html#with-gnu-ld,,GNU linker}; duplicate copies of
3573inlines, vtables and template instantiations will be discarded
3574automatically.
f42974dc
DW
3575
3576
3577@html
3578</p>
3579<hr>
3580<p>
3581@end html
3582@ifhtml
3583@uref{./index.html,,Return to the GCC Installation page}
3584@end ifhtml
3585@end ifset
3586
3587@c ***************************************************************************
3588@c Part 6 The End of the Document
3589@ifinfo
3590@comment node-name, next, previous, up
3591@node Concept Index, , Specific, Top
3592@end ifinfo
3593
3594@ifinfo
3595@unnumbered Concept Index
3596
3597@printindex cp
3598
3599@contents
3600@end ifinfo
3601@bye