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