]> gcc.gnu.org Git - gcc.git/blame - gcc/INSTALL
Merge from gcc-2.8
[gcc.git] / gcc / INSTALL
CommitLineData
861bb6c1
JL
1This file documents the installation of the GNU compiler. Copyright
2(C) 1988, 1989, 1992, 1994, 1995 Free Software Foundation, Inc. You
3may copy, distribute, and modify it freely as long as you preserve this
4copyright notice and permission notice.
5
f2d76545
JL
6Note most of this information is out of date and superceded by the EGCS
7install procedures. It is provided for historical reference only.
8
861bb6c1
JL
9Installing GNU CC
10*****************
11
12 Here is the procedure for installing GNU CC on a Unix system. See
13*Note VMS Install::, for VMS systems. In this section we assume you
14compile in the same directory that contains the source files; see *Note
15Other Dir::, to find out how to compile in a separate directory on Unix
16systems.
17
18 You cannot install GNU C by itself on MSDOS; it will not compile
19under any MSDOS compiler except itself. You need to get the complete
20compilation package DJGPP, which includes binaries as well as sources,
21and includes all the necessary compilation tools and libraries.
22
23 1. If you have built GNU CC previously in the same directory for a
24 different target machine, do `make distclean' to delete all files
25 that might be invalid. One of the files this deletes is
26 `Makefile'; if `make distclean' complains that `Makefile' does not
27 exist, it probably means that the directory is already suitably
28 clean.
29
30 2. On a System V release 4 system, make sure `/usr/bin' precedes
31 `/usr/ucb' in `PATH'. The `cc' command in `/usr/ucb' uses
32 libraries which have bugs.
33
34 3. Specify the host, build and target machine configurations. You do
35 this by running the file `configure'.
36
37 The "build" machine is the system which you are using, the "host"
38 machine is the system where you want to run the resulting compiler
39 (normally the build machine), and the "target" machine is the
40 system for which you want the compiler to generate code.
41
42 If you are building a compiler to produce code for the machine it
43 runs on (a native compiler), you normally do not need to specify
44 any operands to `configure'; it will try to guess the type of
45 machine you are on and use that as the build, host and target
46 machines. So you don't need to specify a configuration when
47 building a native compiler unless `configure' cannot figure out
48 what your configuration is or guesses wrong.
49
50 In those cases, specify the build machine's "configuration name"
51 with the `--build' option; the host and target will default to be
52 the same as the build machine. (If you are building a
53 cross-compiler, see *Note Cross-Compiler::.)
54
55 Here is an example:
56
57 ./configure --build=sparc-sun-sunos4.1
58
59 A configuration name may be canonical or it may be more or less
60 abbreviated.
61
62 A canonical configuration name has three parts, separated by
63 dashes. It looks like this: `CPU-COMPANY-SYSTEM'. (The three
64 parts may themselves contain dashes; `configure' can figure out
65 which dashes serve which purpose.) For example,
66 `m68k-sun-sunos4.1' specifies a Sun 3.
67
68 You can also replace parts of the configuration by nicknames or
69 aliases. For example, `sun3' stands for `m68k-sun', so
70 `sun3-sunos4.1' is another way to specify a Sun 3. You can also
71 use simply `sun3-sunos', since the version of SunOS is assumed by
e9a25f70 72 default to be version 4.
861bb6c1
JL
73
74 You can specify a version number after any of the system types,
75 and some of the CPU types. In most cases, the version is
76 irrelevant, and will be ignored. So you might as well specify the
77 version if you know it.
78
79 See *Note Configurations::, for a list of supported configuration
80 names and notes on many of the configurations. You should check
81 the notes in that section before proceeding any further with the
82 installation of GNU CC.
83
84 There are four additional options you can specify independently to
85 describe variant hardware and software configurations. These are
86 `--with-gnu-as', `--with-gnu-ld', `--with-stabs' and `--nfp'.
87
88 `--with-gnu-as'
89 If you will use GNU CC with the GNU assembler (GAS), you
90 should declare this by using the `--with-gnu-as' option when
91 you run `configure'.
92
93 Using this option does not install GAS. It only modifies the
94 output of GNU CC to work with GAS. Building and installing
95 GAS is up to you.
96
97 Conversely, if you *do not* wish to use GAS and do not specify
98 `--with-gnu-as' when building GNU CC, it is up to you to make
99 sure that GAS is not installed. GNU CC searches for a
100 program named `as' in various directories; if the program it
101 finds is GAS, then it runs GAS. If you are not sure where
102 GNU CC finds the assembler it is using, try specifying `-v'
103 when you run it.
104
105 The systems where it makes a difference whether you use GAS
106 are
107 `hppa1.0-ANY-ANY', `hppa1.1-ANY-ANY', `i386-ANY-sysv',
108 `i386-ANY-isc',
e9a25f70
JL
109 `i860-ANY-bsd', `m68k-bull-sysv',
110 `m68k-hp-hpux', `m68k-sony-bsd',
111 `m68k-altos-sysv', `m68000-hp-hpux',
112 `m68000-att-sysv', `ANY-lynx-lynxos', and `mips-ANY'). On
113 any other system, `--with-gnu-as' has no effect.
861bb6c1
JL
114
115 On the systems listed above (except for the HP-PA, for ISC on
116 the 386, and for `mips-sgi-irix5.*'), if you use GAS, you
117 should also use the GNU linker (and specify `--with-gnu-ld').
118
119 `--with-gnu-ld'
120 Specify the option `--with-gnu-ld' if you plan to use the GNU
121 linker with GNU CC.
122
123 This option does not cause the GNU linker to be installed; it
124 just modifies the behavior of GNU CC to work with the GNU
125 linker. Specifically, it inhibits the installation of
126 `collect2', a program which otherwise serves as a front-end
127 for the system's linker on most configurations.
128
129 `--with-stabs'
130 On MIPS based systems and on Alphas, you must specify whether
131 you want GNU CC to create the normal ECOFF debugging format,
132 or to use BSD-style stabs passed through the ECOFF symbol
133 table. The normal ECOFF debug format cannot fully handle
134 languages other than C. BSD stabs format can handle other
135 languages, but it only works with the GNU debugger GDB.
136
137 Normally, GNU CC uses the ECOFF debugging format by default;
138 if you prefer BSD stabs, specify `--with-stabs' when you
139 configure GNU CC.
140
141 No matter which default you choose when you configure GNU CC,
142 the user can use the `-gcoff' and `-gstabs+' options to
143 specify explicitly the debug format for a particular
144 compilation.
145
146 `--with-stabs' is meaningful on the ISC system on the 386,
147 also, if `--with-gas' is used. It selects use of stabs
148 debugging information embedded in COFF output. This kind of
149 debugging information supports C++ well; ordinary COFF
150 debugging information does not.
151
152 `--with-stabs' is also meaningful on 386 systems running
153 SVR4. It selects use of stabs debugging information embedded
154 in ELF output. The C++ compiler currently (2.6.0) does not
155 support the DWARF debugging information normally used on 386
156 SVR4 platforms; stabs provide a workable alternative. This
157 requires gas and gdb, as the normal SVR4 tools can not
158 generate or interpret stabs.
159
160 `--nfp'
161 On certain systems, you must specify whether the machine has
162 a floating point unit. These systems include
163 `m68k-sun-sunosN' and `m68k-isi-bsd'. On any other system,
164 `--nfp' currently has no effect, though perhaps there are
165 other systems where it could usefully make a difference.
166
e9a25f70
JL
167 `--enable-objcthreads=TYPE'
168 Certain systems, notably Linux-based GNU systems, can't be
169 relied on to supply a threads facility for the Objective C
170 runtime and so will default to single-threaded runtime. They
171 may, however, have a library threads implementation
172 available, in which case threads can be enabled with this
173 option by supplying a suitable TYPE, probably `posix'. The
174 possibilities for TYPE are `single', `posix', `win32',
175 `solaris', `irix' and `mach'.
176
861bb6c1
JL
177 The `configure' script searches subdirectories of the source
178 directory for other compilers that are to be integrated into GNU
179 CC. The GNU compiler for C++, called G++ is in a subdirectory
180 named `cp'. `configure' inserts rules into `Makefile' to build
181 all of those compilers.
182
183 Here we spell out what files will be set up by `configure'.
184 Normally you need not be concerned with these files.
185
186 * A file named `config.h' is created that contains a `#include'
187 of the top-level config file for the machine you will run the
188 compiler on (*note The Configuration File:
189 (gcc.info)Config.). This file is responsible for defining
190 information about the host machine. It includes `tm.h'.
191
192 The top-level config file is located in the subdirectory
193 `config'. Its name is always `xm-SOMETHING.h'; usually
194 `xm-MACHINE.h', but there are some exceptions.
195
196 If your system does not support symbolic links, you might
197 want to set up `config.h' to contain a `#include' command
198 which refers to the appropriate file.
199
200 * A file named `tconfig.h' is created which includes the
201 top-level config file for your target machine. This is used
202 for compiling certain programs to run on that machine.
203
204 * A file named `tm.h' is created which includes the
205 machine-description macro file for your target machine. It
206 should be in the subdirectory `config' and its name is often
207 `MACHINE.h'.
208
209 * The command file `configure' also constructs the file
210 `Makefile' by adding some text to the template file
211 `Makefile.in'. The additional text comes from files in the
212 `config' directory, named `t-TARGET' and `x-HOST'. If these
213 files do not exist, it means nothing needs to be added for a
214 given target or host.
215
216 4. The standard directory for installing GNU CC is `/usr/local/lib'.
217 If you want to install its files somewhere else, specify
218 `--prefix=DIR' when you run `configure'. Here DIR is a directory
219 name to use instead of `/usr/local' for all purposes with one
220 exception: the directory `/usr/local/include' is searched for
221 header files no matter where you install the compiler. To override
222 this name, use the `--local-prefix' option below.
223
224 5. Specify `--local-prefix=DIR' if you want the compiler to search
225 directory `DIR/include' for locally installed header files
226 *instead* of `/usr/local/include'.
227
228 You should specify `--local-prefix' *only* if your site has a
229 different convention (not `/usr/local') for where to put
230 site-specific files.
231
e9a25f70
JL
232 The default value for `--local-prefix' is `/usr/local' regardless
233 of the value of `--prefix'. Specifying `--prefix' has no effect
234 on which directory GNU CC searches for local header files. This
235 may seem counterintuitive, but actually it is logical.
236
237 The purpose of `--prefix' is to specify where to *install GNU CC*.
238 The local header files in `/usr/local/include'--if you put any in
239 that directory--are not part of GNU CC. They are part of other
240 programs--perhaps many others. (GNU CC installs its own header
241 files in another directory which is based on the `--prefix' value.)
242
861bb6c1
JL
243 *Do not* specify `/usr' as the `--local-prefix'! The directory
244 you use for `--local-prefix' *must not* contain any of the
245 system's standard header files. If it did contain them, certain
246 programs would be miscompiled (including GNU Emacs, on certain
247 targets), because this would override and nullify the header file
248 corrections made by the `fixincludes' script.
249
e9a25f70
JL
250 Indications are that people who use this option use it based on
251 mistaken ideas of what it is for. People use it as if it specified
252 where to install part of GNU CC. Perhaps they make this assumption
253 because installing GNU CC creates the directory.
254
861bb6c1
JL
255 6. Make sure the Bison parser generator is installed. (This is
256 unnecessary if the Bison output files `c-parse.c' and `cexp.c' are
257 more recent than `c-parse.y' and `cexp.y' and you do not plan to
258 change the `.y' files.)
259
260 Bison versions older than Sept 8, 1988 will produce incorrect
261 output for `c-parse.c'.
262
263 7. If you have chosen a configuration for GNU CC which requires other
264 GNU tools (such as GAS or the GNU linker) instead of the standard
265 system tools, install the required tools in the build directory
266 under the names `as', `ld' or whatever is appropriate. This will
267 enable the compiler to find the proper tools for compilation of
268 the program `enquire'.
269
270 Alternatively, you can do subsequent compilation using a value of
271 the `PATH' environment variable such that the necessary GNU tools
272 come before the standard system tools.
273
274 8. Build the compiler. Just type `make LANGUAGES=c' in the compiler
275 directory.
276
277 `LANGUAGES=c' specifies that only the C compiler should be
278 compiled. The makefile normally builds compilers for all the
279 supported languages; currently, C, C++ and Objective C. However,
280 C is the only language that is sure to work when you build with
281 other non-GNU C compilers. In addition, building anything but C
282 at this stage is a waste of time.
283
284 In general, you can specify the languages to build by typing the
285 argument `LANGUAGES="LIST"', where LIST is one or more words from
286 the list `c', `c++', and `objective-c'. If you have any
287 additional GNU compilers as subdirectories of the GNU CC source
288 directory, you may also specify their names in this list.
289
290 Ignore any warnings you may see about "statement not reached" in
291 `insn-emit.c'; they are normal. Also, warnings about "unknown
292 escape sequence" are normal in `genopinit.c' and perhaps some
293 other files. Likewise, you should ignore warnings about "constant
294 is so large that it is unsigned" in `insn-emit.c' and
295 `insn-recog.c' and a warning about a comparison always being zero
296 in `enquire.o'. Any other compilation errors may represent bugs in
297 the port to your machine or operating system, and should be
298 investigated and reported.
299
300 Some commercial compilers fail to compile GNU CC because they have
301 bugs or limitations. For example, the Microsoft compiler is said
302 to run out of macro space. Some Ultrix compilers run out of
303 expression space; then you need to break up the statement where
304 the problem happens.
305
306 9. If you are building a cross-compiler, stop here. *Note
307 Cross-Compiler::.
308
309 10. Move the first-stage object files and executables into a
310 subdirectory with this command:
311
312 make stage1
313
314 The files are moved into a subdirectory named `stage1'. Once
315 installation is complete, you may wish to delete these files with
316 `rm -r stage1'.
317
318 11. If you have chosen a configuration for GNU CC which requires other
319 GNU tools (such as GAS or the GNU linker) instead of the standard
320 system tools, install the required tools in the `stage1'
321 subdirectory under the names `as', `ld' or whatever is
322 appropriate. This will enable the stage 1 compiler to find the
323 proper tools in the following stage.
324
325 Alternatively, you can do subsequent compilation using a value of
326 the `PATH' environment variable such that the necessary GNU tools
327 come before the standard system tools.
328
329 12. Recompile the compiler with itself, with this command:
330
331 make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O2"
332
333 This is called making the stage 2 compiler.
334
335 The command shown above builds compilers for all the supported
336 languages. If you don't want them all, you can specify the
337 languages to build by typing the argument `LANGUAGES="LIST"'. LIST
338 should contain one or more words from the list `c', `c++',
339 `objective-c', and `proto'. Separate the words with spaces.
340 `proto' stands for the programs `protoize' and `unprotoize'; they
341 are not a separate language, but you use `LANGUAGES' to enable or
342 disable their installation.
343
344 If you are going to build the stage 3 compiler, then you might
345 want to build only the C language in stage 2.
346
347 Once you have built the stage 2 compiler, if you are short of disk
348 space, you can delete the subdirectory `stage1'.
349
350 On a 68000 or 68020 system lacking floating point hardware, unless
351 you have selected a `tm.h' file that expects by default that there
352 is no such hardware, do this instead:
353
354 make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O2 -msoft-float"
355
356 13. If you wish to test the compiler by compiling it with itself one
357 more time, install any other necessary GNU tools (such as GAS or
358 the GNU linker) in the `stage2' subdirectory as you did in the
359 `stage1' subdirectory, then do this:
360
361 make stage2
362 make CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O2"
363
364 This is called making the stage 3 compiler. Aside from the `-B'
365 option, the compiler options should be the same as when you made
366 the stage 2 compiler. But the `LANGUAGES' option need not be the
367 same. The command shown above builds compilers for all the
368 supported languages; if you don't want them all, you can specify
369 the languages to build by typing the argument `LANGUAGES="LIST"',
370 as described above.
371
372 If you do not have to install any additional GNU tools, you may
373 use the command
374
375 make bootstrap LANGUAGES=LANGUAGE-LIST BOOT_CFLAGS=OPTION-LIST
376
377 instead of making `stage1', `stage2', and performing the two
378 compiler builds.
379
380 14. Then compare the latest object files with the stage 2 object
381 files--they ought to be identical, aside from time stamps (if any).
382
383 On some systems, meaningful comparison of object files is
384 impossible; they always appear "different." This is currently
385 true on Solaris and some systems that use ELF object file format.
386 On some versions of Irix on SGI machines and DEC Unix (OSF/1) on
387 Alpha systems, you will not be able to compare the files without
388 specifying `-save-temps'; see the description of individual
389 systems above to see if you get comparison failures. You may have
390 similar problems on other systems.
391
392 Use this command to compare the files:
393
394 make compare
395
396 This will mention any object files that differ between stage 2 and
397 stage 3. Any difference, no matter how innocuous, indicates that
398 the stage 2 compiler has compiled GNU CC incorrectly, and is
399 therefore a potentially serious bug which you should investigate
400 and report.
401
402 If your system does not put time stamps in the object files, then
403 this is a faster way to compare them (using the Bourne shell):
404
405 for file in *.o; do
406 cmp $file stage2/$file
407 done
408
409 If you have built the compiler with the `-mno-mips-tfile' option on
410 MIPS machines, you will not be able to compare the files.
411
412 15. Install the compiler driver, the compiler's passes and run-time
413 support with `make install'. Use the same value for `CC',
414 `CFLAGS' and `LANGUAGES' that you used when compiling the files
415 that are being installed. One reason this is necessary is that
416 some versions of Make have bugs and recompile files gratuitously
417 when you do this step. If you use the same variable values, those
418 files will be recompiled properly.
419
420 For example, if you have built the stage 2 compiler, you can use
421 the following command:
422
423 make install CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O" LANGUAGES="LIST"
424
425 This copies the files `cc1', `cpp' and `libgcc.a' to files `cc1',
426 `cpp' and `libgcc.a' in the directory
427 `/usr/local/lib/gcc-lib/TARGET/VERSION', which is where the
428 compiler driver program looks for them. Here TARGET is the target
429 machine type specified when you ran `configure', and VERSION is
430 the version number of GNU CC. This naming scheme permits various
e9a25f70
JL
431 versions and/or cross-compilers to coexist. It also copies the
432 executables for compilers for other languages (e.g., `cc1plus' for
433 C++) to the same directory.
861bb6c1
JL
434
435 This also copies the driver program `xgcc' into
436 `/usr/local/bin/gcc', so that it appears in typical execution
e9a25f70
JL
437 search paths. It also copies `gcc.1' into `/usr/local/man/man1'
438 and info pages into `/usr/local/info'.
861bb6c1
JL
439
440 On some systems, this command causes recompilation of some files.
441 This is usually due to bugs in `make'. You should either ignore
442 this problem, or use GNU Make.
443
444 *Warning: there is a bug in `alloca' in the Sun library. To avoid
445 this bug, be sure to install the executables of GNU CC that were
446 compiled by GNU CC. (That is, the executables from stage 2 or 3,
447 not stage 1.) They use `alloca' as a built-in function and never
448 the one in the library.*
449
450 (It is usually better to install GNU CC executables from stage 2
451 or 3, since they usually run faster than the ones compiled with
452 some other compiler.)
453
454 16. If you're going to use C++, it's likely that you need to also
455 install the libg++ distribution. It should be available from the
456 same place where you got the GNU C distribution. Just as GNU C
457 does not distribute a C runtime library, it also does not include
458 a C++ run-time library. All I/O functionality, special class
459 libraries, etc., are available in the libg++ distribution.
460
e9a25f70
JL
461 17. GNU CC includes a runtime library for Objective-C because it is an
462 integral part of the language. You can find the files associated
463 with the library in the subdirectory `objc'. The GNU Objective-C
464 Runtime Library requires header files for the target's C library in
465 order to be compiled,and also requires the header files for the
466 target's thread library if you want thread support. *Note
467 Cross-Compilers and Header Files: Cross Headers, for discussion
468 about header files issues for cross-compilation.
469
470 When you run `configure', it picks the appropriate Objective-C
471 thread implementation file for the target platform. In some
472 situations, you may wish to choose a different back-end as some
473 platforms support multiple thread implementations or you may wish
474 to disable thread support completely. You do this by specifying a
475 value for the OBJC_THREAD_FILE makefile variable on the command
476 line when you run make, for example:
477
478 make CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O2" OBJC_THREAD_FILE=thr-single
479
480 Below is a list of the currently available back-ends.
481
482 * thr-single Disable thread support, should work for all
483 platforms.
484
485 * thr-decosf1 DEC OSF/1 thread support.
486
487 * thr-irix SGI IRIX thread support.
488
489 * thr-mach Generic MACH thread support, known to work on
490 NEXTSTEP.
491
492 * thr-os2 IBM OS/2 thread support.
493
494 * thr-posix Generix POSIX thread support.
495
496 * thr-pthreads PCThreads on Linux-based GNU systems.
497
498 * thr-solaris SUN Solaris thread support.
499
500 * thr-win32 Microsoft Win32 API thread support.
501
861bb6c1
JL
502Configurations Supported by GNU CC
503==================================
504
505 Here are the possible CPU types:
506
507 1750a, a29k, alpha, arm, cN, clipper, dsp16xx, elxsi, h8300,
e9a25f70
JL
508 hppa1.0, hppa1.1, i370, i386, i486, i586, i860, i960, m32r,
509 m68000, m68k, m88k, mips, mipsel, mips64, mips64el, ns32k,
510 powerpc, powerpcle, pyramid, romp, rs6000, sh, sparc, sparclite,
511 sparc64, vax, we32k.
861bb6c1
JL
512
513 Here are the recognized company names. As you can see, customary
514abbreviations are used rather than the longer official names.
515
e9a25f70
JL
516 acorn, alliant, altos, apollo, apple, att, bull, cbm, convergent,
517 convex, crds, dec, dg, dolphin, elxsi, encore, harris, hitachi,
518 hp, ibm, intergraph, isi, mips, motorola, ncr, next, ns, omron,
519 plexus, sequent, sgi, sony, sun, tti, unicom, wrs.
861bb6c1
JL
520
521 The company name is meaningful only to disambiguate when the rest of
522the information supplied is insufficient. You can omit it, writing
523just `CPU-SYSTEM', if it is not needed. For example, `vax-ultrix4.2'
524is equivalent to `vax-dec-ultrix4.2'.
525
526 Here is a list of system types:
527
e9a25f70 528 386bsd, aix, acis, amigaos, aos, aout, aux, bosx, bsd, clix, coff,
861bb6c1 529 ctix, cxux, dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms,
e9a25f70 530 genix, gnu, linux-gnu, hiux, hpux, iris, irix, isc, luna, lynxos,
861bb6c1
JL
531 mach, minix, msdos, mvs, netbsd, newsos, nindy, ns, osf, osfrose,
532 ptx, riscix, riscos, rtu, sco, sim, solaris, sunos, sym, sysv,
533 udi, ultrix, unicos, uniplus, unos, vms, vsta, vxworks, winnt,
534 xenix.
535
536You can omit the system type; then `configure' guesses the operating
537system from the CPU and company.
538
539 You can add a version number to the system type; this may or may not
540make a difference. For example, you can write `bsd4.3' or `bsd4.4' to
541distinguish versions of BSD. In practice, the version number is most
542needed for `sysv3' and `sysv4', which are often treated differently.
543
544 If you specify an impossible combination such as `i860-dg-vms', then
545you may get an error message from `configure', or it may ignore part of
546the information and do the best it can with the rest. `configure'
547always prints the canonical name for the alternative that it used. GNU
548CC does not support all possible alternatives.
549
550 Often a particular model of machine has a name. Many machine names
551are recognized as aliases for CPU/company combinations. Thus, the
552machine name `sun3', mentioned above, is an alias for `m68k-sun'.
553Sometimes we accept a company name as a machine name, when the name is
554popularly used for a particular machine. Here is a table of the known
555machine names:
556
557 3300, 3b1, 3bN, 7300, altos3068, altos, apollo68, att-7300,
558 balance, convex-cN, crds, decstation-3100, decstation, delta,
559 encore, fx2800, gmicro, hp7NN, hp8NN, hp9k2NN, hp9k3NN, hp9k7NN,
560 hp9k8NN, iris4d, iris, isi68, m3230, magnum, merlin, miniframe,
561 mmax, news-3600, news800, news, next, pbd, pc532, pmax, powerpc,
562 powerpcle, ps2, risc-news, rtpc, sun2, sun386i, sun386, sun3,
563 sun4, symmetry, tower-32, tower.
564
565Remember that a machine name specifies both the cpu type and the company
566name. If you want to install your own homemade configuration files,
567you can use `local' as the company name to access them. If you use
568configuration `CPU-local', the configuration name without the cpu prefix
569is used to form the configuration file names.
570
571 Thus, if you specify `m68k-local', configuration uses files
572`m68k.md', `local.h', `m68k.c', `xm-local.h', `t-local', and `x-local',
573all in the directory `config/m68k'.
574
575 Here is a list of configurations that have special treatment or
576special things you must know:
577
578`1750a-*-*'
579 MIL-STD-1750A processors.
580
e9a25f70
JL
581 The MIL-STD-1750A cross configuration produces output for
582 `as1750', an assembler/linker available under the GNU Public
583 License for the 1750A. `as1750' can be obtained at
584 *ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/*. A similarly
585 licensed simulator for the 1750A is available from same address.
861bb6c1
JL
586
587 You should ignore a fatal error during the building of libgcc
588 (libgcc is not yet implemented for the 1750A.)
589
590 The `as1750' assembler requires the file `ms1750.inc', which is
591 found in the directory `config/1750a'.
592
593 GNU CC produced the same sections as the Fairchild F9450 C
594 Compiler, namely:
595
596 `Normal'
597 The program code section.
598
599 `Static'
600 The read/write (RAM) data section.
601
602 `Konst'
603 The read-only (ROM) constants section.
604
605 `Init'
606 Initialization section (code to copy KREL to SREL).
607
608 The smallest addressable unit is 16 bits (BITS_PER_UNIT is 16).
609 This means that type `char' is represented with a 16-bit word per
610 character. The 1750A's "Load/Store Upper/Lower Byte" instructions
611 are not used by GNU CC.
612
613`alpha-*-osf1'
614 Systems using processors that implement the DEC Alpha architecture
615 and are running the DEC Unix (OSF/1) operating system, for example
956d6950 616 the DEC Alpha AXP systems.CC.)
861bb6c1
JL
617
618 GNU CC writes a `.verstamp' directive to the assembler output file
619 unless it is built as a cross-compiler. It gets the version to
620 use from the system header file `/usr/include/stamp.h'. If you
621 install a new version of DEC Unix, you should rebuild GCC to pick
622 up the new version stamp.
623
624 Note that since the Alpha is a 64-bit architecture,
625 cross-compilers from 32-bit machines will not generate code as
626 efficient as that generated when the compiler is running on a
627 64-bit machine because many optimizations that depend on being
628 able to represent a word on the target in an integral value on the
629 host cannot be performed. Building cross-compilers on the Alpha
630 for 32-bit machines has only been tested in a few cases and may
631 not work properly.
632
633 `make compare' may fail on old versions of DEC Unix unless you add
634 `-save-temps' to `CFLAGS'. On these systems, the name of the
635 assembler input file is stored in the object file, and that makes
636 comparison fail if it differs between the `stage1' and `stage2'
637 compilations. The option `-save-temps' forces a fixed name to be
638 used for the assembler input file, instead of a randomly chosen
639 name in `/tmp'. Do not add `-save-temps' unless the comparisons
640 fail without that option. If you add `-save-temps', you will have
641 to manually delete the `.i' and `.s' files after each series of
642 compilations.
643
644 GNU CC now supports both the native (ECOFF) debugging format used
645 by DBX and GDB and an encapsulated STABS format for use only with
646 GDB. See the discussion of the `--with-stabs' option of
647 `configure' above for more information on these formats and how to
648 select them.
649
650 There is a bug in DEC's assembler that produces incorrect line
651 numbers for ECOFF format when the `.align' directive is used. To
652 work around this problem, GNU CC will not emit such alignment
653 directives while writing ECOFF format debugging information even
654 if optimization is being performed. Unfortunately, this has the
655 very undesirable side-effect that code addresses when `-O' is
656 specified are different depending on whether or not `-g' is also
657 specified.
658
659 To avoid this behavior, specify `-gstabs+' and use GDB instead of
660 DBX. DEC is now aware of this problem with the assembler and
661 hopes to provide a fix shortly.
662
e9a25f70
JL
663`arc-*-elf'
664 Argonaut ARC processor. This configuration is intended for
665 embedded systems.
666
667`arm-*-aout'
861bb6c1
JL
668 Advanced RISC Machines ARM-family processors. These are often
669 used in embedded applications. There are no standard Unix
670 configurations. This configuration corresponds to the basic
e9a25f70
JL
671 instruction sequences and will produce `a.out' format object
672 modules.
861bb6c1
JL
673
674 You may need to make a variant of the file `arm.h' for your
675 particular configuration.
676
e9a25f70
JL
677`arm-*-linuxaout'
678 Any of the ARM family processors running the Linux-based GNU
679 system with the `a.out' binary format (ELF is not yet supported).
956d6950 680 You must use version 2.8.1.0.7 or later of the GNU/Linux binutils,
e9a25f70
JL
681 which you can download from `sunsite.unc.edu:/pub/Linux/GCC' and
682 other mirror sites for Linux-based GNU systems.
683
861bb6c1
JL
684`arm-*-riscix'
685 The ARM2 or ARM3 processor running RISC iX, Acorn's port of BSD
686 Unix. If you are running a version of RISC iX prior to 1.2 then
687 you must specify the version number during configuration. Note
688 that the assembler shipped with RISC iX does not support stabs
689 debugging information; a new version of the assembler, with stabs
690 support included, is now available from Acorn.
691
692`a29k'
693 AMD Am29k-family processors. These are normally used in embedded
694 applications. There are no standard Unix configurations. This
695 configuration corresponds to AMD's standard calling sequence and
696 binary interface and is compatible with other 29k tools.
697
698 You may need to make a variant of the file `a29k.h' for your
699 particular configuration.
700
701`a29k-*-bsd'
702 AMD Am29050 used in a system running a variant of BSD Unix.
703
704`decstation-*'
705 DECstations can support three different personalities: Ultrix, DEC
706 OSF/1, and OSF/rose. To configure GCC for these platforms use the
707 following configurations:
708
709 `decstation-ultrix'
710 Ultrix configuration.
711
712 `decstation-osf1'
713 Dec's version of OSF/1.
714
715 `decstation-osfrose'
716 Open Software Foundation reference port of OSF/1 which uses
717 the OSF/rose object file format instead of ECOFF. Normally,
718 you would not select this configuration.
719
720 The MIPS C compiler needs to be told to increase its table size
721 for switch statements with the `-Wf,-XNg1500' option in order to
722 compile `cp/parse.c'. If you use the `-O2' optimization option,
723 you also need to use `-Olimit 3000'. Both of these options are
724 automatically generated in the `Makefile' that the shell script
725 `configure' builds. If you override the `CC' make variable and
726 use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit
727 3000'.
728
729`elxsi-elxsi-bsd'
730 The Elxsi's C compiler has known limitations that prevent it from
731 compiling GNU C. Please contact `mrs@cygnus.com' for more details.
732
733`dsp16xx'
734 A port to the AT&T DSP1610 family of processors.
735
736`h8300-*-*'
e9a25f70
JL
737 Hitachi H8/300 series of processors.
738
861bb6c1
JL
739 The calling convention and structure layout has changed in release
740 2.6. All code must be recompiled. The calling convention now
741 passes the first three arguments in function calls in registers.
742 Structures are no longer a multiple of 2 bytes.
743
744`hppa*-*-*'
e9a25f70
JL
745 There are several variants of the HP-PA processor which run a
746 variety of operating systems. GNU CC must be configured to use
747 the correct processor type and operating system, or GNU CC will
748 not function correctly. The easiest way to handle this problem is
749 to *not* specify a target when configuring GNU CC, the `configure'
750 script will try to automatically determine the right processor
751 type and operating system.
861bb6c1
JL
752
753 `-g' does not work on HP-UX, since that system uses a peculiar
754 debugging format which GNU CC does not know about. However, `-g'
755 will work if you also use GAS and GDB in conjunction with GCC. We
756 highly recommend using GAS for all HP-PA configurations.
757
e9a25f70 758 You should be using GAS-2.6 (or later) along with GDB-4.16 (or
861bb6c1
JL
759 later). These can be retrieved from all the traditional GNU ftp
760 archive sites.
761
e9a25f70
JL
762 GAS will need to be installed into a directory before `/bin',
763 `/usr/bin', and `/usr/ccs/bin' in your search path. You should
764 install GAS before you build GNU CC.
861bb6c1 765
e9a25f70
JL
766 To enable debugging, you must configure GNU CC with the
767 `--with-gnu-as' option before building.
861bb6c1
JL
768
769`i370-*-*'
770 This port is very preliminary and has many known bugs. We hope to
771 have a higher-quality port for this machine soon.
772
e9a25f70
JL
773`i386-*-linux-gnuoldld'
774 Use this configuration to generate `a.out' binaries on Linux-based
775 GNU systems if you do not have gas/binutils version 2.5.2 or later
776 installed. This is an obsolete configuration.
861bb6c1 777
e9a25f70
JL
778`i386-*-linux-gnuaout'
779 Use this configuration to generate `a.out' binaries on Linux-based
780 GNU systems. This configuration is being superseded. You must use
781 gas/binutils version 2.5.2 or later.
861bb6c1 782
e9a25f70
JL
783`i386-*-linux-gnu'
784 Use this configuration to generate ELF binaries on Linux-based GNU
785 systems. You must use gas/binutils version 2.5.2 or later.
861bb6c1
JL
786
787`i386-*-sco'
788 Compilation with RCC is recommended. Also, it may be a good idea
789 to link with GNU malloc instead of the malloc that comes with the
790 system.
791
792`i386-*-sco3.2v4'
793 Use this configuration for SCO release 3.2 version 4.
794
e9a25f70
JL
795`i386-*-sco3.2v5*'
796 Use this for the SCO OpenServer Release family including 5.0.0,
797 5.0.2, 5.0.4, Internet FastStart 1.0, and Internet FastStart 1.1.
798
799 GNU CC can generate ELF binaries (if you specify `-melf') or COFF
800 binaries (the default). If you are going to build your compiler
801 in ELF mode (once you have bootstrapped the first stage compiler)
802 you *must* specify `-melf' as part of `CC', *not* `CFLAGS', for
803 example as `CC="stage1/xgcc -melf -Bstage1/" '. If you do not do
804 this, the bootstrap will generate incorrect versions of `libgcc.a'.
805
806 You must have TLS597 (from ftp.sco.com/TLS) installed for ELF
807 binaries to work correctly. Note that Open Server 5.0.2 *does*
808 need TLS597 installed.
809
810 *NOTE:* You must follow the instructions about invoking `make
811 bootstrap' because the native OpenServer compiler builds a
812 `cc1plus' that will not correctly parse many valid C++ programs.
813 You must do a `make bootstrap' if you are building with the native
814 compiler.
815
861bb6c1
JL
816`i386-*-isc'
817 It may be a good idea to link with GNU malloc instead of the
818 malloc that comes with the system.
819
820 In ISC version 4.1, `sed' core dumps when building `deduced.h'.
821 Use the version of `sed' from version 4.0.
822
823`i386-*-esix'
824 It may be good idea to link with GNU malloc instead of the malloc
825 that comes with the system.
826
827`i386-ibm-aix'
e9a25f70
JL
828 You need to use GAS version 2.1 or later, and LD from GNU binutils
829 version 2.2 or later.
861bb6c1
JL
830
831`i386-sequent-bsd'
956d6950 832 Go to the Berkeley universe before compiling.
861bb6c1
JL
833
834`i386-sequent-ptx1*'
835 Sequent DYNIX/ptx 1.x.
836
837`i386-sequent-ptx2*'
838 Sequent DYNIX/ptx 2.x.
839
840`i386-sun-sunos4'
841 You may find that you need another version of GNU CC to begin
842 bootstrapping with, since the current version when built with the
843 system's own compiler seems to get an infinite loop compiling part
844 of `libgcc2.c'. GNU CC version 2 compiled with GNU CC (any
845 version) seems not to have this problem.
846
847 See *Note Sun Install::, for information on installing GNU CC on
848 Sun systems.
849
850`i[345]86-*-winnt3.5'
e9a25f70 851 This version requires a GAS that has not yet been released. Until
861bb6c1
JL
852 it is, you can get a prebuilt binary version via anonymous ftp from
853 `cs.washington.edu:pub/gnat' or `cs.nyu.edu:pub/gnat'. You must
854 also use the Microsoft header files from the Windows NT 3.5 SDK.
855 Find these on the CDROM in the `/mstools/h' directory dated
856 9/4/94. You must use a fixed version of Microsoft linker made
857 especially for NT 3.5, which is also is available on the NT 3.5
858 SDK CDROM. If you do not have this linker, can you also use the
859 linker from Visual C/C++ 1.0 or 2.0.
860
861 Installing GNU CC for NT builds a wrapper linker, called `ld.exe',
862 which mimics the behaviour of Unix `ld' in the specification of
863 libraries (`-L' and `-l'). `ld.exe' looks for both Unix and
864 Microsoft named libraries. For example, if you specify `-lfoo',
865 `ld.exe' will look first for `libfoo.a' and then for `foo.lib'.
866
867 You may install GNU CC for Windows NT in one of two ways,
868 depending on whether or not you have a Unix-like shell and various
869 Unix-like utilities.
870
871 1. If you do not have a Unix-like shell and few Unix-like
872 utilities, you will use a DOS style batch script called
873 `configure.bat'. Invoke it as `configure winnt' from an
874 MSDOS console window or from the program manager dialog box.
875 `configure.bat' assumes you have already installed and have
876 in your path a Unix-like `sed' program which is used to
877 create a working `Makefile' from `Makefile.in'.
878
879 `Makefile' uses the Microsoft Nmake program maintenance
880 utility and the Visual C/C++ V8.00 compiler to build GNU CC.
881 You need only have the utilities `sed' and `touch' to use
882 this installation method, which only automatically builds the
883 compiler itself. You must then examine what `fixinc.winnt'
884 does, edit the header files by hand and build `libgcc.a'
885 manually.
886
887 2. The second type of installation assumes you are running a
888 Unix-like shell, have a complete suite of Unix-like utilities
889 in your path, and have a previous version of GNU CC already
890 installed, either through building it via the above
891 installation method or acquiring a pre-built binary. In this
892 case, use the `configure' script in the normal fashion.
893
894`i860-intel-osf1'
895 This is the Paragon. If you have version 1.0 of the operating
896 system, you need to take special steps to build GNU CC due to
897 peculiarities of the system. Newer system versions have no
898 problem. See the section `Installation Problems' in the GNU CC
899 Manual.
900
901`*-lynx-lynxos'
902 LynxOS 2.2 and earlier comes with GNU CC 1.x already installed as
903 `/bin/gcc'. You should compile with this instead of `/bin/cc'.
904 You can tell GNU CC to use the GNU assembler and linker, by
905 specifying `--with-gnu-as --with-gnu-ld' when configuring. These
906 will produce COFF format object files and executables; otherwise
e9a25f70 907 GNU CC will use the installed tools, which produce `a.out' format
861bb6c1
JL
908 executables.
909
e9a25f70
JL
910`m32r-*-elf'
911 Mitsubishi M32R processor. This configuration is intended for
912 embedded systems.
913
861bb6c1
JL
914`m68000-hp-bsd'
915 HP 9000 series 200 running BSD. Note that the C compiler that
916 comes with this system cannot compile GNU CC; contact
917 `law@cs.utah.edu' to get binaries of GNU CC for bootstrapping.
918
919`m68k-altos'
920 Altos 3068. You must use the GNU assembler, linker and debugger.
921 Also, you must fix a kernel bug. Details in the file
922 `README.ALTOS'.
923
e9a25f70
JL
924`m68k-apple-aux'
925 Apple Macintosh running A/UX. You may configure GCC to use
926 either the system assembler and linker or the GNU assembler and
927 linker. You should use the GNU configuration if you can,
928 especially if you also want to use GNU C++. You enabled that
929 configuration with + the `--with-gnu-as' and `--with-gnu-ld'
930 options to `configure'.
931
932 Note the C compiler that comes with this system cannot compile GNU
933 CC. You can fine binaries of GNU CC for bootstrapping on
934 `jagubox.gsfc.nasa.gov'. You will also a patched version of
935 `/bin/ld' there that raises some of the arbitrary limits found in
936 the original.
937
861bb6c1
JL
938`m68k-att-sysv'
939 AT&T 3b1, a.k.a. 7300 PC. Special procedures are needed to
940 compile GNU CC with this machine's standard C compiler, due to
941 bugs in that compiler. You can bootstrap it more easily with
942 previous versions of GNU CC if you have them.
943
944 Installing GNU CC on the 3b1 is difficult if you do not already
945 have GNU CC running, due to bugs in the installed C compiler.
946 However, the following procedure might work. We are unable to
947 test it.
948
e9a25f70 949 1. Comment out the `#include "config.h"' line near the start of
861bb6c1
JL
950 `cccp.c' and do `make cpp'. This makes a preliminary version
951 of GNU cpp.
952
953 2. Save the old `/lib/cpp' and copy the preliminary GNU cpp to
954 that file name.
955
956 3. Undo your change in `cccp.c', or reinstall the original
957 version, and do `make cpp' again.
958
959 4. Copy this final version of GNU cpp into `/lib/cpp'.
960
961 5. Replace every occurrence of `obstack_free' in the file
962 `tree.c' with `_obstack_free'.
963
964 6. Run `make' to get the first-stage GNU CC.
965
966 7. Reinstall the original version of `/lib/cpp'.
967
968 8. Now you can compile GNU CC with itself and install it in the
969 normal fashion.
970
971`m68k-bull-sysv'
972 Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01. GNU
973 CC works either with native assembler or GNU assembler. You can use
974 GNU assembler with native coff generation by providing
975 `--with-gnu-as' to the configure script or use GNU assembler with
976 dbx-in-coff encapsulation by providing `--with-gnu-as --stabs'.
977 For any problem with native assembler or for availability of the
978 DPX/2 port of GAS, contact `F.Pierresteguy@frcl.bull.fr'.
979
980`m68k-crds-unox'
981 Use `configure unos' for building on Unos.
982
983 The Unos assembler is named `casm' instead of `as'. For some
984 strange reason linking `/bin/as' to `/bin/casm' changes the
985 behavior, and does not work. So, when installing GNU CC, you
986 should install the following script as `as' in the subdirectory
987 where the passes of GCC are installed:
988
989 #!/bin/sh
990 casm $*
991
992 The default Unos library is named `libunos.a' instead of `libc.a'.
993 To allow GNU CC to function, either change all references to
994 `-lc' in `gcc.c' to `-lunos' or link `/lib/libc.a' to
995 `/lib/libunos.a'.
996
997 When compiling GNU CC with the standard compiler, to overcome bugs
998 in the support of `alloca', do not use `-O' when making stage 2.
999 Then use the stage 2 compiler with `-O' to make the stage 3
1000 compiler. This compiler will have the same characteristics as the
1001 usual stage 2 compiler on other systems. Use it to make a stage 4
1002 compiler and compare that with stage 3 to verify proper
1003 compilation.
1004
1005 (Perhaps simply defining `ALLOCA' in `x-crds' as described in the
1006 comments there will make the above paragraph superfluous. Please
1007 inform us of whether this works.)
1008
1009 Unos uses memory segmentation instead of demand paging, so you
1010 will need a lot of memory. 5 Mb is barely enough if no other
1011 tasks are running. If linking `cc1' fails, try putting the object
1012 files into a library and linking from that library.
1013
1014`m68k-hp-hpux'
1015 HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 has a
1016 bug in the assembler that prevents compilation of GNU CC. To fix
1017 it, get patch PHCO_4484 from HP.
1018
1019 In addition, if you wish to use gas `--with-gnu-as' you must use
1020 gas version 2.1 or later, and you must use the GNU linker version
1021 2.1 or later. Earlier versions of gas relied upon a program which
1022 converted the gas output into the native HP/UX format, but that
1023 program has not been kept up to date. gdb does not understand
1024 that native HP/UX format, so you must use gas if you wish to use
1025 gdb.
1026
1027`m68k-sun'
1028 Sun 3. We do not provide a configuration file to use the Sun FPA
1029 by default, because programs that establish signal handlers for
1030 floating point traps inherently cannot work with the FPA.
1031
1032 See *Note Sun Install::, for information on installing GNU CC on
1033 Sun systems.
1034
1035`m88k-*-svr3'
1036 Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference port.
1037 These systems tend to use the Green Hills C, revision 1.8.5, as the
1038 standard C compiler. There are apparently bugs in this compiler
1039 that result in object files differences between stage 2 and stage
1040 3. If this happens, make the stage 4 compiler and compare it to
1041 the stage 3 compiler. If the stage 3 and stage 4 object files are
1042 identical, this suggests you encountered a problem with the
1043 standard C compiler; the stage 3 and 4 compilers may be usable.
1044
1045 It is best, however, to use an older version of GNU CC for
1046 bootstrapping if you have one.
1047
1048`m88k-*-dgux'
1049 Motorola m88k running DG/UX. To build 88open BCS native or cross
1050 compilers on DG/UX, specify the configuration name as
1051 `m88k-*-dguxbcs' and build in the 88open BCS software development
1052 environment. To build ELF native or cross compilers on DG/UX,
1053 specify `m88k-*-dgux' and build in the DG/UX ELF development
1054 environment. You set the software development environment by
1055 issuing `sde-target' command and specifying either `m88kbcs' or
1056 `m88kdguxelf' as the operand.
1057
1058 If you do not specify a configuration name, `configure' guesses the
1059 configuration based on the current software development
1060 environment.
1061
1062`m88k-tektronix-sysv3'
1063 Tektronix XD88 running UTekV 3.2e. Do not turn on optimization
1064 while building stage1 if you bootstrap with the buggy Green Hills
1065 compiler. Also, The bundled LAI System V NFS is buggy so if you
1066 build in an NFS mounted directory, start from a fresh reboot, or
1067 avoid NFS all together. Otherwise you may have trouble getting
1068 clean comparisons between stages.
1069
1070`mips-mips-bsd'
1071 MIPS machines running the MIPS operating system in BSD mode. It's
1072 possible that some old versions of the system lack the functions
1073 `memcpy', `memcmp', and `memset'. If your system lacks these, you
1074 must remove or undo the definition of `TARGET_MEM_FUNCTIONS' in
1075 `mips-bsd.h'.
1076
1077 The MIPS C compiler needs to be told to increase its table size
1078 for switch statements with the `-Wf,-XNg1500' option in order to
1079 compile `cp/parse.c'. If you use the `-O2' optimization option,
1080 you also need to use `-Olimit 3000'. Both of these options are
1081 automatically generated in the `Makefile' that the shell script
1082 `configure' builds. If you override the `CC' make variable and
1083 use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit
1084 3000'.
1085
1086`mips-mips-riscos*'
1087 The MIPS C compiler needs to be told to increase its table size
1088 for switch statements with the `-Wf,-XNg1500' option in order to
1089 compile `cp/parse.c'. If you use the `-O2' optimization option,
1090 you also need to use `-Olimit 3000'. Both of these options are
1091 automatically generated in the `Makefile' that the shell script
1092 `configure' builds. If you override the `CC' make variable and
1093 use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit
1094 3000'.
1095
1096 MIPS computers running RISC-OS can support four different
1097 personalities: default, BSD 4.3, System V.3, and System V.4 (older
1098 versions of RISC-OS don't support V.4). To configure GCC for
1099 these platforms use the following configurations:
1100
1101 `mips-mips-riscos`rev''
1102 Default configuration for RISC-OS, revision `rev'.
1103
1104 `mips-mips-riscos`rev'bsd'
1105 BSD 4.3 configuration for RISC-OS, revision `rev'.
1106
1107 `mips-mips-riscos`rev'sysv4'
1108 System V.4 configuration for RISC-OS, revision `rev'.
1109
1110 `mips-mips-riscos`rev'sysv'
1111 System V.3 configuration for RISC-OS, revision `rev'.
1112
1113 The revision `rev' mentioned above is the revision of RISC-OS to
1114 use. You must reconfigure GCC when going from a RISC-OS revision
1115 4 to RISC-OS revision 5. This has the effect of avoiding a linker
1116 bug.
1117
1118`mips-sgi-*'
1119 In order to compile GCC on an SGI running IRIX 4, the "c.hdr.lib"
1120 option must be installed from the CD-ROM supplied from Silicon
1121 Graphics. This is found on the 2nd CD in release 4.0.1.
1122
1123 In order to compile GCC on an SGI running IRIX 5, the
1124 "compiler_dev.hdr" subsystem must be installed from the IDO CD-ROM
1125 supplied by Silicon Graphics.
1126
1127 `make compare' may fail on version 5 of IRIX unless you add
1128 `-save-temps' to `CFLAGS'. On these systems, the name of the
1129 assembler input file is stored in the object file, and that makes
1130 comparison fail if it differs between the `stage1' and `stage2'
1131 compilations. The option `-save-temps' forces a fixed name to be
1132 used for the assembler input file, instead of a randomly chosen
1133 name in `/tmp'. Do not add `-save-temps' unless the comparisons
1134 fail without that option. If you do you `-save-temps', you will
1135 have to manually delete the `.i' and `.s' files after each series
1136 of compilations.
1137
1138 The MIPS C compiler needs to be told to increase its table size
1139 for switch statements with the `-Wf,-XNg1500' option in order to
1140 compile `cp/parse.c'. If you use the `-O2' optimization option,
1141 you also need to use `-Olimit 3000'. Both of these options are
1142 automatically generated in the `Makefile' that the shell script
1143 `configure' builds. If you override the `CC' make variable and
1144 use the MIPS compilers, you may need to add `-Wf,-XNg1500 -Olimit
1145 3000'.
1146
1147 On Irix version 4.0.5F, and perhaps on some other versions as well,
1148 there is an assembler bug that reorders instructions incorrectly.
1149 To work around it, specify the target configuration
1150 `mips-sgi-irix4loser'. This configuration inhibits assembler
1151 optimization.
1152
1153 In a compiler configured with target `mips-sgi-irix4', you can turn
1154 off assembler optimization by using the `-noasmopt' option. This
1155 compiler option passes the option `-O0' to the assembler, to
1156 inhibit reordering.
1157
1158 The `-noasmopt' option can be useful for testing whether a problem
1159 is due to erroneous assembler reordering. Even if a problem does
1160 not go away with `-noasmopt', it may still be due to assembler
1161 reordering--perhaps GNU CC itself was miscompiled as a result.
1162
1163 To enable debugging under Irix 5, you must use GNU as 2.5 or later,
1164 and use the `--with-gnu-as' configure option when configuring gcc.
1165 GNU as is distributed as part of the binutils package.
1166
1167`mips-sony-sysv'
1168 Sony MIPS NEWS. This works in NEWSOS 5.0.1, but not in 5.0.2
1169 (which uses ELF instead of COFF). Support for 5.0.2 will probably
1170 be provided soon by volunteers. In particular, the linker does
1171 not like the code generated by GCC when shared libraries are
1172 linked in.
1173
1174`ns32k-encore'
1175 Encore ns32000 system. Encore systems are supported only under
1176 BSD.
1177
1178`ns32k-*-genix'
1179 National Semiconductor ns32000 system. Genix has bugs in `alloca'
1180 and `malloc'; you must get the compiled versions of these from GNU
1181 Emacs.
1182
1183`ns32k-sequent'
956d6950 1184 Go to the Berkeley universe before compiling.
861bb6c1
JL
1185
1186`ns32k-utek'
1187 UTEK ns32000 system ("merlin"). The C compiler that comes with
1188 this system cannot compile GNU CC; contact `tektronix!reed!mason'
1189 to get binaries of GNU CC for bootstrapping.
1190
1191`romp-*-aos'
1192`romp-*-mach'
1193 The only operating systems supported for the IBM RT PC are AOS and
1194 MACH. GNU CC does not support AIX running on the RT. We
1195 recommend you compile GNU CC with an earlier version of itself; if
1196 you compile GNU CC with `hc', the Metaware compiler, it will work,
1197 but you will get mismatches between the stage 2 and stage 3
1198 compilers in various files. These errors are minor differences in
1199 some floating-point constants and can be safely ignored; the stage
1200 3 compiler is correct.
1201
1202`rs6000-*-aix'
1203`powerpc-*-aix'
1204 Various early versions of each release of the IBM XLC compiler
1205 will not bootstrap GNU CC. Symptoms include differences between
1206 the stage2 and stage3 object files, and errors when compiling
1207 `libgcc.a' or `enquire'. Known problematic releases include:
1208 xlc-1.2.1.8, xlc-1.3.0.0 (distributed with AIX 3.2.5), and
1209 xlc-1.3.0.19. Both xlc-1.2.1.28 and xlc-1.3.0.24 (PTF 432238) are
1210 known to produce working versions of GNU CC, but most other recent
1211 releases correctly bootstrap GNU CC. Also, releases of AIX prior
1212 to AIX 3.2.4 include a version of the IBM assembler which does not
1213 accept debugging directives: assembler updates are available as
1214 PTFs. Also, if you are using AIX 3.2.5 or greater and the GNU
1215 assembler, you must have a version modified after October 16th,
1216 1995 in order for the GNU C compiler to build. See the file
1217 `README.RS6000' for more details on of these problems.
1218
1219 GNU CC does not yet support the 64-bit PowerPC instructions.
1220
1221 Objective C does not work on this architecture because it makes
1222 assumptions that are incompatible with the calling conventions.
1223
1224 AIX on the RS/6000 provides support (NLS) for environments outside
1225 of the United States. Compilers and assemblers use NLS to support
1226 locale-specific representations of various objects including
1227 floating-point numbers ("." vs "," for separating decimal
1228 fractions). There have been problems reported where the library
1229 linked with GNU CC does not produce the same floating-point
1230 formats that the assembler accepts. If you have this problem, set
1231 the LANG environment variable to "C" or "En_US".
1232
1233 Due to changes in the way that GNU CC invokes the binder (linker)
1234 for AIX 4.1, you may now receive warnings of duplicate symbols
1235 from the link step that were not reported before. The assembly
1236 files generated by GNU CC for AIX have always included multiple
1237 symbol definitions for certain global variable and function
1238 declarations in the original program. The warnings should not
1239 prevent the linker from producing a correct library or runnable
1240 executable.
1241
e9a25f70
JL
1242 By default, AIX 4.1 produces code that can be used on either Power
1243 or PowerPC processors.
1244
1245 You can specify a default version for the `-mcpu='CPU_TYPE switch
1246 by using the configure option `--with-cpu-'CPU_TYPE.
1247
861bb6c1
JL
1248`powerpc-*-elf'
1249`powerpc-*-sysv4'
1250 PowerPC system in big endian mode, running System V.4.
1251
e9a25f70
JL
1252 You can specify a default version for the `-mcpu='CPU_TYPE switch
1253 by using the configure option `--with-cpu-'CPU_TYPE.
1254
1255`powerpc-*-linux-gnu'
1256 PowerPC system in big endian mode, running the Linux-based GNU
1257 system.
1258
1259 You can specify a default version for the `-mcpu='CPU_TYPE switch
1260 by using the configure option `--with-cpu-'CPU_TYPE.
861bb6c1
JL
1261
1262`powerpc-*-eabiaix'
1263 Embedded PowerPC system in big endian mode with -mcall-aix
e9a25f70
JL
1264 selected as the default.
1265
1266 You can specify a default version for the `-mcpu='CPU_TYPE switch
1267 by using the configure option `--with-cpu-'CPU_TYPE.
861bb6c1
JL
1268
1269`powerpc-*-eabisim'
1270 Embedded PowerPC system in big endian mode for use in running
e9a25f70
JL
1271 under the PSIM simulator.
1272
1273 You can specify a default version for the `-mcpu='CPU_TYPE switch
1274 by using the configure option `--with-cpu-'CPU_TYPE.
861bb6c1
JL
1275
1276`powerpc-*-eabi'
1277 Embedded PowerPC system in big endian mode.
1278
e9a25f70
JL
1279 You can specify a default version for the `-mcpu='CPU_TYPE switch
1280 by using the configure option `--with-cpu-'CPU_TYPE.
861bb6c1
JL
1281
1282`powerpcle-*-elf'
1283`powerpcle-*-sysv4'
1284 PowerPC system in little endian mode, running System V.4.
1285
e9a25f70
JL
1286 You can specify a default version for the `-mcpu='CPU_TYPE switch
1287 by using the configure option `--with-cpu-'CPU_TYPE.
861bb6c1 1288
e9a25f70
JL
1289`powerpcle-*-solaris2*'
1290 PowerPC system in little endian mode, running Solaris 2.5.1 or
1291 higher.
861bb6c1 1292
e9a25f70
JL
1293 You can specify a default version for the `-mcpu='CPU_TYPE switch
1294 by using the configure option `--with-cpu-'CPU_TYPE. Beta
1295 versions of the Sun 4.0 compiler do not seem to be able to build
1296 GNU CC correctly. There are also problems with the host assembler
1297 and linker that are fixed by using the GNU versions of these tools.
861bb6c1
JL
1298
1299`powerpcle-*-eabisim'
1300 Embedded PowerPC system in little endian mode for use in running
1301 under the PSIM simulator.
1302
861bb6c1
JL
1303`powerpcle-*-eabi'
1304 Embedded PowerPC system in little endian mode.
1305
e9a25f70
JL
1306 You can specify a default version for the `-mcpu='CPU_TYPE switch
1307 by using the configure option `--with-cpu-'CPU_TYPE.
1308
1309`powerpcle-*-winnt'
1310`powerpcle-*-pe'
1311 PowerPC system in little endian mode running Windows NT.
1312
1313 You can specify a default version for the `-mcpu='CPU_TYPE switch
1314 by using the configure option `--with-cpu-'CPU_TYPE.
861bb6c1
JL
1315
1316`vax-dec-ultrix'
1317 Don't try compiling with Vax C (`vcc'). It produces incorrect code
1318 in some cases (for example, when `alloca' is used).
1319
1320 Meanwhile, compiling `cp/parse.c' with pcc does not work because of
1321 an internal table size limitation in that compiler. To avoid this
1322 problem, compile just the GNU C compiler first, and use it to
1323 recompile building all the languages that you want to run.
1324
1325`sparc-sun-*'
1326 See *Note Sun Install::, for information on installing GNU CC on
1327 Sun systems.
1328
1329`vax-dec-vms'
1330 See *Note VMS Install::, for details on how to install GNU CC on
1331 VMS.
1332
1333`we32k-*-*'
1334 These computers are also known as the 3b2, 3b5, 3b20 and other
1335 similar names. (However, the 3b1 is actually a 68000; see *Note
1336 Configurations::.)
1337
1338 Don't use `-g' when compiling with the system's compiler. The
1339 system's linker seems to be unable to handle such a large program
1340 with debugging information.
1341
1342 The system's compiler runs out of capacity when compiling `stmt.c'
1343 in GNU CC. You can work around this by building `cpp' in GNU CC
1344 first, then use that instead of the system's preprocessor with the
1345 system's C compiler to compile `stmt.c'. Here is how:
1346
1347 mv /lib/cpp /lib/cpp.att
1348 cp cpp /lib/cpp.gnu
1349 echo '/lib/cpp.gnu -traditional ${1+"$@"}' > /lib/cpp
1350 chmod +x /lib/cpp
1351
1352 The system's compiler produces bad code for some of the GNU CC
1353 optimization files. So you must build the stage 2 compiler without
1354 optimization. Then build a stage 3 compiler with optimization.
1355 That executable should work. Here are the necessary commands:
1356
1357 make LANGUAGES=c CC=stage1/xgcc CFLAGS="-Bstage1/ -g"
1358 make stage2
1359 make CC=stage2/xgcc CFLAGS="-Bstage2/ -g -O"
1360
1361 You may need to raise the ULIMIT setting to build a C++ compiler,
1362 as the file `cc1plus' is larger than one megabyte.
1363
1364Compilation in a Separate Directory
1365===================================
1366
1367 If you wish to build the object files and executables in a directory
1368other than the one containing the source files, here is what you must
1369do differently:
1370
1371 1. Make sure you have a version of Make that supports the `VPATH'
1372 feature. (GNU Make supports it, as do Make versions on most BSD
1373 systems.)
1374
1375 2. If you have ever run `configure' in the source directory, you must
1376 undo the configuration. Do this by running:
1377
1378 make distclean
1379
1380 3. Go to the directory in which you want to build the compiler before
1381 running `configure':
1382
1383 mkdir gcc-sun3
1384 cd gcc-sun3
1385
1386 On systems that do not support symbolic links, this directory must
1387 be on the same file system as the source code directory.
1388
1389 4. Specify where to find `configure' when you run it:
1390
1391 ../gcc/configure ...
1392
1393 This also tells `configure' where to find the compiler sources;
1394 `configure' takes the directory from the file name that was used to
1395 invoke it. But if you want to be sure, you can specify the source
1396 directory with the `--srcdir' option, like this:
1397
1398 ../gcc/configure --srcdir=../gcc OTHER OPTIONS
1399
1400 The directory you specify with `--srcdir' need not be the same as
1401 the one that `configure' is found in.
1402
1403 Now, you can run `make' in that directory. You need not repeat the
1404configuration steps shown above, when ordinary source files change. You
1405must, however, run `configure' again when the configuration files
1406change, if your system does not support symbolic links.
1407
1408Building and Installing a Cross-Compiler
1409========================================
1410
1411 GNU CC can function as a cross-compiler for many machines, but not
1412all.
1413
1414 * Cross-compilers for the Mips as target using the Mips assembler
1415 currently do not work, because the auxiliary programs
1416 `mips-tdump.c' and `mips-tfile.c' can't be compiled on anything
1417 but a Mips. It does work to cross compile for a Mips if you use
1418 the GNU assembler and linker.
1419
1420 * Cross-compilers between machines with different floating point
1421 formats have not all been made to work. GNU CC now has a floating
1422 point emulator with which these can work, but each target machine
1423 description needs to be updated to take advantage of it.
1424
1425 * Cross-compilation between machines of different word sizes is
1426 somewhat problematic and sometimes does not work.
1427
1428 Since GNU CC generates assembler code, you probably need a
1429cross-assembler that GNU CC can run, in order to produce object files.
1430If you want to link on other than the target machine, you need a
1431cross-linker as well. You also need header files and libraries suitable
1432for the target machine that you can install on the host machine.
1433
1434Steps of Cross-Compilation
1435--------------------------
1436
1437 To compile and run a program using a cross-compiler involves several
1438steps:
1439
1440 * Run the cross-compiler on the host machine to produce assembler
1441 files for the target machine. This requires header files for the
1442 target machine.
1443
1444 * Assemble the files produced by the cross-compiler. You can do this
1445 either with an assembler on the target machine, or with a
1446 cross-assembler on the host machine.
1447
1448 * Link those files to make an executable. You can do this either
1449 with a linker on the target machine, or with a cross-linker on the
1450 host machine. Whichever machine you use, you need libraries and
1451 certain startup files (typically `crt....o') for the target
1452 machine.
1453
1454 It is most convenient to do all of these steps on the same host
1455machine, since then you can do it all with a single invocation of GNU
1456CC. This requires a suitable cross-assembler and cross-linker. For
1457some targets, the GNU assembler and linker are available.
1458
1459Configuring a Cross-Compiler
1460----------------------------
1461
1462 To build GNU CC as a cross-compiler, you start out by running
1463`configure'. Use the `--target=TARGET' to specify the target type. If
1464`configure' was unable to correctly identify the system you are running
1465on, also specify the `--build=BUILD' option. For example, here is how
1466to configure for a cross-compiler that produces code for an HP 68030
1467system running BSD on a system that `configure' can correctly identify:
1468
1469 ./configure --target=m68k-hp-bsd4.3
1470
1471Tools and Libraries for a Cross-Compiler
1472----------------------------------------
1473
1474 If you have a cross-assembler and cross-linker available, you should
1475install them now. Put them in the directory `/usr/local/TARGET/bin'.
1476Here is a table of the tools you should put in this directory:
1477
1478`as'
1479 This should be the cross-assembler.
1480
1481`ld'
1482 This should be the cross-linker.
1483
1484`ar'
1485 This should be the cross-archiver: a program which can manipulate
1486 archive files (linker libraries) in the target machine's format.
1487
1488`ranlib'
1489 This should be a program to construct a symbol table in an archive
1490 file.
1491
1492 The installation of GNU CC will find these programs in that
1493directory, and copy or link them to the proper place to for the
1494cross-compiler to find them when run later.
1495
1496 The easiest way to provide these files is to build the Binutils
1497package and GAS. Configure them with the same `--host' and `--target'
1498options that you use for configuring GNU CC, then build and install
1499them. They install their executables automatically into the proper
1500directory. Alas, they do not support all the targets that GNU CC
1501supports.
1502
1503 If you want to install libraries to use with the cross-compiler,
1504such as a standard C library, put them in the directory
e9a25f70
JL
1505`/usr/local/TARGET/lib'; installation of GNU CC copies all the files in
1506that subdirectory into the proper place for GNU CC to find them and
1507link with them. Here's an example of copying some libraries from a
1508target machine:
861bb6c1
JL
1509
1510 ftp TARGET-MACHINE
1511 lcd /usr/local/TARGET/lib
1512 cd /lib
1513 get libc.a
1514 cd /usr/lib
1515 get libg.a
1516 get libm.a
1517 quit
1518
1519The precise set of libraries you'll need, and their locations on the
1520target machine, vary depending on its operating system.
1521
1522 Many targets require "start files" such as `crt0.o' and `crtn.o'
1523which are linked into each executable; these too should be placed in
1524`/usr/local/TARGET/lib'. There may be several alternatives for
1525`crt0.o', for use with profiling or other compilation options. Check
1526your target's definition of `STARTFILE_SPEC' to find out what start
1527files it uses. Here's an example of copying these files from a target
1528machine:
1529
1530 ftp TARGET-MACHINE
1531 lcd /usr/local/TARGET/lib
1532 prompt
1533 cd /lib
1534 mget *crt*.o
1535 cd /usr/lib
1536 mget *crt*.o
1537 quit
1538
1539`libgcc.a' and Cross-Compilers
1540------------------------------
1541
1542 Code compiled by GNU CC uses certain runtime support functions
1543implicitly. Some of these functions can be compiled successfully with
1544GNU CC itself, but a few cannot be. These problem functions are in the
1545source file `libgcc1.c'; the library made from them is called
1546`libgcc1.a'.
1547
1548 When you build a native compiler, these functions are compiled with
1549some other compiler-the one that you use for bootstrapping GNU CC.
1550Presumably it knows how to open code these operations, or else knows how
1551to call the run-time emulation facilities that the machine comes with.
1552But this approach doesn't work for building a cross-compiler. The
1553compiler that you use for building knows about the host system, not the
1554target system.
1555
1556 So, when you build a cross-compiler you have to supply a suitable
1557library `libgcc1.a' that does the job it is expected to do.
1558
1559 To compile `libgcc1.c' with the cross-compiler itself does not work.
1560The functions in this file are supposed to implement arithmetic
1561operations that GNU CC does not know how to open code for your target
1562machine. If these functions are compiled with GNU CC itself, they will
1563compile into infinite recursion.
1564
1565 On any given target, most of these functions are not needed. If GNU
1566CC can open code an arithmetic operation, it will not call these
1567functions to perform the operation. It is possible that on your target
1568machine, none of these functions is needed. If so, you can supply an
1569empty library as `libgcc1.a'.
1570
1571 Many targets need library support only for multiplication and
1572division. If you are linking with a library that contains functions for
1573multiplication and division, you can tell GNU CC to call them directly
1574by defining the macros `MULSI3_LIBCALL', and the like. These macros
1575need to be defined in the target description macro file. For some
1576targets, they are defined already. This may be sufficient to avoid the
1577need for libgcc1.a; if so, you can supply an empty library.
1578
1579 Some targets do not have floating point instructions; they need other
1580functions in `libgcc1.a', which do floating arithmetic. Recent
1581versions of GNU CC have a file which emulates floating point. With a
1582certain amount of work, you should be able to construct a floating
1583point emulator that can be used as `libgcc1.a'. Perhaps future
1584versions will contain code to do this automatically and conveniently.
1585That depends on whether someone wants to implement it.
1586
1587 Some embedded targets come with all the necessary `libgcc1.a'
1588routines written in C or assembler. These targets build `libgcc1.a'
1589automatically and you do not need to do anything special for them.
1590Other embedded targets do not need any `libgcc1.a' routines since all
1591the necessary operations are supported by the hardware.
1592
1593 If your target system has another C compiler, you can configure GNU
1594CC as a native compiler on that machine, build just `libgcc1.a' with
1595`make libgcc1.a' on that machine, and use the resulting file with the
1596cross-compiler. To do this, execute the following on the target
1597machine:
1598
1599 cd TARGET-BUILD-DIR
1600 ./configure --host=sparc --target=sun3
1601 make libgcc1.a
1602
1603And then this on the host machine:
1604
1605 ftp TARGET-MACHINE
1606 binary
1607 cd TARGET-BUILD-DIR
1608 get libgcc1.a
1609 quit
1610
1611 Another way to provide the functions you need in `libgcc1.a' is to
1612define the appropriate `perform_...' macros for those functions. If
1613these definitions do not use the C arithmetic operators that they are
1614meant to implement, you should be able to compile them with the
1615cross-compiler you are building. (If these definitions already exist
1616for your target file, then you are all set.)
1617
1618 To build `libgcc1.a' using the perform macros, use
1619`LIBGCC1=libgcc1.a OLDCC=./xgcc' when building the compiler.
1620Otherwise, you should place your replacement library under the name
1621`libgcc1.a' in the directory in which you will build the
1622cross-compiler, before you run `make'.
1623
1624Cross-Compilers and Header Files
1625--------------------------------
1626
1627 If you are cross-compiling a standalone program or a program for an
1628embedded system, then you may not need any header files except the few
1629that are part of GNU CC (and those of your program). However, if you
1630intend to link your program with a standard C library such as `libc.a',
1631then you probably need to compile with the header files that go with
1632the library you use.
1633
1634 The GNU C compiler does not come with these files, because (1) they
1635are system-specific, and (2) they belong in a C library, not in a
1636compiler.
1637
1638 If the GNU C library supports your target machine, then you can get
1639the header files from there (assuming you actually use the GNU library
1640when you link your program).
1641
1642 If your target machine comes with a C compiler, it probably comes
1643with suitable header files also. If you make these files accessible
1644from the host machine, the cross-compiler can use them also.
1645
1646 Otherwise, you're on your own in finding header files to use when
1647cross-compiling.
1648
e9a25f70 1649 When you have found suitable header files, put them in the directory
861bb6c1
JL
1650`/usr/local/TARGET/include', before building the cross compiler. Then
1651installation will run fixincludes properly and install the corrected
1652versions of the header files where the compiler will use them.
1653
1654 Provide the header files before you build the cross-compiler, because
1655the build stage actually runs the cross-compiler to produce parts of
1656`libgcc.a'. (These are the parts that *can* be compiled with GNU CC.)
1657Some of them need suitable header files.
1658
1659 Here's an example showing how to copy the header files from a target
1660machine. On the target machine, do this:
1661
1662 (cd /usr/include; tar cf - .) > tarfile
1663
1664 Then, on the host machine, do this:
1665
1666 ftp TARGET-MACHINE
1667 lcd /usr/local/TARGET/include
1668 get tarfile
1669 quit
1670 tar xf tarfile
1671
1672Actually Building the Cross-Compiler
1673------------------------------------
1674
1675 Now you can proceed just as for compiling a single-machine compiler
1676through the step of building stage 1. If you have not provided some
1677sort of `libgcc1.a', then compilation will give up at the point where
1678it needs that file, printing a suitable error message. If you do
1679provide `libgcc1.a', then building the compiler will automatically
1680compile and link a test program called `libgcc1-test'; if you get
1681errors in the linking, it means that not all of the necessary routines
1682in `libgcc1.a' are available.
1683
1684 You must provide the header file `float.h'. One way to do this is
1685to compile `enquire' and run it on your target machine. The job of
1686`enquire' is to run on the target machine and figure out by experiment
1687the nature of its floating point representation. `enquire' records its
1688findings in the header file `float.h'. If you can't produce this file
1689by running `enquire' on the target machine, then you will need to come
1690up with a suitable `float.h' in some other way (or else, avoid using it
1691in your programs).
1692
1693 Do not try to build stage 2 for a cross-compiler. It doesn't work to
1694rebuild GNU CC as a cross-compiler using the cross-compiler, because
1695that would produce a program that runs on the target machine, not on the
1696host. For example, if you compile a 386-to-68030 cross-compiler with
1697itself, the result will not be right either for the 386 (because it was
1698compiled into 68030 code) or for the 68030 (because it was configured
1699for a 386 as the host). If you want to compile GNU CC into 68030 code,
1700whether you compile it on a 68030 or with a cross-compiler on a 386, you
1701must specify a 68030 as the host when you configure it.
1702
1703 To install the cross-compiler, use `make install', as usual.
1704
1705Installing GNU CC on the Sun
1706============================
1707
1708 On Solaris (version 2.1), do not use the linker or other tools in
1709`/usr/ucb' to build GNU CC. Use `/usr/ccs/bin'.
1710
1711 Make sure the environment variable `FLOAT_OPTION' is not set when
1712you compile `libgcc.a'. If this option were set to `f68881' when
1713`libgcc.a' is compiled, the resulting code would demand to be linked
1714with a special startup file and would not link properly without special
1715pains.
1716
1717 There is a bug in `alloca' in certain versions of the Sun library.
1718To avoid this bug, install the binaries of GNU CC that were compiled by
1719GNU CC. They use `alloca' as a built-in function and never the one in
1720the library.
1721
1722 Some versions of the Sun compiler crash when compiling GNU CC. The
1723problem is a segmentation fault in cpp. This problem seems to be due to
1724the bulk of data in the environment variables. You may be able to avoid
1725it by using the following command to compile GNU CC with Sun CC:
1726
1727 make CC="TERMCAP=x OBJS=x LIBFUNCS=x STAGESTUFF=x cc"
1728
e9a25f70
JL
1729 SunOS 4.1.3 and 4.1.3_U1 have bugs that can cause intermittent core
1730dumps when compiling GNU CC. A common symptom is an internal compiler
1731error which does not recur if you run it again. To fix the problem,
1732install Sun recommended patch 100726 (for SunOS 4.1.3) or 101508 (for
1733SunOS 4.1.3_U1), or upgrade to a later SunOS release.
1734
861bb6c1
JL
1735Installing GNU CC on VMS
1736========================
1737
1738 The VMS version of GNU CC is distributed in a backup saveset
1739containing both source code and precompiled binaries.
1740
1741 To install the `gcc' command so you can use the compiler easily, in
1742the same manner as you use the VMS C compiler, you must install the VMS
1743CLD file for GNU CC as follows:
1744
1745 1. Define the VMS logical names `GNU_CC' and `GNU_CC_INCLUDE' to
1746 point to the directories where the GNU CC executables
1747 (`gcc-cpp.exe', `gcc-cc1.exe', etc.) and the C include files are
1748 kept respectively. This should be done with the commands:
1749
1750 $ assign /system /translation=concealed -
1751 disk:[gcc.] gnu_cc
1752 $ assign /system /translation=concealed -
1753 disk:[gcc.include.] gnu_cc_include
1754
1755 with the appropriate disk and directory names. These commands can
1756 be placed in your system startup file so they will be executed
1757 whenever the machine is rebooted. You may, if you choose, do this
1758 via the `GCC_INSTALL.COM' script in the `[GCC]' directory.
1759
1760 2. Install the `GCC' command with the command line:
1761
1762 $ set command /table=sys$common:[syslib]dcltables -
1763 /output=sys$common:[syslib]dcltables gnu_cc:[000000]gcc
1764 $ install replace sys$common:[syslib]dcltables
1765
1766 3. To install the help file, do the following:
1767
1768 $ library/help sys$library:helplib.hlb gcc.hlp
1769
1770 Now you can invoke the compiler with a command like `gcc /verbose
1771 file.c', which is equivalent to the command `gcc -v -c file.c' in
1772 Unix.
1773
1774 If you wish to use GNU C++ you must first install GNU CC, and then
1775perform the following steps:
1776
1777 1. Define the VMS logical name `GNU_GXX_INCLUDE' to point to the
1778 directory where the preprocessor will search for the C++ header
1779 files. This can be done with the command:
1780
1781 $ assign /system /translation=concealed -
1782 disk:[gcc.gxx_include.] gnu_gxx_include
1783
1784 with the appropriate disk and directory name. If you are going to
1785 be using libg++, this is where the libg++ install procedure will
1786 install the libg++ header files.
1787
1788 2. Obtain the file `gcc-cc1plus.exe', and place this in the same
1789 directory that `gcc-cc1.exe' is kept.
1790
1791 The GNU C++ compiler can be invoked with a command like `gcc /plus
1792 /verbose file.cc', which is equivalent to the command `g++ -v -c
1793 file.cc' in Unix.
1794
1795 We try to put corresponding binaries and sources on the VMS
1796distribution tape. But sometimes the binaries will be from an older
1797version than the sources, because we don't always have time to update
1798them. (Use the `/version' option to determine the version number of
1799the binaries and compare it with the source file `version.c' to tell
1800whether this is so.) In this case, you should use the binaries you get
1801to recompile the sources. If you must recompile, here is how:
1802
1803 1. Execute the command procedure `vmsconfig.com' to set up the files
1804 `tm.h', `config.h', `aux-output.c', and `md.', and to create files
1805 `tconfig.h' and `hconfig.h'. This procedure also creates several
1806 linker option files used by `make-cc1.com' and a data file used by
1807 `make-l2.com'.
1808
1809 $ @vmsconfig.com
1810
1811 2. Setup the logical names and command tables as defined above. In
1812 addition, define the VMS logical name `GNU_BISON' to point at the
1813 to the directories where the Bison executable is kept. This
1814 should be done with the command:
1815
1816 $ assign /system /translation=concealed -
1817 disk:[bison.] gnu_bison
1818
1819 You may, if you choose, use the `INSTALL_BISON.COM' script in the
1820 `[BISON]' directory.
1821
1822 3. Install the `BISON' command with the command line:
1823
1824 $ set command /table=sys$common:[syslib]dcltables -
1825 /output=sys$common:[syslib]dcltables -
1826 gnu_bison:[000000]bison
1827 $ install replace sys$common:[syslib]dcltables
1828
1829 4. Type `@make-gcc' to recompile everything (alternatively, submit
1830 the file `make-gcc.com' to a batch queue). If you wish to build
1831 the GNU C++ compiler as well as the GNU CC compiler, you must
1832 first edit `make-gcc.com' and follow the instructions that appear
1833 in the comments.
1834
1835 5. In order to use GCC, you need a library of functions which GCC
1836 compiled code will call to perform certain tasks, and these
1837 functions are defined in the file `libgcc2.c'. To compile this
1838 you should use the command procedure `make-l2.com', which will
1839 generate the library `libgcc2.olb'. `libgcc2.olb' should be built
1840 using the compiler built from the same distribution that
1841 `libgcc2.c' came from, and `make-gcc.com' will automatically do
1842 all of this for you.
1843
1844 To install the library, use the following commands:
1845
1846 $ library gnu_cc:[000000]gcclib/delete=(new,eprintf)
1847 $ library gnu_cc:[000000]gcclib/delete=L_*
1848 $ library libgcc2/extract=*/output=libgcc2.obj
1849 $ library gnu_cc:[000000]gcclib libgcc2.obj
1850
1851 The first command simply removes old modules that will be replaced
1852 with modules from `libgcc2' under different module names. The
1853 modules `new' and `eprintf' may not actually be present in your
1854 `gcclib.olb'--if the VMS librarian complains about those modules
1855 not being present, simply ignore the message and continue on with
1856 the next command. The second command removes the modules that
1857 came from the previous version of the library `libgcc2.c'.
1858
1859 Whenever you update the compiler on your system, you should also
1860 update the library with the above procedure.
1861
1862 6. You may wish to build GCC in such a way that no files are written
1863 to the directory where the source files reside. An example would
1864 be the when the source files are on a read-only disk. In these
1865 cases, execute the following DCL commands (substituting your
1866 actual path names):
1867
1868 $ assign dua0:[gcc.build_dir.]/translation=concealed, -
1869 dua1:[gcc.source_dir.]/translation=concealed gcc_build
1870 $ set default gcc_build:[000000]
1871
1872 where the directory `dua1:[gcc.source_dir]' contains the source
1873 code, and the directory `dua0:[gcc.build_dir]' is meant to contain
1874 all of the generated object files and executables. Once you have
1875 done this, you can proceed building GCC as described above. (Keep
1876 in mind that `gcc_build' is a rooted logical name, and thus the
1877 device names in each element of the search list must be an actual
1878 physical device name rather than another rooted logical name).
1879
1880 7. *If you are building GNU CC with a previous version of GNU CC, you
1881 also should check to see that you have the newest version of the
1882 assembler*. In particular, GNU CC version 2 treats global constant
1883 variables slightly differently from GNU CC version 1, and GAS
1884 version 1.38.1 does not have the patches required to work with GCC
1885 version 2. If you use GAS 1.38.1, then `extern const' variables
1886 will not have the read-only bit set, and the linker will generate
1887 warning messages about mismatched psect attributes for these
1888 variables. These warning messages are merely a nuisance, and can
1889 safely be ignored.
1890
1891 If you are compiling with a version of GNU CC older than 1.33,
1892 specify `/DEFINE=("inline=")' as an option in all the
1893 compilations. This requires editing all the `gcc' commands in
1894 `make-cc1.com'. (The older versions had problems supporting
1895 `inline'.) Once you have a working 1.33 or newer GNU CC, you can
1896 change this file back.
1897
1898 8. If you want to build GNU CC with the VAX C compiler, you will need
1899 to make minor changes in `make-cccp.com' and `make-cc1.com' to
1900 choose alternate definitions of `CC', `CFLAGS', and `LIBS'. See
1901 comments in those files. However, you must also have a working
1902 version of the GNU assembler (GNU as, aka GAS) as it is used as
1903 the back-end for GNU CC to produce binary object modules and is
1904 not included in the GNU CC sources. GAS is also needed to compile
1905 `libgcc2' in order to build `gcclib' (see above); `make-l2.com'
1906 expects to be able to find it operational in
1907 `gnu_cc:[000000]gnu-as.exe'.
1908
1909 To use GNU CC on VMS, you need the VMS driver programs `gcc.exe',
1910 `gcc.com', and `gcc.cld'. They are distributed with the VMS
1911 binaries (`gcc-vms') rather than the GNU CC sources. GAS is also
1912 included in `gcc-vms', as is Bison.
1913
1914 Once you have successfully built GNU CC with VAX C, you should use
1915 the resulting compiler to rebuild itself. Before doing this, be
1916 sure to restore the `CC', `CFLAGS', and `LIBS' definitions in
1917 `make-cccp.com' and `make-cc1.com'. The second generation
1918 compiler will be able to take advantage of many optimizations that
1919 must be suppressed when building with other compilers.
1920
1921 Under previous versions of GNU CC, the generated code would
1922occasionally give strange results when linked with the sharable
1923`VAXCRTL' library. Now this should work.
1924
1925 Even with this version, however, GNU CC itself should not be linked
1926with the sharable `VAXCRTL'. The version of `qsort' in `VAXCRTL' has a
1927bug (known to be present in VMS versions V4.6 through V5.5) which
1928causes the compiler to fail.
1929
1930 The executables are generated by `make-cc1.com' and `make-cccp.com'
1931use the object library version of `VAXCRTL' in order to make use of the
1932`qsort' routine in `gcclib.olb'. If you wish to link the compiler
1933executables with the shareable image version of `VAXCRTL', you should
1934edit the file `tm.h' (created by `vmsconfig.com') to define the macro
1935`QSORT_WORKAROUND'.
1936
1937 `QSORT_WORKAROUND' is always defined when GNU CC is compiled with
1938VAX C, to avoid a problem in case `gcclib.olb' is not yet available.
1939
1940`collect2'
1941==========
1942
1943 Many target systems do not have support in the assembler and linker
1944for "constructors"--initialization functions to be called before the
1945official "start" of `main'. On such systems, GNU CC uses a utility
1946called `collect2' to arrange to call these functions at start time.
1947
1948 The program `collect2' works by linking the program once and looking
1949through the linker output file for symbols with particular names
1950indicating they are constructor functions. If it finds any, it creates
1951a new temporary `.c' file containing a table of them, compiles it, and
1952links the program a second time including that file.
1953
1954 The actual calls to the constructors are carried out by a subroutine
1955called `__main', which is called (automatically) at the beginning of
1956the body of `main' (provided `main' was compiled with GNU CC). Calling
1957`__main' is necessary, even when compiling C code, to allow linking C
1958and C++ object code together. (If you use `-nostdlib', you get an
1959unresolved reference to `__main', since it's defined in the standard
1960GCC library. Include `-lgcc' at the end of your compiler command line
1961to resolve this reference.)
1962
1963 The program `collect2' is installed as `ld' in the directory where
1964the passes of the compiler are installed. When `collect2' needs to
1965find the *real* `ld', it tries the following file names:
1966
1967 * `real-ld' in the directories listed in the compiler's search
1968 directories.
1969
1970 * `real-ld' in the directories listed in the environment variable
1971 `PATH'.
1972
1973 * The file specified in the `REAL_LD_FILE_NAME' configuration macro,
1974 if specified.
1975
1976 * `ld' in the compiler's search directories, except that `collect2'
1977 will not execute itself recursively.
1978
1979 * `ld' in `PATH'.
1980
1981 "The compiler's search directories" means all the directories where
1982`gcc' searches for passes of the compiler. This includes directories
1983that you specify with `-B'.
1984
1985 Cross-compilers search a little differently:
1986
1987 * `real-ld' in the compiler's search directories.
1988
1989 * `TARGET-real-ld' in `PATH'.
1990
1991 * The file specified in the `REAL_LD_FILE_NAME' configuration macro,
1992 if specified.
1993
1994 * `ld' in the compiler's search directories.
1995
1996 * `TARGET-ld' in `PATH'.
1997
1998 `collect2' explicitly avoids running `ld' using the file name under
1999which `collect2' itself was invoked. In fact, it remembers up a list
2000of such names--in case one copy of `collect2' finds another copy (or
2001version) of `collect2' installed as `ld' in a second place in the
2002search path.
2003
2004 `collect2' searches for the utilities `nm' and `strip' using the
2005same algorithm as above for `ld'.
2006
2007Standard Header File Directories
2008================================
2009
2010 `GCC_INCLUDE_DIR' means the same thing for native and cross. It is
2011where GNU CC stores its private include files, and also where GNU CC
2012stores the fixed include files. A cross compiled GNU CC runs
2013`fixincludes' on the header files in `$(tooldir)/include'. (If the
2014cross compilation header files need to be fixed, they must be installed
2015before GNU CC is built. If the cross compilation header files are
2016already suitable for ANSI C and GNU CC, nothing special need be done).
2017
2018 `GPLUS_INCLUDE_DIR' means the same thing for native and cross. It
2019is where `g++' looks first for header files. `libg++' installs only
2020target independent header files in that directory.
2021
2022 `LOCAL_INCLUDE_DIR' is used only for a native compiler. It is
2023normally `/usr/local/include'. GNU CC searches this directory so that
2024users can install header files in `/usr/local/include'.
2025
2026 `CROSS_INCLUDE_DIR' is used only for a cross compiler. GNU CC
2027doesn't install anything there.
2028
2029 `TOOL_INCLUDE_DIR' is used for both native and cross compilers. It
2030is the place for other packages to install header files that GNU CC will
2031use. For a cross-compiler, this is the equivalent of `/usr/include'.
2032When you build a cross-compiler, `fixincludes' processes any header
2033files in this directory.
2034
This page took 0.304032 seconds and 5 git commands to generate.