|
|
1.1 ! root 1: This file documents the installation of the GNU compiler. Copyright ! 2: (C) 1988, 1989, 1992 Free Software Foundation, Inc. You may copy, ! 3: distribute, and modify it freely as long as you preserve this copyright ! 4: notice and permission notice. ! 5: ! 6: Installing GNU CC ! 7: ***************** ! 8: ! 9: Here is the procedure for installing GNU CC on a Unix system. ! 10: ! 11: You cannot install GNU C by itself on MSDOS; it will not compile ! 12: under any MSDOS compiler except itself. You need to get the complete ! 13: compilation package DJGPP, which includes binaries as well as sources, ! 14: and includes all the necessary compilation tools and libraries. ! 15: ! 16: 1. If you have built GNU CC previously in the same directory for a ! 17: different target machine, do `make distclean' to delete all files ! 18: that might be invalid. One of the files this deletes is ! 19: `Makefile'; if `make distclean' complains that `Makefile' does not ! 20: exist, it probably means that the directory is already suitably ! 21: clean. ! 22: ! 23: 2. On a System V release 4 system, make sure `/usr/bin' precedes ! 24: `/usr/ucb' in `PATH'. The `cc' command in `/usr/ucb' uses ! 25: libraries which have bugs. ! 26: ! 27: 3. Specify the host and target machine configurations. You do this by ! 28: running the file `configure' with appropriate arguments. ! 29: ! 30: If you are building a compiler to produce code for the machine it ! 31: runs on, specify just one machine type, with the `--target' ! 32: option; the host type will default to be the same as the target. ! 33: (For information on building a cross-compiler, see *Note ! 34: Cross-Compiler::.) Here is an example: ! 35: ! 36: configure --target=sparc-sun-sunos4.1 ! 37: ! 38: If you run `configure' without specifying configuration arguments, ! 39: `configure' tries to guess the type of host you are on, and uses ! 40: that configuration type for both host and target. So you don't ! 41: need to specify a configuration, for building a native compiler, ! 42: unless `configure' cannot figure out what your configuration is. ! 43: ! 44: A configuration name may be canonical or it may be more or less ! 45: abbreviated. ! 46: ! 47: A canonical configuration name has three parts, separated by ! 48: dashes. It looks like this: `CPU-COMPANY-SYSTEM'. (The three ! 49: parts may themselves contain dashes; `configure' can figure out ! 50: which dashes serve which purpose.) For example, ! 51: `m68k-sun-sunos4.1' specifies a Sun 3. ! 52: ! 53: You can also replace parts of the configuration by nicknames or ! 54: aliases. For example, `sun3' stands for `m68k-sun', so ! 55: `sun3-sunos4.1' is another way to specify a Sun 3. You can also ! 56: use simply `sun3-sunos', since the version of SunOS is assumed by ! 57: default to be version 4. `sun3-bsd' also works, since `configure' ! 58: knows that the only BSD variant on a Sun 3 is SunOS. ! 59: ! 60: You can specify a version number after any of the system types, ! 61: and some of the CPU types. In most cases, the version is ! 62: irrelevant, and will be ignored. So you might as well specify the ! 63: version if you know it. ! 64: ! 65: Here are the possible CPU types: ! 66: ! 67: a29k, alpha, arm, cN, clipper, elxsi, h8300, hppa1.0, hppa1.1, ! 68: i370, i386, i486, i860, i960, m68000, m68k, m88k, mips, ! 69: ns32k, pyramid, romp, rs6000, sh, sparc, sparclite, vax, ! 70: we32k. ! 71: ! 72: Here are the recognized company names. As you can see, customary ! 73: abbreviations are used rather than the longer official names. ! 74: ! 75: alliant, altos, apollo, att, bull, cbm, convergent, convex, ! 76: crds, dec, dg, dolphin, elxsi, encore, harris, hitachi, hp, ! 77: ibm, intergraph, isi, mips, motorola, ncr, next, ns, omron, ! 78: plexus, sequent, sgi, sony, sun, tti, unicom. ! 79: ! 80: The company name is meaningful only to disambiguate when the rest ! 81: of the information supplied is insufficient. You can omit it, ! 82: writing just `CPU-SYSTEM', if it is not needed. For example, ! 83: `vax-ultrix4.2' is equivalent to `vax-dec-ultrix4.2'. ! 84: ! 85: Here is a list of system types: ! 86: ! 87: aix, acis, aos, bsd, clix, ctix, dgux, dynix, genix, hpux, ! 88: isc, linux, luna, lynxos, mach, minix, newsos, osf, osfrose, ! 89: riscos, sco, solaris, sunos, sysv, ultrix, unos, vms. ! 90: ! 91: You can omit the system type; then `configure' guesses the ! 92: operating system from the CPU and company. ! 93: ! 94: You can add a version number to the system type; this may or may ! 95: not make a difference. For example, you can write `bsd4.3' or ! 96: `bsd4.4' to distinguish versions of BSD. In practice, the version ! 97: number is most needed for `sysv3' and `sysv4', which are often ! 98: treated differently. ! 99: ! 100: If you specify an impossible combination such as `i860-dg-vms', ! 101: then you may get an error message from `configure', or it may ! 102: ignore part of the information and do the best it can with the ! 103: rest. `configure' always prints the canonical name for the ! 104: alternative that it used. ! 105: ! 106: Often a particular model of machine has a name. Many machine ! 107: names are recognized as aliases for CPU/company combinations. ! 108: Thus, the machine name `sun3', mentioned above, is an alias for ! 109: `m68k-sun'. Sometimes we accept a company name as a machine name, ! 110: when the name is popularly used for a particular machine. Here is ! 111: a table of the known machine names: ! 112: ! 113: 3300, 3b1, 3bN, 7300, altos3068, altos, apollo68, att-7300, ! 114: balance, convex-cN, crds, decstation-3100, decstation, delta, ! 115: encore, fx2800, gmicro, hp7NN, hp8NN, hp9k2NN, hp9k3NN, ! 116: hp9k7NN, hp9k8NN, iris4d, iris, isi68, m3230, magnum, merlin, ! 117: miniframe, mmax, news-3600, news800, news, next, pbd, pc532, ! 118: pmax, ps2, risc-news, rtpc, sun2, sun386i, sun386, sun3, ! 119: sun4, symmetry, tower-32, tower. ! 120: ! 121: Remember that a machine name specifies both the cpu type and the ! 122: company name. ! 123: ! 124: There are four additional options you can specify independently to ! 125: describe variant hardware and software configurations. These are ! 126: `--with-gnu-as', `--with-gnu-ld', `--with-stabs' and `--nfp'. ! 127: ! 128: `--with-gnu-as' ! 129: If you will use GNU CC with the GNU assembler (GAS), you ! 130: should declare this by using the `--with-gnu-as' option when ! 131: you run `configure'. ! 132: ! 133: Using this option does not install GAS. It only modifies the ! 134: output of GNU CC to work with GAS. Building and installing ! 135: GAS is up to you. ! 136: ! 137: Conversely, if you *do not* wish to use GAS and do not specify ! 138: `--with-gnu-as' when building GNU CC, it is up to you to make ! 139: sure that GAS is not installed. GNU CC searches for a ! 140: program named `as' in various directories; if the program it ! 141: finds is GAS, then it runs GAS. If you are not sure where ! 142: GNU CC finds the assembler it is using, try specifying `-v' ! 143: when you run it. ! 144: ! 145: The systems where it makes a difference whether you use GAS ! 146: are ! 147: `hppa1.0-ANY-ANY', `hppa1.1-ANY-ANY', `i386-ANY-sysv', ! 148: `i386-ANY-isc', ! 149: `i860-ANY-bsd', `m68k-bull-sysv', `m68k-hp-hpux', ! 150: `m68k-sony-bsd', ! 151: `m68k-altos-sysv', `m68000-hp-hpux', `m68000-att-sysv', and ! 152: `mips-ANY'). On any other system, `--with-gnu-as' has no ! 153: effect. ! 154: ! 155: On the systems listed above (except for the HP-PA and for ISC ! 156: on the 386), if you use GAS, you should also use the GNU ! 157: linker (and specify `--with-gnu-ld'). ! 158: ! 159: `--with-gnu-ld' ! 160: Specify the option `--with-gnu-ld' if you plan to use the GNU ! 161: linker with GNU CC. ! 162: ! 163: This option does not cause the GNU linker to be installed; it ! 164: just modifies the behavior of GNU CC to work with the GNU ! 165: linker. Specifically, it inhibits the installation of ! 166: `collect2', a program which otherwise serves as a front-end ! 167: for the system's linker on most configurations. ! 168: ! 169: `--with-stabs' ! 170: On MIPS based systems and on Alphas, you must specify whether ! 171: you want GNU CC to create the normal ECOFF debugging format, ! 172: or to use BSD-style stabs passed through the ECOFF symbol ! 173: table. The normal ECOFF debug format cannot fully handle ! 174: languages other than C. BSD stabs format can handle other ! 175: languages, but it only works with the GNU debugger GDB. ! 176: ! 177: Normally, GNU CC uses the ECOFF debugging format by default; ! 178: if you prefer BSD stabs, specify `--with-stabs' when you ! 179: configure GNU CC. ! 180: ! 181: No matter which default you choose when you configure GNU CC, ! 182: the user can use the `-gcoff' and `-gstabs+' options to ! 183: specify explicitly the debug format for a particular ! 184: compilation. ! 185: ! 186: `--with-stabs' is meaningful on the ISC system on the 386, ! 187: also, if `--with-gas' is used. It selects use of stabs ! 188: debugging information embedded in COFF output. This kind of ! 189: debugging information supports C++ well; ordinary COFF ! 190: debugging information does not. ! 191: ! 192: `--nfp' ! 193: On certain systems, you must specify whether the machine has ! 194: a floating point unit. These systems include ! 195: `m68k-sun-sunosN' and `m68k-isi-bsd'. On any other system, ! 196: `--nfp' currently has no effect, though perhaps there are ! 197: other systems where it could usefully make a difference. ! 198: ! 199: If you want to install your own homemade configuration files, you ! 200: can use `local' as the company name to access them. If you use ! 201: configuration `CPU-local', the configuration name without the cpu ! 202: prefix is used to form the configuration file names. ! 203: ! 204: Thus, if you specify `m68k-local', configuration uses files ! 205: `local.md', `local.h', `local.c', `xm-local.h', `t-local', and ! 206: `x-local', all in the directory `config/m68k'. ! 207: ! 208: Here is a list of configurations that have special treatment or ! 209: special things you must know: ! 210: ! 211: `alpha-*-osf1' ! 212: Systems using processors that implement the DEC Alpha ! 213: architecture and are running the OSF/1 operating system, for ! 214: example the DEC Alpha AXP systems. (VMS on the Alpha is not ! 215: currently supported by GNU CC.) ! 216: ! 217: Objective C and C++ do not yet work on the Alpha. We hope to ! 218: support C++ in version 2.6. ! 219: ! 220: GNU CC writes a `.verstamp' directive to the assembler output ! 221: file unless it is built as a cross-compiler. It gets the ! 222: version to use from the system header file ! 223: `/usr/include/stamp.h'. If you install a new version of ! 224: OSF/1, you should rebuild GCC to pick up the new version ! 225: stamp. ! 226: ! 227: Note that since the Alpha is a 64-bit architecture, ! 228: cross-compilers from 32-bit machines will not generate as ! 229: efficient code as that generated when the compiler is running ! 230: on a 64-bit machine because many optimizations that depend on ! 231: being able to represent a word on the target in an integral ! 232: value on the host cannot be performed. Building ! 233: cross-compilers on the Alpha for 32-bit machines has only ! 234: been tested in a few cases and may not work properly. ! 235: ! 236: `make compare' may fail on some versions of OSF/1 unless you ! 237: add `-save-temps' to `CFLAGS'. The same problem occurs on ! 238: Irix version 5.1.1. On these systems, the name of the ! 239: assembler input file is stored in the object file, and that ! 240: makes comparison fail if it differs between the `stage1' and ! 241: `stage2' compilations. The option `-save-temps' forces a ! 242: fixed name to be used for the assembler input file, instead ! 243: of a randomly chosen name in `/tmp'. ! 244: ! 245: GNU CC now supports both the native (ECOFF) debugging format ! 246: used by DBX and GDB and an encapsulated STABS format for use ! 247: only with GDB. See the discussion of the `--with-stabs' ! 248: option of `configure' above for more information on these ! 249: formats and how to select them. ! 250: ! 251: There is a bug in DEC's assembler that produces incorrect ! 252: line numbers for ECOFF format when the `.align' directive is ! 253: used. To work around this problem, GNU CC will not emit such ! 254: alignment directives even if optimization is being performed ! 255: if it is writing ECOFF format debugging information. ! 256: Unfortunately, this has the very undesirable side-effect that ! 257: code addresses when `-O' is specified are different depending ! 258: on whether or not `-g' is also specified. ! 259: ! 260: To avoid this behavior, specify `-gstabs+' and use GDB ! 261: instead of DBX. DEC is now aware of this problem with the ! 262: assembler and hopes to provide a fix shortly. ! 263: ! 264: `a29k' ! 265: AMD Am29k-family processors. These are normally used in ! 266: embedded applications. There are no standard Unix ! 267: configurations. This configuration corresponds to AMD's ! 268: standard calling sequence and binary interface and is ! 269: compatible with other 29k tools. ! 270: ! 271: You may need to make a variant of the file `a29k.h' for your ! 272: particular configuration. ! 273: ! 274: `a29k-*-bsd' ! 275: AMD Am29050 used in a system running a variant of BSD Unix. ! 276: ! 277: `elxsi-elxsi-bsd' ! 278: The Elxsi's C compiler has known limitations that prevent it ! 279: from compiling GNU C. Please contact `[email protected]' for ! 280: more details. ! 281: ! 282: `hppa*-*-*' ! 283: Using GAS is highly recommended for all HP-PA configurations. ! 284: See *Note PA Install:: for the special procedures needed to ! 285: compile GNU CC for the HP-PA. ! 286: ! 287: `i386-*-sco' ! 288: Compilation with RCC is recommended. Also, it may be a good ! 289: idea to link with GNU malloc instead of the malloc that comes ! 290: with the system. ! 291: ! 292: `i386-*-sco3.2.4' ! 293: Use this configuration for SCO release 3.2 version 4. ! 294: ! 295: `i386-*-isc' ! 296: It may be good idea to link with GNU malloc instead of the ! 297: malloc that comes with the system. ! 298: ! 299: `i386-*-esix' ! 300: It may be good idea to link with GNU malloc instead of the ! 301: malloc that comes with the system. ! 302: ! 303: `i386-ibm-aix' ! 304: You need to use GAS version 2.1 or later, and and LD from GNU ! 305: binutils version 2.2 or later. ! 306: ! 307: `i386-sequent' ! 308: Go to the Berkeley universe before compiling. In addition, ! 309: you probably need to create a file named `string.h' ! 310: containing just one line: `#include <strings.h>'. ! 311: ! 312: `i386-sun-sunos4' ! 313: You may find that you need another version of GNU CC to begin ! 314: bootstrapping with, since the current version when built with ! 315: the system's own compiler seems to get an infinite loop ! 316: compiling part of `libgcc2.c'. GNU CC version 2 compiled ! 317: with GNU CC (any version) seems not to have this problem. ! 318: ! 319: `i860-intel-osf1' ! 320: This is the Paragon. If you have version 1.0 of the ! 321: operating system, you need to take special steps to build GNU ! 322: CC due to peculiarities of the system. Newer system versions ! 323: have no problem. See the section `Installation Problems' in ! 324: the GNU CC Manual. ! 325: ! 326: `m68000-att' ! 327: AT&T 3b1, a.k.a. 7300 PC. Special procedures are needed to ! 328: compile GNU CC with this machine's standard C compiler, due ! 329: to bugs in that compiler. *Note 3b1 Install::. You can ! 330: bootstrap it more easily with previous versions of GNU CC if ! 331: you have them. ! 332: ! 333: `m68000-hp-bsd' ! 334: HP 9000 series 200 running BSD. Note that the C compiler ! 335: that comes with this system cannot compile GNU CC; contact ! 336: `[email protected]' to get binaries of GNU CC for bootstrapping. ! 337: ! 338: `m68k-altos' ! 339: Altos 3068. You must use the GNU assembler, linker and ! 340: debugger. Also, you must fix a kernel bug. Details in the ! 341: file `README.ALTOS'. ! 342: ! 343: `m68k-bull-sysv' ! 344: Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to ! 345: BOS-2.01. GNU CC works either with native assembler or GNU ! 346: assembler. You can use GNU assembler with native coff ! 347: generation by providing `--gas' to the configure script or ! 348: use GNU assembler with dbx-in-coff encapsulation by providing ! 349: `--gas --stabs'. For any problem with native assembler or for ! 350: availability of the DPX/2 port of GAS, contact ! 351: `[email protected]'. ! 352: ! 353: `m68k-hp-hpux' ! 354: HP 9000 series 300 or 400 running HP-UX. HP-UX version 8.0 ! 355: has a bug in the assembler that prevents compilation of GNU ! 356: CC. To fix it, get patch PHCO_0800 from HP. ! 357: ! 358: In addition, `--gas' does not currently work with this ! 359: configuration. Changes in HP-UX have broken the library ! 360: conversion tool and the linker. ! 361: ! 362: `m68k-sun' ! 363: Sun 3. We do not provide a configuration file to use the Sun ! 364: FPA by default, because programs that establish signal ! 365: handlers for floating point traps inherently cannot work with ! 366: the FPA. ! 367: ! 368: `m88k-*-svr3' ! 369: Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference ! 370: port. These systems tend to use the Green Hills C, revision ! 371: 1.8.5, as the standard C compiler. There are apparently bugs ! 372: in this compiler that result in object files differences ! 373: between stage 2 and stage 3. If this happens, make the stage ! 374: 4 compiler and compare it to the stage 3 compiler. If the ! 375: stage 3 and stage 4 object files are identical, this suggests ! 376: you encountered a problem with the standard C compiler; the ! 377: stage 3 and 4 compilers may be usable. ! 378: ! 379: It is best, however, to use an older version of GNU CC for ! 380: bootstrapping if you have one. ! 381: ! 382: `m88k-*-dgux' ! 383: Motorola m88k running DG/UX. To build native or cross ! 384: compilers on DG/UX, you must first change to the 88open BCS ! 385: software development environment. This is done by issuing ! 386: this command: ! 387: ! 388: eval `sde-target m88kbcs` ! 389: ! 390: `m88k-tektronix-sysv3' ! 391: Tektronix XD88 running UTekV 3.2e. Do not turn on ! 392: optimization while building stage1 if you bootstrap with the ! 393: buggy Green Hills compiler. Also, The bundled LAI System V ! 394: NFS is buggy so if you build in an NFS mounted directory, ! 395: start from a fresh reboot, or avoid NFS all together. ! 396: Otherwise you may have trouble getting clean comparisons ! 397: between stages. ! 398: ! 399: `mips-mips-bsd' ! 400: MIPS machines running the MIPS operating system in BSD mode. ! 401: It's possible that some old versions of the system lack the ! 402: functions `memcpy', `memcmp', and `memset'. If your system ! 403: lacks these, you must remove or undo the definition of ! 404: `TARGET_MEM_FUNCTIONS' in `mips-bsd.h'. ! 405: ! 406: `mips-sgi-*' ! 407: Silicon Graphics MIPS machines running IRIX. In order to ! 408: compile GCC on an SGI the "c.hdr.lib" option must be ! 409: installed from the CD-ROM supplied from Silicon Graphics. ! 410: This is found on the 2nd CD in release 4.0.1. ! 411: ! 412: `mips-sony-sysv' ! 413: Sony MIPS NEWS. This works in NEWSOS 5.0.1, but not in 5.0.2 ! 414: (which uses ELF instead of COFF). Support for 5.0.2 will ! 415: probably be provided soon by volunteers. In particular, the ! 416: linker does not like the code generated by GCC when shared ! 417: libraries are linked in. ! 418: ! 419: `ns32k-encore' ! 420: Encore ns32000 system. Encore systems are supported only ! 421: under BSD. ! 422: ! 423: `ns32k-*-genix' ! 424: National Semiconductor ns32000 system. Genix has bugs in ! 425: `alloca' and `malloc'; you must get the compiled versions of ! 426: these from GNU Emacs. ! 427: ! 428: `ns32k-sequent' ! 429: Go to the Berkeley universe before compiling. In addition, ! 430: you probably need to create a file named `string.h' ! 431: containing just one line: `#include <strings.h>'. ! 432: ! 433: `ns32k-utek' ! 434: UTEK ns32000 system ("merlin"). The C compiler that comes ! 435: with this system cannot compile GNU CC; contact ! 436: `tektronix!reed!mason' to get binaries of GNU CC for ! 437: bootstrapping. ! 438: ! 439: `romp-*-aos' ! 440: `romp-*-mach' ! 441: The only operating systems supported for the IBM RT PC are ! 442: AOS and MACH. GNU CC does not support AIX running on the RT. ! 443: We recommend you compile GNU CC with an earlier version of ! 444: itself; if you compile GNU CC with `hc', the Metaware ! 445: compiler, it will work, but you will get mismatches between ! 446: the stage 2 and stage 3 compilers in various files. These ! 447: errors are minor differences in some floating-point constants ! 448: and can be safely ignored; the stage 3 compiler is correct. ! 449: ! 450: `rs6000-*-aix' ! 451: *Read the file `README.RS6000' for information on how to get ! 452: a fix for problems in the IBM assembler that interfere with ! 453: GNU CC.* You must either obtain the new assembler or avoid ! 454: using the `-g' switch. Note that `Makefile.in' uses `-g' by ! 455: default when compiling `libgcc2.c'. ! 456: ! 457: The PowerPC and POWER2 architectures are now supported, but ! 458: have not been extensively tested due to lack of appropriate ! 459: systems. Only AIX is supported on the PowerPC. ! 460: ! 461: Objective C does not work on this architecture. ! 462: ! 463: XLC version 1.3.0.0 will miscompile `jump.c'. XLC version ! 464: 1.3.0.1 or later fixes this problem. We do not yet have a ! 465: PTF number for this fix. ! 466: ! 467: `vax-dec-ultrix' ! 468: Don't try compiling with Vax C (`vcc'). It produces ! 469: incorrect code in some cases (for example, when `alloca' is ! 470: used). ! 471: ! 472: Meanwhile, compiling `cp-parse.c' with pcc does not work ! 473: because of an internal table size limitation in that ! 474: compiler. To avoid this problem, compile just the GNU C ! 475: compiler first, and use it to recompile building all the ! 476: languages that you want to run. ! 477: ! 478: Here we spell out what files will be set up by `configure'. ! 479: Normally you need not be concerned with these files. ! 480: ! 481: * A symbolic link named `config.h' is made to the top-level ! 482: config file for the machine you plan to run the compiler on ! 483: (*note The Configuration File: (gcc.info)Config.). This file ! 484: is responsible for defining information about the host ! 485: machine. It includes `tm.h'. ! 486: ! 487: The top-level config file is located in the subdirectory ! 488: `config'. Its name is always `xm-SOMETHING.h'; usually ! 489: `xm-MACHINE.h', but there are some exceptions. ! 490: ! 491: If your system does not support symbolic links, you might ! 492: want to set up `config.h' to contain a `#include' command ! 493: which refers to the appropriate file. ! 494: ! 495: * A symbolic link named `tconfig.h' is made to the top-level ! 496: config file for your target machine. This is used for ! 497: compiling certain programs to run on that machine. ! 498: ! 499: * A symbolic link named `tm.h' is made to the ! 500: machine-description macro file for your target machine. It ! 501: should be in the subdirectory `config' and its name is often ! 502: `MACHINE.h'. ! 503: ! 504: * A symbolic link named `md' will be made to the machine ! 505: description pattern file. It should be in the `config' ! 506: subdirectory and its name should be `MACHINE.md'; but MACHINE ! 507: is often not the same as the name used in the `tm.h' file ! 508: because the `md' files are more general. ! 509: ! 510: * A symbolic link named `aux-output.c' will be made to the ! 511: output subroutine file for your machine. It should be in the ! 512: `config' subdirectory and its name should be `MACHINE.c'. ! 513: ! 514: * The command file `configure' also constructs the file ! 515: `Makefile' by adding some text to the template file ! 516: `Makefile.in'. The additional text comes from files in the ! 517: `config' directory, named `t-TARGET' and `x-HOST'. If these ! 518: files do not exist, it means nothing needs to be added for a ! 519: given target or host. ! 520: ! 521: 4. The standard directory for installing GNU CC is `/usr/local/lib'. ! 522: If you want to install its files somewhere else, specify ! 523: `--prefix=DIR' when you run `configure'. Here DIR is a directory ! 524: name to use instead of `/usr/local' for all purposes with one ! 525: exception: the directory `/usr/local/include' is searched for ! 526: header files no matter where you install the compiler. ! 527: ! 528: 5. Specify `--local-prefix=DIR' if you want the compiler to search ! 529: directory `DIR/include' for header files *instead* of ! 530: `/usr/local/include'. (This is for systems that have different ! 531: conventions for where to put site-specific things.) ! 532: ! 533: Unless you have a convention other than `/usr/local' for ! 534: site-specific files, it is a bad idea to specify `--local-prefix'. ! 535: ! 536: 6. Make sure the Bison parser generator is installed. (This is ! 537: unnecessary if the Bison output files `c-parse.c' and `cexp.c' are ! 538: more recent than `c-parse.y' and `cexp.y' and you do not plan to ! 539: change the `.y' files.) ! 540: ! 541: Bison versions older than Sept 8, 1988 will produce incorrect ! 542: output for `c-parse.c'. ! 543: ! 544: 7. If you have chosen a configuration for GNU CC which requires other ! 545: GNU tools (such as GAS or the GNU linker) instead of the standard ! 546: system tools, install the required tools in the build directory ! 547: under the names `as', `ld' or whatever is appropriate. This will ! 548: enable the compiler to find the proper tools for compilation of ! 549: the program `enquire'. ! 550: ! 551: Alternatively, you can do subsequent compilation using a value of ! 552: the `PATH' environment variable such that the necessary GNU tools ! 553: come before the standard system tools. ! 554: ! 555: 8. Build the compiler. Just type `make LANGUAGES=c' in the compiler ! 556: directory. ! 557: ! 558: `LANGUAGES=c' specifies that only the C compiler should be ! 559: compiled. The makefile normally builds compilers for all the ! 560: supported languages; currently, C, C++ and Objective C. However, ! 561: C is the only language that is sure to work when you build with ! 562: other non-GNU C compilers. In addition, building anything but C ! 563: at this stage is a waste of time. ! 564: ! 565: In general, you can specify the languages to build by typing the ! 566: argument `LANGUAGES="LIST"', where LIST is one or more words from ! 567: the list `c', `c++', and `objective-c'. ! 568: ! 569: Ignore any warnings you may see about "statement not reached" in ! 570: `insn-emit.c'; they are normal. Also, warnings about "unknown ! 571: escape sequence" are normal in `genopinit.c' and perhaps some ! 572: other files. Any other compilation errors may represent bugs in ! 573: the port to your machine or operating system, and should be ! 574: investigated and reported. ! 575: ! 576: Some commercial compilers fail to compile GNU CC because they have ! 577: bugs or limitations. For example, the Microsoft compiler is said ! 578: to run out of macro space. Some Ultrix compilers run out of ! 579: expression space; then you need to break up the statement where ! 580: the problem happens. ! 581: ! 582: If you are building with a previous GNU C compiler, do not use ! 583: `CC=gcc' on the make command or by editing the Makefile. Instead, ! 584: use a full pathname to specify the compiler, such as ! 585: `CC=/usr/local/bin/gcc'. This is because make might execute the ! 586: `gcc' in the current directory before all of the compiler ! 587: components have been built. ! 588: ! 589: 9. If you are building a cross-compiler, stop here. *Note ! 590: Cross-Compiler::. ! 591: ! 592: 10. Move the first-stage object files and executables into a ! 593: subdirectory with this command: ! 594: ! 595: make stage1 ! 596: ! 597: The files are moved into a subdirectory named `stage1'. Once ! 598: installation is complete, you may wish to delete these files with ! 599: `rm -r stage1'. ! 600: ! 601: 11. If you have chosen a configuration for GNU CC which requires other ! 602: GNU tools (such as GAS or the GNU linker) instead of the standard ! 603: system tools, install the required tools in the `stage1' ! 604: subdirectory under the names `as', `ld' or whatever is ! 605: appropriate. This will enable the stage 1 compiler to find the ! 606: proper tools in the following stage. ! 607: ! 608: Alternatively, you can do subsequent compilation using a value of ! 609: the `PATH' environment variable such that the necessary GNU tools ! 610: come before the standard system tools. ! 611: ! 612: 12. Recompile the compiler with itself, with this command: ! 613: ! 614: make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O" ! 615: ! 616: This is called making the stage 2 compiler. ! 617: ! 618: The command shown above builds compilers for all the supported ! 619: languages. If you don't want them all, you can specify the ! 620: languages to build by typing the argument `LANGUAGES="LIST"'. LIST ! 621: should contain one or more words from the list `c', `c++', ! 622: `objective-c', and `proto'. Separate the words with spaces. ! 623: `proto' stands for the programs `protoize' and `unprotoize'; they ! 624: are not a separate language, but you use `LANGUAGES' to enable or ! 625: disable their installation. ! 626: ! 627: If you are going to build the stage 3 compiler, then you might ! 628: want to build only the C language in stage 2. ! 629: ! 630: Once you have built the stage 2 compiler, if you are short of disk ! 631: space, you can delete the subdirectory `stage1'. ! 632: ! 633: On a 68000 or 68020 system lacking floating point hardware, unless ! 634: you have selected a `tm.h' file that expects by default that there ! 635: is no such hardware, do this instead: ! 636: ! 637: make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O -msoft-float" ! 638: ! 639: 13. If you wish to test the compiler by compiling it with itself one ! 640: more time, install any other necessary GNU tools (such as GAS or ! 641: the GNU linker) in the `stage2' subdirectory as you did in the ! 642: `stage1' subdirectory, then do this: ! 643: ! 644: make stage2 ! 645: make CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O" ! 646: ! 647: This is called making the stage 3 compiler. Aside from the `-B' ! 648: option, the compiler options should be the same as when you made ! 649: the stage 2 compiler. But the `LANGUAGES' option need not be the ! 650: same. The command shown above builds compilers for all the ! 651: supported languages; if you don't want them all, you can specify ! 652: the languages to build by typing the argument `LANGUAGES="LIST"', ! 653: as described above. ! 654: ! 655: Then compare the latest object files with the stage 2 object ! 656: files--they ought to be identical, aside from time stamps (if any). ! 657: ! 658: On some systems, meaningful comparison of object files is ! 659: impossible; they always appear "different." This is currently ! 660: true on Solaris and probably on all systems that use ELF object ! 661: file format. Some other systems where this is so are listed below. ! 662: ! 663: Use this command to compare the files: ! 664: ! 665: make compare ! 666: ! 667: This will mention any object files that differ between stage 2 and ! 668: stage 3. Any difference, no matter how innocuous, indicates that ! 669: the stage 2 compiler has compiled GNU CC incorrectly, and is ! 670: therefore a potentially serious bug which you should investigate ! 671: and report. ! 672: ! 673: If your system does not put time stamps in the object files, then ! 674: this is a faster way to compare them (using the Bourne shell): ! 675: ! 676: for file in *.o; do ! 677: cmp $file stage2/$file ! 678: done ! 679: ! 680: If you have built the compiler with the `-mno-mips-tfile' option on ! 681: MIPS machines, you will not be able to compare the files. ! 682: ! 683: The Alpha stores file names of internal temporary files in the ! 684: object files and `make compare' does not know how to ignore them, ! 685: so normally you cannot compare on the Alpha. However, if you use ! 686: the `-save-temps' option when compiling *both* stage 2 and stage ! 687: 3, this causes the same file names to be used in both stages; then ! 688: you can do the comparison. ! 689: ! 690: 14. Build the Objective C library (if you have built the Objective C ! 691: compiler). Here is the command to do this: ! 692: ! 693: make objc-runtime CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O" ! 694: ! 695: 15. Install the compiler driver, the compiler's passes and run-time ! 696: support with `make install'. Use the same value for `CC', ! 697: `CFLAGS' and `LANGUAGES' that you used when compiling the files ! 698: that are being installed. One reason this is necessary is that ! 699: some versions of Make have bugs and recompile files gratuitously ! 700: when you do this step. If you use the same variable values, those ! 701: files will be recompiled properly. ! 702: ! 703: For example, if you have built the stage 2 compiler, you can use ! 704: the following command: ! 705: ! 706: make install CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O" LANGUAGES="LIST" ! 707: ! 708: This copies the files `cc1', `cpp' and `libgcc.a' to files `cc1', ! 709: `cpp' and `libgcc.a' in the directory ! 710: `/usr/local/lib/gcc-lib/TARGET/VERSION', which is where the ! 711: compiler driver program looks for them. Here TARGET is the target ! 712: machine type specified when you ran `configure', and VERSION is ! 713: the version number of GNU CC. This naming scheme permits various ! 714: versions and/or cross-compilers to coexist. ! 715: ! 716: This also copies the driver program `xgcc' into ! 717: `/usr/local/bin/gcc', so that it appears in typical execution ! 718: search paths. ! 719: ! 720: On some systems, this command causes recompilation of some files. ! 721: This is usually due to bugs in `make'. You should either ignore ! 722: this problem, or use GNU Make. ! 723: ! 724: *Warning: there is a bug in `alloca' in the Sun library. To avoid ! 725: this bug, be sure to install the executables of GNU CC that were ! 726: compiled by GNU CC. (That is, the executables from stage 2 or 3, ! 727: not stage 1.) They use `alloca' as a built-in function and never ! 728: the one in the library.* ! 729: ! 730: (It is usually better to install GNU CC executables from stage 2 ! 731: or 3, since they usually run faster than the ones compiled with ! 732: some other compiler.) ! 733: ! 734: 16. Install the Objective C library (if you are installing the ! 735: Objective C compiler). Here is the command to do this: ! 736: ! 737: make install-libobjc CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O" ! 738: ! 739: 17. If you're going to use C++, it's likely that you need to also ! 740: install the libg++ distribution. It should be available from the ! 741: same place where you got the GNU C distribution. Just as GNU C ! 742: does not distribute a C runtime library, it also does not include ! 743: a C++ run-time library. All I/O functionality, special class ! 744: libraries, etc., are available in the libg++ distribution. ! 745: ! 746: Compilation in a Separate Directory ! 747: =================================== ! 748: ! 749: If you wish to build the object files and executables in a directory ! 750: other than the one containing the source files, here is what you must ! 751: do differently: ! 752: ! 753: 1. Make sure you have a version of Make that supports the `VPATH' ! 754: feature. (GNU Make supports it, as do Make versions on most BSD ! 755: systems.) ! 756: ! 757: 2. If you have ever run `configure' in the source directory, you must ! 758: undo the configuration. Do this by running: ! 759: ! 760: make distclean ! 761: ! 762: 3. Go to the directory in which you want to build the compiler before ! 763: running `configure': ! 764: ! 765: mkdir gcc-sun3 ! 766: cd gcc-sun3 ! 767: ! 768: On systems that do not support symbolic links, this directory must ! 769: be on the same file system as the source code directory. ! 770: ! 771: 4. Specify where to find `configure' when you run it: ! 772: ! 773: ../gcc/configure ... ! 774: ! 775: This also tells `configure' where to find the compiler sources; ! 776: `configure' takes the directory from the file name that was used to ! 777: invoke it. But if you want to be sure, you can specify the source ! 778: directory with the `--srcdir' option, like this: ! 779: ! 780: ../gcc/configure --srcdir=../gcc sun3 ! 781: ! 782: The directory you specify with `--srcdir' need not be the same as ! 783: the one that `configure' is found in. ! 784: ! 785: Now, you can run `make' in that directory. You need not repeat the ! 786: configuration steps shown above, when ordinary source files change. You ! 787: must, however, run `configure' again when the configuration files ! 788: change, if your system does not support symbolic links. ! 789: ! 790: Building and Installing a Cross-Compiler ! 791: ======================================== ! 792: ! 793: GNU CC can function as a cross-compiler for many machines, but not ! 794: all. ! 795: ! 796: * Cross-compilers for the Mips as target using the Mips assembler ! 797: currently do not work, because the auxiliary programs ! 798: `mips-tdump.c' and `mips-tfile.c' can't be compiled on anything ! 799: but a Mips. It does work to cross compile for a Mips if you use ! 800: the GNU assembler and linker. ! 801: ! 802: * Cross-compilers between machines with different floating point ! 803: formats have not all been made to work. GNU CC now has a floating ! 804: point emulator with which these can work, but each target machine ! 805: description needs to be updated to take advantage of it. ! 806: ! 807: * Cross-compilation between machines of different word sizes has not ! 808: really been addressed yet. ! 809: ! 810: Since GNU CC generates assembler code, you probably need a ! 811: cross-assembler that GNU CC can run, in order to produce object files. ! 812: If you want to link on other than the target machine, you need a ! 813: cross-linker as well. You also need header files and libraries suitable ! 814: for the target machine that you can install on the host machine. ! 815: ! 816: Steps of Cross-Compilation ! 817: -------------------------- ! 818: ! 819: To compile and run a program using a cross-compiler involves several ! 820: steps: ! 821: ! 822: * Run the cross-compiler on the host machine to produce assembler ! 823: files for the target machine. This requires header files for the ! 824: target machine. ! 825: ! 826: * Assemble the files produced by the cross-compiler. You can do this ! 827: either with an assembler on the target machine, or with a ! 828: cross-assembler on the host machine. ! 829: ! 830: * Link those files to make an executable. You can do this either ! 831: with a linker on the target machine, or with a cross-linker on the ! 832: host machine. Whichever machine you use, you need libraries and ! 833: certain startup files (typically `crt....o') for the target ! 834: machine. ! 835: ! 836: It is most convenient to do all of these steps on the same host ! 837: machine, since then you can do it all with a single invocation of GNU ! 838: CC. This requires a suitable cross-assembler and cross-linker. For ! 839: some targets, the GNU assembler and linker are available. ! 840: ! 841: Configuring a Cross-Compiler ! 842: ---------------------------- ! 843: ! 844: To build GNU CC as a cross-compiler, you start out by running ! 845: `configure'. You must specify two different configurations, the host ! 846: and the target. Use the `--host=HOST' option for the host and ! 847: `--target=TARGET' to specify the target type. For example, here is how ! 848: to configure for a cross-compiler that runs on a hypothetical Intel 386 ! 849: system and produces code for an HP 68030 system running BSD: ! 850: ! 851: configure --target=m68k-hp-bsd4.3 --host=i386-bozotheclone-bsd4.3 ! 852: ! 853: Tools and Libraries for a Cross-Compiler ! 854: ---------------------------------------- ! 855: ! 856: If you have a cross-assembler and cross-linker available, you should ! 857: install them now. Put them in the directory `/usr/local/TARGET/bin'. ! 858: Here is a table of the tools you should put in this directory: ! 859: ! 860: `as' ! 861: This should be the cross-assembler. ! 862: ! 863: `ld' ! 864: This should be the cross-linker. ! 865: ! 866: `ar' ! 867: This should be the cross-archiver: a program which can manipulate ! 868: archive files (linker libraries) in the target machine's format. ! 869: ! 870: `ranlib' ! 871: This should be a program to construct a symbol table in an archive ! 872: file. ! 873: ! 874: The installation of GNU CC will find these programs in that ! 875: directory, and copy or link them to the proper place to for the ! 876: cross-compiler to find them when run later. ! 877: ! 878: The easiest way to provide these files is to build the Binutils ! 879: package and GAS. Configure them with the same `--host' and `--target' ! 880: options that you use for configuring GNU CC, then build and install ! 881: them. They install their executables automatically into the proper ! 882: directory. Alas, they do not support all the targets that GNU CC ! 883: supports. ! 884: ! 885: If you want to install libraries to use with the cross-compiler, ! 886: such as a standard C library, put them in the directory ! 887: `/usr/local/TARGET/lib'; installation of GNU CC copies all all the ! 888: files in that subdirectory into the proper place for GNU CC to find ! 889: them and link with them. Here's an example of copying some libraries ! 890: from a target machine: ! 891: ! 892: ftp TARGET-MACHINE ! 893: lcd /usr/local/TARGET/lib ! 894: cd /lib ! 895: get libc.a ! 896: cd /usr/lib ! 897: get libg.a ! 898: get libm.a ! 899: quit ! 900: ! 901: The precise set of libraries you'll need, and their locations on the ! 902: target machine, vary depending on its operating system. ! 903: ! 904: Many targets require "start files" such as `crt0.o' and `crtn.o' ! 905: which are linked into each executable; these too should be placed in ! 906: `/usr/local/TARGET/lib'. There may be several alternatives for ! 907: `crt0.o', for use with profiling or other compilation options. Check ! 908: your target's definition of `STARTFILE_SPEC' to find out what start ! 909: files it uses. Here's an example of copying these files from a target ! 910: machine: ! 911: ! 912: ftp TARGET-MACHINE ! 913: lcd /usr/local/TARGET/lib ! 914: prompt ! 915: cd /lib ! 916: mget *crt*.o ! 917: cd /usr/lib ! 918: mget *crt*.o ! 919: quit ! 920: ! 921: `libgcc.a' and Cross-Compilers ! 922: ------------------------------ ! 923: ! 924: Code compiled by GNU CC uses certain runtime support functions ! 925: implicitly. Some of these functions can be compiled successfully with ! 926: GNU CC itself, but a few cannot be. These problem functions are in the ! 927: source file `libgcc1.c'; the library made from them is called ! 928: `libgcc1.a'. ! 929: ! 930: When you build a native compiler, these functions are compiled with ! 931: some other compiler-the one that you use for bootstrapping GNU CC. ! 932: Presumably it knows how to open code these operations, or else knows how ! 933: to call the run-time emulation facilities that the machine comes with. ! 934: But this approach doesn't work for building a cross-compiler. The ! 935: compiler that you use for building knows about the host system, not the ! 936: target system. ! 937: ! 938: So, when you build a cross-compiler you have to supply a suitable ! 939: library `libgcc1.a' that does the job it is expected to do. ! 940: ! 941: To compile `libgcc1.c' with the cross-compiler itself does not work. ! 942: The functions in this file are supposed to implement arithmetic ! 943: operations that GNU CC does not know how to open code, for your target ! 944: machine. If these functions are compiled with GNU CC itself, they will ! 945: compile into infinite recursion. ! 946: ! 947: On any given target, most of these functions are not needed. If GNU ! 948: CC can open code an arithmetic operation, it will not call these ! 949: functions to perform the operation. It is possible that on your target ! 950: machine, none of these functions is needed. If so, you can supply an ! 951: empty library as `libgcc1.a'. ! 952: ! 953: Many targets need library support only for multiplication and ! 954: division. If you are linking with a library that contains functions for ! 955: multiplication and division, you can tell GNU CC to call them directly ! 956: by defining the macros `MULSI3_LIBCALL', and the like. These macros ! 957: need to be defined in the target description macro file. For some ! 958: targets, they are defined already. This may be sufficient to avoid the ! 959: need for libgcc1.a; if so, you can supply an empty library. ! 960: ! 961: Some targets do not have floating point instructions; they need other ! 962: functions in `libgcc1.a', which do floating arithmetic. Recent ! 963: versions of GNU CC have a file which emulates floating point. With a ! 964: certain amount of work, you should be able to construct a floating ! 965: point emulator that can be used as `libgcc1.a'. Perhaps future ! 966: versions will contain code to do this automatically and conveniently. ! 967: That depends on whether someone wants to implement it. ! 968: ! 969: If your target system has another C compiler, you can configure GNU ! 970: CC as a native compiler on that machine, build just `libgcc1.a' with ! 971: `make libgcc1.a' on that machine, and use the resulting file with the ! 972: cross-compiler. To do this, execute the following on the target ! 973: machine: ! 974: ! 975: cd TARGET-BUILD-DIR ! 976: configure --host=sparc --target=sun3 ! 977: make libgcc1.a ! 978: ! 979: And then this on the host machine: ! 980: ! 981: ftp TARGET-MACHINE ! 982: binary ! 983: cd TARGET-BUILD-DIR ! 984: get libgcc1.a ! 985: quit ! 986: ! 987: Another way to provide the functions you need in `libgcc1.a' is to ! 988: define the appropriate `perform_...' macros for those functions. If ! 989: these definitions do not use the C arithmetic operators that they are ! 990: meant to implement, you should be able to compile them with the ! 991: cross-compiler you are building. (If these definitions already exist ! 992: for your target file, then you are all set.) ! 993: ! 994: To build `libgcc1.a' using the perform macros, use ! 995: `LIBGCC1=libgcc1.a OLDCC=./xgcc' when building the compiler. ! 996: Otherwise, you should place your replacement library under the name ! 997: `libgcc1.a' in the directory in which you will build the ! 998: cross-compiler, before you run `make'. ! 999: ! 1000: Cross-Compilers and Header Files ! 1001: -------------------------------- ! 1002: ! 1003: If you are cross-compiling a standalone program or a program for an ! 1004: embedded system, then you may not need any header files except the few ! 1005: that are part of GNU CC (and those of your program). However, if you ! 1006: intend to link your program with a standard C library such as `libc.a', ! 1007: then you probably need to compile with the header files that go with ! 1008: the library you use. ! 1009: ! 1010: The GNU C compiler does not come with these files, because (1) they ! 1011: are system-specific, and (2) they belong in a C library, not in a ! 1012: compiler. ! 1013: ! 1014: If the GNU C library supports your target machine, then you can get ! 1015: the header files from there (assuming you actually use the GNU library ! 1016: when you link your program). ! 1017: ! 1018: If your target machine comes with a C compiler, it probably comes ! 1019: with suitable header files also. If you make these files accessible ! 1020: from the host machine, the cross-compiler can use them also. ! 1021: ! 1022: Otherwise, you're on your own in finding header files to use when ! 1023: cross-compiling. ! 1024: ! 1025: When you have found suitable header files, put them in ! 1026: `/usr/local/TARGET/include', before building the cross compiler. Then ! 1027: installation will run fixincludes properly and install the corrected ! 1028: versions of the header files where the compiler will use them. ! 1029: ! 1030: Provide the header files before you build the cross-compiler, because ! 1031: the build stage actually runs the cross-compiler to produce parts of ! 1032: `libgcc.a'. (These are the parts that *can* be compiled with GNU CC.) ! 1033: Some of them need suitable header files. ! 1034: ! 1035: Here's an example showing how to copy the header files from a target ! 1036: machine. On the target machine, do this: ! 1037: ! 1038: (cd /usr/include; tar cf - .) > tarfile ! 1039: ! 1040: Then, on the host machine, do this: ! 1041: ! 1042: ftp TARGET-MACHINE ! 1043: lcd /usr/local/TARGET/include ! 1044: get tarfile ! 1045: quit ! 1046: tar xf tarfile ! 1047: ! 1048: Actually Building the Cross-Compiler ! 1049: ------------------------------------ ! 1050: ! 1051: Now you can proceed just as for compiling a single-machine compiler ! 1052: through the step of building stage 1. If you have not provided some ! 1053: sort of `libgcc1.a', then compilation will give up at the point where ! 1054: it needs that file, printing a suitable error message. If you do ! 1055: provide `libgcc1.a', then building the compiler will automatically ! 1056: compile and link a test program called `cross-test'; if you get errors ! 1057: in the linking, it means that not all of the necessary routines in ! 1058: `libgcc1.a' are available. ! 1059: ! 1060: If you are making a cross-compiler for an embedded system, and there ! 1061: is no `stdio.h' header for it, then the compilation of `enquire' will ! 1062: probably fail. The job of `enquire' is to run on the target machine ! 1063: and figure out by experiment the nature of its floating point ! 1064: representation. `enquire' records its findings in the header file ! 1065: `float.h'. If you can't produce this file by running `enquire' on the ! 1066: target machine, then you will need to come up with a suitable `float.h' ! 1067: in some other way (or else, avoid using it in your programs). ! 1068: ! 1069: Do not try to build stage 2 for a cross-compiler. It doesn't work to ! 1070: rebuild GNU CC as a cross-compiler using the cross-compiler, because ! 1071: that would produce a program that runs on the target machine, not on the ! 1072: host. For example, if you compile a 386-to-68030 cross-compiler with ! 1073: itself, the result will not be right either for the 386 (because it was ! 1074: compiled into 68030 code) or for the 68030 (because it was configured ! 1075: for a 386 as the host). If you want to compile GNU CC into 68030 code, ! 1076: whether you compile it on a 68030 or with a cross-compiler on a 386, you ! 1077: must specify a 68030 as the host when you configure it. ! 1078: ! 1079: To install the cross-compiler, use `make install', as usual. ! 1080: ! 1081: Installing on the HP Precision Architecture ! 1082: =========================================== ! 1083: ! 1084: There are two variants of this CPU, called 1.0 and 1.1, which have ! 1085: different machine descriptions. You must use the right one for your ! 1086: machine. All 7NN machines and 8N7 machines use 1.1, while all other ! 1087: 8NN machines use 1.0. ! 1088: ! 1089: The easiest way to handle this problem is to use `configure hpNNN' ! 1090: or `configure hpNNN-hpux', where NNN is the model number of the ! 1091: machine. Then `configure' will figure out if the machine is a 1.0 or ! 1092: 1.1. Use `uname -a' to find out the model number of your machine. ! 1093: ! 1094: `-g' does not work on HP-UX, since that system uses a peculiar ! 1095: debugging format which GNU CC does not know about. There are ! 1096: preliminary versions of GAS and GDB for the HP-PA which do work with ! 1097: GNU CC for debugging. You can get them by anonymous ftp from ! 1098: `jaguar.cs.utah.edu' `dist' subdirectory. You would need to install ! 1099: GAS in the file ! 1100: ! 1101: /usr/local/lib/gcc-lib/CONFIGURATION/GCCVERSION/as ! 1102: ! 1103: where CONFIGURATION is the configuration name (perhaps `hpNNN-hpux') ! 1104: and GCCVERSION is the GNU CC version number. Do this *before* starting ! 1105: the build process, otherwise you will get errors from the HPUX ! 1106: assembler while building `libgcc2.a'. The command ! 1107: ! 1108: make install-dir ! 1109: ! 1110: will create the necessary directory hierarchy so you can install GAS ! 1111: before building GCC. ! 1112: ! 1113: If you obtained GAS before October 6, 1992 it is highly recommended ! 1114: you get a new one to avoid several bugs which have been discovered ! 1115: recently. ! 1116: ! 1117: To enable debugging, configure GNU CC with the `--gas' option before ! 1118: building. ! 1119: ! 1120: It has been reported that GNU CC produces invalid assembly code for ! 1121: 1.1 machines running HP-UX 8.02 when using the HP assembler. Typically ! 1122: the errors look like this: ! 1123: as: bug.s @line#15 [err#1060] ! 1124: Argument 0 or 2 in FARG upper ! 1125: - lookahead = ARGW1=FR,RTNVAL=GR ! 1126: as: foo.s @line#28 [err#1060] ! 1127: Argument 0 or 2 in FARG upper ! 1128: - lookahead = ARGW1=FR ! 1129: ! 1130: You can check the version of HP-UX you are running by executing the ! 1131: command `uname -r'. If you are indeed running HP-UX 8.02 on a PA and ! 1132: using the HP assembler then configure GCC with "hpNNN-hpux8.02". ! 1133: ! 1134: Installing GNU CC on the Sun ! 1135: ============================ ! 1136: ! 1137: On Solaris (version 2.1), do not use the linker or other tools in ! 1138: `/usr/ucb' to build GNU CC. Use `/usr/ccs/bin'. ! 1139: ! 1140: Make sure the environment variable `FLOAT_OPTION' is not set when ! 1141: you compile `libgcc.a'. If this option were set to `f68881' when ! 1142: `libgcc.a' is compiled, the resulting code would demand to be linked ! 1143: with a special startup file and would not link properly without special ! 1144: pains. ! 1145: ! 1146: The GNU compiler does not really support the Super SPARC processor ! 1147: that is used in SPARC Station 10 and similar class machines. You can ! 1148: get code that runs by specifying `sparc' as the cpu type; however, its ! 1149: performance is not very good, and may vary widely according to the ! 1150: compiler version and optimization options used. This is because the ! 1151: instruction scheduling parameters designed for the Sparc are not correct ! 1152: for the Super SPARC. Implementing scheduling parameters for the Super ! 1153: SPARC might be a good project for someone who is willing to learn a ! 1154: great deal about instruction scheduling in GNU CC. ! 1155: ! 1156: There is a bug in `alloca' in certain versions of the Sun library. ! 1157: To avoid this bug, install the binaries of GNU CC that were compiled by ! 1158: GNU CC. They use `alloca' as a built-in function and never the one in ! 1159: the library. ! 1160: ! 1161: Some versions of the Sun compiler crash when compiling GNU CC. The ! 1162: problem is a segmentation fault in cpp. This problem seems to be due to ! 1163: the bulk of data in the environment variables. You may be able to avoid ! 1164: it by using the following command to compile GNU CC with Sun CC: ! 1165: ! 1166: make CC="TERMCAP=x OBJS=x LIBFUNCS=x STAGESTUFF=x cc" ! 1167: ! 1168: Installing GNU CC on the 3b1 ! 1169: ============================ ! 1170: ! 1171: Installing GNU CC on the 3b1 is difficult if you do not already have ! 1172: GNU CC running, due to bugs in the installed C compiler. However, the ! 1173: following procedure might work. We are unable to test it. ! 1174: ! 1175: 1. Comment out the `#include "config.h"' line on line 37 of `cccp.c' ! 1176: and do `make cpp'. This makes a preliminary version of GNU cpp. ! 1177: ! 1178: 2. Save the old `/lib/cpp' and copy the preliminary GNU cpp to that ! 1179: file name. ! 1180: ! 1181: 3. Undo your change in `cccp.c', or reinstall the original version, ! 1182: and do `make cpp' again. ! 1183: ! 1184: 4. Copy this final version of GNU cpp into `/lib/cpp'. ! 1185: ! 1186: 5. Replace every occurrence of `obstack_free' in the file `tree.c' ! 1187: with `_obstack_free'. ! 1188: ! 1189: 6. Run `make' to get the first-stage GNU CC. ! 1190: ! 1191: 7. Reinstall the original version of `/lib/cpp'. ! 1192: ! 1193: 8. Now you can compile GNU CC with itself and install it in the normal ! 1194: fashion. ! 1195: ! 1196: Installing GNU CC on Unos ! 1197: ========================= ! 1198: ! 1199: Use `configure unos' for building on Unos. ! 1200: ! 1201: The Unos assembler is named `casm' instead of `as'. For some ! 1202: strange reason linking `/bin/as' to `/bin/casm' changes the behavior, ! 1203: and does not work. So, when installing GNU CC, you should install the ! 1204: following script as `as' in the subdirectory where the passes of GCC ! 1205: are installed: ! 1206: ! 1207: #!/bin/sh ! 1208: casm $* ! 1209: ! 1210: The default Unos library is named `libunos.a' instead of `libc.a'. ! 1211: To allow GNU CC to function, either change all references to `-lc' in ! 1212: `gcc.c' to `-lunos' or link `/lib/libc.a' to `/lib/libunos.a'. ! 1213: ! 1214: When compiling GNU CC with the standard compiler, to overcome bugs in ! 1215: the support of `alloca', do not use `-O' when making stage 2. Then use ! 1216: the stage 2 compiler with `-O' to make the stage 3 compiler. This ! 1217: compiler will have the same characteristics as the usual stage 2 ! 1218: compiler on other systems. Use it to make a stage 4 compiler and ! 1219: compare that with stage 3 to verify proper compilation. ! 1220: ! 1221: (Perhaps simply defining `ALLOCA' in `x-crds' as described in the ! 1222: comments there will make the above paragraph superfluous. Please ! 1223: inform us of whether this works.) ! 1224: ! 1225: Unos uses memory segmentation instead of demand paging, so you will ! 1226: need a lot of memory. 5 Mb is barely enough if no other tasks are ! 1227: running. If linking `cc1' fails, try putting the object files into a ! 1228: library and linking from that library. ! 1229: ! 1230: Installing GNU CC on VMS ! 1231: ======================== ! 1232: ! 1233: The VMS version of GNU CC is distributed in a backup saveset ! 1234: containing both source code and precompiled binaries. ! 1235: ! 1236: To install the `gcc' command so you can use the compiler easily, in ! 1237: the same manner as you use the VMS C compiler, you must install the VMS ! 1238: CLD file for GNU CC as follows: ! 1239: ! 1240: 1. Define the VMS logical names `GNU_CC' and `GNU_CC_INCLUDE' to ! 1241: point to the directories where the GNU CC executables ! 1242: (`gcc-cpp.exe', `gcc-cc1.exe', etc.) and the C include files are ! 1243: kept respectively. This should be done with the commands: ! 1244: ! 1245: $ assign /system /translation=concealed - ! 1246: disk:[gcc.] gnu_cc ! 1247: $ assign /system /translation=concealed - ! 1248: disk:[gcc.include.] gnu_cc_include ! 1249: ! 1250: with the appropriate disk and directory names. These commands can ! 1251: be placed in your system startup file so they will be executed ! 1252: whenever the machine is rebooted. You may, if you choose, do this ! 1253: via the `GCC_INSTALL.COM' script in the `[GCC]' directory. ! 1254: ! 1255: 2. Install the `GCC' command with the command line: ! 1256: ! 1257: $ set command /table=sys$common:[syslib]dcltables - ! 1258: /output=sys$common:[syslib]dcltables gnu_cc:[000000]gcc ! 1259: $ install replace sys$common:[syslib]dcltables ! 1260: ! 1261: 3. To install the help file, do the following: ! 1262: ! 1263: $ library/help sys$library:helplib.hlb gcc.hlp ! 1264: ! 1265: Now you can invoke the compiler with a command like `gcc /verbose ! 1266: file.c', which is equivalent to the command `gcc -v -c file.c' in ! 1267: Unix. ! 1268: ! 1269: If you wish to use GNU C++ you must first install GNU CC, and then ! 1270: perform the following steps: ! 1271: ! 1272: 1. Define the VMS logical name `GNU_GXX_INCLUDE' to point to the ! 1273: directory where the preprocessor will search for the C++ header ! 1274: files. This can be done with the command: ! 1275: ! 1276: $ assign /system /translation=concealed - ! 1277: disk:[gcc.gxx_include.] gnu_gxx_include ! 1278: ! 1279: with the appropriate disk and directory name. If you are going to ! 1280: be using libg++, this is where the libg++ install procedure will ! 1281: install the libg++ header files. ! 1282: ! 1283: 2. Obtain the file `gcc-cc1plus.exe', and place this in the same ! 1284: directory that `gcc-cc1.exe' is kept. ! 1285: ! 1286: The GNU C++ compiler can be invoked with a command like `gcc /plus ! 1287: /verbose file.cc', which is equivalent to the command `g++ -v -c ! 1288: file.cc' in Unix. ! 1289: ! 1290: We try to put corresponding binaries and sources on the VMS ! 1291: distribution tape. But sometimes the binaries will be from an older ! 1292: version than the sources, because we don't always have time to update ! 1293: them. (Use the `/version' option to determine the version number of ! 1294: the binaries and compare it with the source file `version.c' to tell ! 1295: whether this is so.) In this case, you should use the binaries you get ! 1296: to recompile the sources. If you must recompile, here is how: ! 1297: ! 1298: 1. Execute the command procedure `vmsconfig.com' to set up the files ! 1299: `tm.h', `config.h', `aux-output.c', and `md.', and to create files ! 1300: `tconfig.h' and `hconfig.h'. This procedure also creates several ! 1301: linker option files used by `make-cc1.com' and a data file used by ! 1302: `make-l2.com'. ! 1303: ! 1304: $ @vmsconfig.com ! 1305: ! 1306: 2. Setup the logical names and command tables as defined above. In ! 1307: addition, define the VMS logical name `GNU_BISON' to point at the ! 1308: to the directories where the Bison executable is kept. This ! 1309: should be done with the command: ! 1310: ! 1311: $ assign /system /translation=concealed - ! 1312: disk:[bison.] gnu_bison ! 1313: ! 1314: You may, if you choose, use the `INSTALL_BISON.COM' script in the ! 1315: `[BISON]' directory. ! 1316: ! 1317: 3. Install the `BISON' command with the command line: ! 1318: ! 1319: $ set command /table=sys$common:[syslib]dcltables - ! 1320: /output=sys$common:[syslib]dcltables - ! 1321: gnu_bison:[000000]bison ! 1322: $ install replace sys$common:[syslib]dcltables ! 1323: ! 1324: 4. Type `@make-gcc' to recompile everything (alternatively, submit ! 1325: the file `make-gcc.com' to a batch queue). If you wish to build ! 1326: the GNU C++ compiler as well as the GNU CC compiler, you must ! 1327: first edit `make-gcc.com' and follow the instructions that appear ! 1328: in the comments. ! 1329: ! 1330: 5. In order to use GCC, you need a library of functions which GCC ! 1331: compiled code will call to perform certain tasks, and these ! 1332: functions are defined in the file `libgcc2.c'. To compile this ! 1333: you should use the command procedure `make-l2.com', which will ! 1334: generate the library `libgcc2.olb'. `libgcc2.olb' should be built ! 1335: using the compiler built from the same distribution that ! 1336: `libgcc2.c' came from, and `make-gcc.com' will automatically do ! 1337: all of this for you. ! 1338: ! 1339: To install the library, use the following commands: ! 1340: ! 1341: $ library gnu_cc:[000000]gcclib/delete=(new,eprintf) ! 1342: $ library gnu_cc:[000000]gcclib/delete=L_* ! 1343: $ library libgcc2/extract=*/output=libgcc2.obj ! 1344: $ library gnu_cc:[000000]gcclib libgcc2.obj ! 1345: ! 1346: The first command simply removes old modules that will be replaced ! 1347: with modules from `libgcc2' under different module names. The ! 1348: modules `new' and `eprintf' may not actually be present in your ! 1349: `gcclib.olb'--if the VMS librarian complains about those modules ! 1350: not being present, simply ignore the message and continue on with ! 1351: the next command. The second command removes the modules that ! 1352: came from the previous version of the library `libgcc2.c'. ! 1353: ! 1354: Whenever you update the compiler on your system, you should also ! 1355: update the library with the above procedure. ! 1356: ! 1357: 6. You may wish to build GCC in such a way that no files are written ! 1358: to the directory where the source files reside. An example would ! 1359: be the when the source files are on a read-only disk. In these ! 1360: cases, execute the following DCL commands (substituting your ! 1361: actual path names): ! 1362: ! 1363: $ assign dua0:[gcc.build_dir.]/translation=concealed, - ! 1364: dua1:[gcc.source_dir.]/translation=concealed gcc_build ! 1365: $ set default gcc_build:[000000] ! 1366: ! 1367: where the directory `dua1:[gcc.source_dir]' contains the source ! 1368: code, and the directory `dua0:[gcc.build_dir]' is meant to contain ! 1369: all of the generated object files and executables. Once you have ! 1370: done this, you can proceed building GCC as described above. (Keep ! 1371: in mind that `gcc_build' is a rooted logical name, and thus the ! 1372: device names in each element of the search list must be an actual ! 1373: physical device name rather than another rooted logical name). ! 1374: ! 1375: 7. *If you are building GNU CC with a previous version of GNU CC, you ! 1376: also should check to see that you have the newest version of the ! 1377: assembler*. In particular, GNU CC version 2 treats global constant ! 1378: variables slightly differently from GNU CC version 1, and GAS ! 1379: version 1.38.1 does not have the patches required to work with GCC ! 1380: version 2. If you use GAS 1.38.1, then `extern const' variables ! 1381: will not have the read-only bit set, and the linker will generate ! 1382: warning messages about mismatched psect attributes for these ! 1383: variables. These warning messages are merely a nuisance, and can ! 1384: safely be ignored. ! 1385: ! 1386: If you are compiling with a version of GNU CC older than 1.33, ! 1387: specify `/DEFINE=("inline=")' as an option in all the ! 1388: compilations. This requires editing all the `gcc' commands in ! 1389: `make-cc1.com'. (The older versions had problems supporting ! 1390: `inline'.) Once you have a working 1.33 or newer GNU CC, you can ! 1391: change this file back. ! 1392: ! 1393: 8. If you want to build GNU CC with the VAX C compiler, you will need ! 1394: to make minor changes in `make-cccp.com' and `make-cc1.com' to ! 1395: choose alternate definitions of `CC', `CFLAGS', and `LIBS'. See ! 1396: comments in those files. However, you must also have a working ! 1397: version of the GNU assembler (GNU as, aka GAS) as it is used as ! 1398: the back-end for GNU CC to produce binary object modules and is ! 1399: not included in the GNU CC sources. GAS is also needed to compile ! 1400: `libgcc2' in order to build `gcclib' (see above); `make-l2.com' ! 1401: expects to be able to find it operational in ! 1402: `gnu_cc:[000000]gnu-as.exe'. ! 1403: ! 1404: To use GNU CC on VMS, you need the VMS driver programs `gcc.exe', ! 1405: `gcc.com', and `gcc.cld'. They are distributed with the VMS ! 1406: binaries (`gcc-vms') rather than the GNU CC sources. GAS is also ! 1407: included in `gcc-vms', as is Bison. ! 1408: ! 1409: Once you have successfully built GNU CC with VAX C, you should use ! 1410: the resulting compiler to rebuild itself. Before doing this, be ! 1411: sure to restore the `CC', `CFLAGS', and `LIBS' definitions in ! 1412: `make-cccp.com' and `make-cc1.com'. The second generation ! 1413: compiler will be able to take advantage of many optimizations that ! 1414: must be suppressed when building with other compilers. ! 1415: ! 1416: Under previous versions of GNU CC, the generated code would ! 1417: occasionally give strange results when linked with the sharable ! 1418: `VAXCRTL' library. Now this should work. ! 1419: ! 1420: Even with this version, however, GNU CC itself should not be linked ! 1421: with the sharable `VAXCRTL'. The version of `qsort' in `VAXCRTL' has a ! 1422: bug (known to be present in VMS versions V4.6 through V5.5) which ! 1423: causes the compiler to fail. ! 1424: ! 1425: The executables are generated by `make-cc1.com' and `make-cccp.com' ! 1426: use the object library version of `VAXCRTL' in order to make use of the ! 1427: `qsort' routine in `gcclib.olb'. If you wish to link the compiler ! 1428: executables with the shareable image version of `VAXCRTL', you should ! 1429: edit the file `tm.h' (created by `vmsconfig.com') to define the macro ! 1430: `QSORT_WORKAROUND'. ! 1431: ! 1432: `QSORT_WORKAROUND' is always defined when GNU CC is compiled with ! 1433: VAX C, to avoid a problem in case `gcclib.olb' is not yet available. ! 1434: ! 1435: Installing GNU CC on the WE32K ! 1436: ============================== ! 1437: ! 1438: These computers are also known as the 3b2, 3b5, 3b20 and other ! 1439: similar names. (However, the 3b1 is actually a 68000; see *Note 3b1 ! 1440: Install::.) ! 1441: ! 1442: Don't use `-g' when compiling with the system's compiler. The ! 1443: system's linker seems to be unable to handle such a large program with ! 1444: debugging information. ! 1445: ! 1446: The system's compiler runs out of capacity when compiling `stmt.c' ! 1447: in GNU CC. You can work around this by building `cpp' in GNU CC first, ! 1448: then use that instead of the system's preprocessor with the system's C ! 1449: compiler to compile `stmt.c'. Here is how: ! 1450: ! 1451: mv /lib/cpp /lib/cpp.att ! 1452: cp cpp /lib/cpp.gnu ! 1453: echo '/lib/cpp.gnu -traditional ${1+"$@"}' > /lib/cpp ! 1454: chmod +x /lib/cpp ! 1455: ! 1456: The system's compiler produces bad code for some of the GNU CC ! 1457: optimization files. So you must build the stage 2 compiler without ! 1458: optimization. Then build a stage 3 compiler with optimization. That ! 1459: executable should work. Here are the necessary commands: ! 1460: ! 1461: make LANGUAGES=c CC=stage1/xgcc CFLAGS="-Bstage1/ -g" ! 1462: make stage2 ! 1463: make CC=stage2/xgcc CFLAGS="-Bstage2/ -g -O" ! 1464: ! 1465: You may need to raise the ULIMIT setting to build a C++ compiler, as ! 1466: the file `cc1plus' is larger than one megabyte. ! 1467: ! 1468: Installing GNU CC on the MIPS ! 1469: ============================= ! 1470: ! 1471: See *Note Installation:: about whether to use either of the options ! 1472: `--with-stabs' or `--with-gnu-as'. ! 1473: ! 1474: The MIPS C compiler needs to be told to increase its table size for ! 1475: switch statements with the `-Wf,-XNg1500' option in order to compile ! 1476: `cp-parse.c'. If you use the `-O2' optimization option, you also need ! 1477: to use `-Olimit 3000'. Both of these options are automatically ! 1478: generated in the `Makefile' that the shell script `configure' builds. ! 1479: If you override the `CC' make variable and use the MIPS compilers, you ! 1480: may need to add `-Wf,-XNg1500 -Olimit 3000'. ! 1481: ! 1482: MIPS computers running RISC-OS can support four different ! 1483: personalities: default, BSD 4.3, System V.3, and System V.4 (older ! 1484: versions of RISC-OS don't support V.4). To configure GCC for these ! 1485: platforms use the following configurations: ! 1486: ! 1487: `mips-mips-riscos`rev'' ! 1488: Default configuration for RISC-OS, revision `rev'. ! 1489: ! 1490: `mips-mips-riscos`rev'bsd' ! 1491: BSD 4.3 configuration for RISC-OS, revision `rev'. ! 1492: ! 1493: `mips-mips-riscos`rev'sysv4' ! 1494: System V.4 configuration for RISC-OS, revision `rev'. ! 1495: ! 1496: `mips-mips-riscos`rev'sysv' ! 1497: System V.3 configuration for RISC-OS, revision `rev'. ! 1498: ! 1499: The revision `rev' mentioned above is the revision of RISC-OS to ! 1500: use. You must reconfigure GCC when going from a RISC-OS revision 4 to ! 1501: RISC-OS revision 5. This has the effect of avoiding a linker bug. ! 1502: ! 1503: DECstations can support three different personalities: Ultrix, DEC ! 1504: OSF/1, and OSF/rose. To configure GCC for these platforms use the ! 1505: following configurations: ! 1506: ! 1507: `decstation-ultrix' ! 1508: Ultrix configuration. ! 1509: ! 1510: `decstation-osf1' ! 1511: Dec's version of OSF/1. ! 1512: ! 1513: `decstation-osfrose' ! 1514: Open Software Foundation reference port of OSF/1 which uses the ! 1515: OSF/rose object file format instead of ECOFF. Normally, you would ! 1516: not select this configuration. ! 1517: ! 1518: On Irix version 4.0.5F, and perhaps on some other versions as well, ! 1519: there is an assembler bug that reorders instructions incorrectly. To ! 1520: work around it, specify the target configuration `mips-sgi-irix4loser'. ! 1521: This configuration inhibits assembler optimization. ! 1522: ! 1523: You can turn off assembler optimization in a compiler configured with ! 1524: target `mips-sgi-irix4' using the `-noasmopt' option. This compiler ! 1525: option passes the option `-O0' to the assembler, to inhibit reordering. ! 1526: ! 1527: The `-noasmopt' option can be useful for testing whether a problem ! 1528: is due to erroneous assembler reordering. Even if a problem does not go ! 1529: away with `-noasmopt', it may still be due to assembler ! 1530: reordering--perhaps GNU CC itself was miscompiled as a result. ! 1531: ! 1532: We know this is inconvenient, but it's the best that can be done at ! 1533: the last minute. ! 1534: ! 1535: `collect2' ! 1536: ========== ! 1537: ! 1538: Many target systems do not have support in the assembler and linker ! 1539: for "constructors"--initialization functions to be called before the ! 1540: official "start" of `main'. On such systems, GNU CC uses a utility ! 1541: called `collect2' to arrange to call these functions at start time. ! 1542: ! 1543: The program `collect2' works by linking the program once and looking ! 1544: through the linker output file for symbols with particular names ! 1545: indicating they are constructor functions. If it finds any, it creates ! 1546: a new temporary `.c' file containing a table of them, compiles it, and ! 1547: links the program a second time including that file. ! 1548: ! 1549: The actual calls to the constructors are carried out by a subroutine ! 1550: called `__main', which is called (automatically) at the beginning of ! 1551: the body of `main' (provided `main' was compiled with GNU CC). ! 1552: ! 1553: The program `collect2' is installed as `ld' in the directory where ! 1554: the passes of the compiler are installed. When `collect2' needs to ! 1555: find the *real* `ld', it tries the following file names: ! 1556: ! 1557: * `gld' in the directories listed in the compiler's search ! 1558: directories. ! 1559: ! 1560: * `gld' in the directories listed in the environment variable `PATH'. ! 1561: ! 1562: * `real-ld' in the compiler's search directories. ! 1563: ! 1564: * `real-ld' in `PATH'. ! 1565: ! 1566: * `ld' in `PATH'. ! 1567: ! 1568: "The compiler's search directories" means all the directories where ! 1569: `gcc' searches for passes of the compiler. This includes directories ! 1570: that you specify with `-B'. ! 1571: ! 1572: Cross-compilers search a little differently: ! 1573: ! 1574: * `gld' in the compiler's search directories. ! 1575: ! 1576: * `TARGET-gld' in `PATH'. ! 1577: ! 1578: * `real-ld' in the compiler's search directories. ! 1579: ! 1580: * `TARGET-real-ld' in `PATH'. ! 1581: ! 1582: * `TARGET-ld' in `PATH'. ! 1583: ! 1584: `collect2' does not search for `ld' using the compiler's search ! 1585: directories, because if it did, it would find itself--not the real ! 1586: `ld'--and this could lead to infinite recursion. However, the ! 1587: directory where `collect2' is installed might happen to be in `PATH'. ! 1588: That could lead `collect2' to invoke itself anyway. when looking for ! 1589: `ld'. ! 1590: ! 1591: To prevent this, `collect2' explicitly avoids running `ld' using the ! 1592: file name under which `collect2' itself was invoked. In fact, it ! 1593: remembers up to two such names--in case one copy of `collect2' finds ! 1594: another copy (or version) of `collect2' installed as `ld' in a second ! 1595: place in the search path. ! 1596: ! 1597: If two file names to avoid are not sufficient, you may still ! 1598: encounter an infinite recursion of `collect2' processes. When this ! 1599: happens. check all the files installed as `ld' in any of the ! 1600: directories searched, and straighten out the situation. ! 1601: ! 1602: (In a future version, we will probably change `collect2' to avoid ! 1603: any reinvocation of a file from which any parent `collect2' was run.) ! 1604: ! 1605: Standard Header File Directories ! 1606: ================================ ! 1607: ! 1608: `GCC_INCLUDE_DIR' means the same thing for native and cross. It is ! 1609: where GNU CC stores its private include files, and also where GNU CC ! 1610: stores the fixed include files. A cross compiled GNU CC runs ! 1611: `fixincludes' on the header files in `$(tooldir)/include'. (If the ! 1612: cross compilation header files need to be fixed, they must be installed ! 1613: before GNU CC is built. If the cross compilation header files are ! 1614: already suitable for ANSI C and GNU CC, nothing special need be done). ! 1615: ! 1616: `GPLUS_INCLUDE_DIR' means the same thing for native and cross. It ! 1617: is where `g++' looks first for header files. `libg++' installs only ! 1618: target independent header files in that directory. ! 1619: ! 1620: `LOCAL_INCLUDE_DIR' is used only for a native compiler. It is ! 1621: normally `/usr/local/include'. GNU CC searches this directory so that ! 1622: users can install header files in `/usr/local/include'. ! 1623: ! 1624: `CROSS_INCLUDE_DIR' is used only for a cross compiler. GNU CC ! 1625: doesn't install anything there. ! 1626: ! 1627: `TOOL_INCLUDE_DIR' is used for both native and cross compilers. It ! 1628: is the place for other packages to install header files that GNU CC will ! 1629: use. For a cross-compiler, this is the equivalent of `/usr/include'. ! 1630: When you build a cross-compiler, `fixincludes' processes any header ! 1631: files in this directory. ! 1632:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.