Annotation of GNUtools/cc/gcc.info-5, revision 1.1

1.1     ! root        1: This is Info file gcc.info, produced by Makeinfo-1.54 from the input
        !             2: file gcc.texi.
        !             3: 
        !             4:    This file documents the use and the internals of the GNU compiler.
        !             5: 
        !             6:    Published by the Free Software Foundation 675 Massachusetts Avenue
        !             7: Cambridge, MA 02139 USA
        !             8: 
        !             9:    Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc.
        !            10: 
        !            11:    Permission is granted to make and distribute verbatim copies of this
        !            12: manual provided the copyright notice and this permission notice are
        !            13: preserved on all copies.
        !            14: 
        !            15:    Permission is granted to copy and distribute modified versions of
        !            16: this manual under the conditions for verbatim copying, provided also
        !            17: that the sections entitled "GNU General Public License" and "Protect
        !            18: Your Freedom--Fight `Look And Feel'" are included exactly as in the
        !            19: original, and provided that the entire resulting derived work is
        !            20: distributed under the terms of a permission notice identical to this
        !            21: one.
        !            22: 
        !            23:    Permission is granted to copy and distribute translations of this
        !            24: manual into another language, under the above conditions for modified
        !            25: versions, except that the sections entitled "GNU General Public
        !            26: License" and "Protect Your Freedom--Fight `Look And Feel'", and this
        !            27: permission notice, may be included in translations approved by the Free
        !            28: Software Foundation instead of in the original English.
        !            29: 
        !            30: 
        !            31: File: gcc.info,  Node: Installation,  Next: C Extensions,  Prev: Invoking GCC,  Up: Top
        !            32: 
        !            33: Installing GNU CC
        !            34: *****************
        !            35: 
        !            36:    Here is the procedure for installing GNU CC on a Unix system.
        !            37: 
        !            38: * Menu:
        !            39: 
        !            40: * Other Dir::     Compiling in a separate directory (not where the source is).
        !            41: * Cross-Compiler::   Building and installing a cross-compiler.
        !            42: * PA Install::    See below for installation on the HP Precision Architecture.
        !            43: * Sun Install::   See below for installation on the Sun.
        !            44: * 3b1 Install::   See below for installation on the 3b1.
        !            45: * Unos Install::  See below for installation on Unos (from CRDS).
        !            46: * VMS Install::   See below for installation on VMS.
        !            47: * WE32K Install:: See below for installation on the 3b* aside from the 3b1.
        !            48: * MIPS Install::  See below for installation on the MIPS Architecture.
        !            49: * Collect2::     How `collect2' works; how it finds `ld'.
        !            50: * Header Dirs::   Understanding the standard header file directories.
        !            51: 
        !            52:   1. If you have built GNU CC previously in the same directory for a
        !            53:      different target machine, do `make distclean' to delete all files
        !            54:      that might be invalid.  One of the files this deletes is
        !            55:      `Makefile'; if `make distclean' complains that `Makefile' does not
        !            56:      exist, it probably means that the directory is already suitably
        !            57:      clean.
        !            58: 
        !            59:   2. On a System V release 4 system, make sure `/usr/bin' precedes
        !            60:      `/usr/ucb' in `PATH'.  The `cc' command in `/usr/ucb' uses
        !            61:      libraries which have bugs.
        !            62: 
        !            63:   3. Specify the host and target machine configurations.  You do this by
        !            64:      running the file `configure' with appropriate arguments.
        !            65: 
        !            66:      If you are building a compiler to produce code for the machine it
        !            67:      runs on, specify just one machine type, with the `--target'
        !            68:      option; the host type will default to be the same as the target.
        !            69:      (For information on building a cross-compiler, see *Note
        !            70:      Cross-Compiler::.)  Here is an example:
        !            71: 
        !            72:           configure --target=sparc-sun-sunos4.1
        !            73: 
        !            74:      If you run `configure' without specifying configuration arguments,
        !            75:      `configure' tries to guess the type of host you are on, and uses
        !            76:      that configuration type for both host and target.  So you don't
        !            77:      need to specify a configuration, for building a native compiler,
        !            78:      unless `configure' cannot figure out what your configuration is.
        !            79: 
        !            80:      A configuration name may be canonical or it may be more or less
        !            81:      abbreviated.
        !            82: 
        !            83:      A canonical configuration name has three parts, separated by
        !            84:      dashes.  It looks like this: `CPU-COMPANY-SYSTEM'.  (The three
        !            85:      parts may themselves contain dashes; `configure' can figure out
        !            86:      which dashes serve which purpose.)  For example,
        !            87:      `m68k-sun-sunos4.1' specifies a Sun 3.
        !            88: 
        !            89:      You can also replace parts of the configuration by nicknames or
        !            90:      aliases.  For example, `sun3' stands for `m68k-sun', so
        !            91:      `sun3-sunos4.1' is another way to specify a Sun 3.  You can also
        !            92:      use simply `sun3-sunos', since the version of SunOS is assumed by
        !            93:      default to be version 4.  `sun3-bsd' also works, since `configure'
        !            94:      knows that the only BSD variant on a Sun 3 is SunOS.
        !            95: 
        !            96:      You can specify a version number after any of the system types,
        !            97:      and some of the CPU types.  In most cases, the version is
        !            98:      irrelevant, and will be ignored.  So you might as well specify the
        !            99:      version if you know it.
        !           100: 
        !           101:      Here are the possible CPU types:
        !           102: 
        !           103:           a29k, alpha, arm, cN, clipper, elxsi, h8300, hppa1.0, hppa1.1,
        !           104:           i370, i386, i486, i860, i960, m68000, m68k, m88k, mips,
        !           105:           ns32k, pyramid, romp, rs6000, sh, sparc, sparclite, vax,
        !           106:           we32k.
        !           107: 
        !           108:      Here are the recognized company names.  As you can see, customary
        !           109:      abbreviations are used rather than the longer official names.
        !           110: 
        !           111:           alliant, altos, apollo, att, bull, cbm, convergent, convex,
        !           112:           crds, dec, dg, dolphin, elxsi, encore, harris, hitachi, hp,
        !           113:           ibm, intergraph, isi, mips, motorola, ncr, next, ns, omron,
        !           114:           plexus, sequent, sgi, sony, sun, tti, unicom.
        !           115: 
        !           116:      The company name is meaningful only to disambiguate when the rest
        !           117:      of the information supplied is insufficient.  You can omit it,
        !           118:      writing just `CPU-SYSTEM', if it is not needed.  For example,
        !           119:      `vax-ultrix4.2' is equivalent to `vax-dec-ultrix4.2'.
        !           120: 
        !           121:      Here is a list of system types:
        !           122: 
        !           123:           aix, acis, aos, bsd, clix, ctix, dgux, dynix, genix, hpux,
        !           124:           isc, linux, luna, lynxos, mach, minix, newsos, osf, osfrose,
        !           125:           riscos, sco, solaris, sunos, sysv, ultrix, unos, vms.
        !           126: 
        !           127:      You can omit the system type; then `configure' guesses the
        !           128:      operating system from the CPU and company.
        !           129: 
        !           130:      You can add a version number to the system type; this may or may
        !           131:      not make a difference.  For example, you can write `bsd4.3' or
        !           132:      `bsd4.4' to distinguish versions of BSD.  In practice, the version
        !           133:      number is most needed for `sysv3' and `sysv4', which are often
        !           134:      treated differently.
        !           135: 
        !           136:      If you specify an impossible combination such as `i860-dg-vms',
        !           137:      then you may get an error message from `configure', or it may
        !           138:      ignore part of the information and do the best it can with the
        !           139:      rest.  `configure' always prints the canonical name for the
        !           140:      alternative that it used.
        !           141: 
        !           142:      Often a particular model of machine has a name.  Many machine
        !           143:      names are recognized as aliases for CPU/company combinations.
        !           144:      Thus, the machine name `sun3', mentioned above, is an alias for
        !           145:      `m68k-sun'.  Sometimes we accept a company name as a machine name,
        !           146:      when the name is popularly used for a particular machine.  Here is
        !           147:      a table of the known machine names:
        !           148: 
        !           149:           3300, 3b1, 3bN, 7300, altos3068, altos, apollo68, att-7300,
        !           150:           balance, convex-cN, crds, decstation-3100, decstation, delta,
        !           151:           encore, fx2800, gmicro, hp7NN, hp8NN, hp9k2NN, hp9k3NN,
        !           152:           hp9k7NN, hp9k8NN, iris4d, iris, isi68, m3230, magnum, merlin,
        !           153:           miniframe, mmax, news-3600, news800, news, next, pbd, pc532,
        !           154:           pmax, ps2, risc-news, rtpc, sun2, sun386i, sun386, sun3,
        !           155:           sun4, symmetry, tower-32, tower.
        !           156: 
        !           157:      Remember that a machine name specifies both the cpu type and the
        !           158:      company name.
        !           159: 
        !           160:      There are four additional options you can specify independently to
        !           161:      describe variant hardware and software configurations.  These are
        !           162:      `--with-gnu-as', `--with-gnu-ld', `--with-stabs' and `--nfp'.
        !           163: 
        !           164:     `--with-gnu-as'
        !           165:           If you will use GNU CC with the GNU assembler (GAS), you
        !           166:           should declare this by using the `--with-gnu-as' option when
        !           167:           you run `configure'.
        !           168: 
        !           169:           Using this option does not install GAS.  It only modifies the
        !           170:           output of GNU CC to work with GAS.  Building and installing
        !           171:           GAS is up to you.
        !           172: 
        !           173:           The systems where it makes a difference whether you use GAS
        !           174:           are `hppa1.0-ANYTHING-ANYTHING', `hppa1.1-ANYTHING-ANYTHING',
        !           175:           `i386-ANYTHING-sysv', `i860-ANYTHING-bsd', `m68k-bull-sysv',
        !           176:           `m68k-hp-hpux', `m68k-sony-bsd', `m68k-altos-sysv',
        !           177:           `m68000-hp-hpux', `m68000-att-sysv', and `mips-ANY').  On any
        !           178:           other system, `--with-gnu-as' has no effect.
        !           179: 
        !           180:           On the systems listed above (except for the HP-PA), if you
        !           181:           use GAS, you should also use the GNU linker (and specify
        !           182:           `--with-gnu-ld').
        !           183: 
        !           184:     `--with-gnu-ld'
        !           185:           Specify the option `--with-gnu-ld' if you plan to use the GNU
        !           186:           linker with GNU CC.
        !           187: 
        !           188:           This option does not cause the GNU linker to be installed; it
        !           189:           just modifies the behavior of GNU CC to work with the GNU
        !           190:           linker.  Specifically, it inhibits the installation of
        !           191:           `collect2', a program which otherwise serves as a front-end
        !           192:           for the system's linker on most configurations.
        !           193: 
        !           194:     `--with-stabs'
        !           195:           On MIPS based systems and on Alphas, you must specify whether
        !           196:           you want GNU CC to create the normal ECOFF debugging format,
        !           197:           or to use BSD-style stabs passed through the ECOFF symbol
        !           198:           table.  The normal ECOFF debug format cannot fully handle
        !           199:           languages other than C.  BSD stabs format can handle other
        !           200:           languages, but it only works with the GNU debugger GDB.
        !           201: 
        !           202:           Normally, GNU CC uses the ECOFF debugging format by default;
        !           203:           if you prefer BSD stabs, specify `--with-stabs' when you
        !           204:           configure GNU CC.
        !           205: 
        !           206:           No matter which default you choose when you configure GNU CC,
        !           207:           the user can use the `-gcoff' and `-gstabs+' options to
        !           208:           specify explicitly the debug format for a particular
        !           209:           compilation.
        !           210: 
        !           211:     `--nfp'
        !           212:           On certain systems, you must specify whether the machine has
        !           213:           a floating point unit.  These systems include
        !           214:           `m68k-sun-sunosN' and `m68k-isi-bsd'.  On any other system,
        !           215:           `--nfp' currently has no effect, though perhaps there are
        !           216:           other systems where it could usefully make a difference.
        !           217: 
        !           218:      If you want to install your own homemade configuration files, you
        !           219:      can use `local' as the company name to access them.  If you use
        !           220:      configuration `CPU-local', the configuration name without the cpu
        !           221:      prefix is used to form the configuration file names.
        !           222: 
        !           223:      Thus, if you specify `m68k-local', configuration uses files
        !           224:      `local.md', `local.h', `local.c', `xm-local.h', `t-local', and
        !           225:      `x-local', all in the directory `config/m68k'.
        !           226: 
        !           227:      Here is a list of configurations that have special treatment or
        !           228:      special things you must know:
        !           229: 
        !           230:     `alpha-*-osf1'
        !           231:           Systems using processors that implement the DEC Alpha
        !           232:           architecture and are running the OSF/1 operating system, for
        !           233:           example the DEC Alpha AXP systems.  (VMS on the Alpha is not
        !           234:           currently supported by GNU CC.)
        !           235: 
        !           236:           GNU CC writes a `.verstamp' directive to the assembler output
        !           237:           file unless it is built as a cross-compiler.  It gets the
        !           238:           version to use from the system header file
        !           239:           `/usr/include/stamp.h'.  If you install a new version of
        !           240:           OSF/1, you should rebuild GCC to pick up the new version
        !           241:           stamp.
        !           242: 
        !           243:           Note that since the Alpha is a 64-bit architecture,
        !           244:           cross-compilers from 32-bit machines will not generate as
        !           245:           efficient code as that generated when the compiler is running
        !           246:           on a 64-bit machine because many optimizations that depend on
        !           247:           being able to represent a word on the target in an integral
        !           248:           value on the host cannot be performed.  Building
        !           249:           cross-compilers on the Alpha for 32-bit machines has only
        !           250:           been tested in a few cases and may not work properly.
        !           251: 
        !           252:           `make compare' may fail on some versions of OSF/1 unless you
        !           253:           add `-save-temps' to `BOOT_CFLAGS'.  This forces a fixed name
        !           254:           to be used for the assembler input file instead of a random
        !           255:           name in `/tmp'.  The name of the assembler input file is
        !           256:           stored in the object file and will cause miscompared if it
        !           257:           differs between the `stage1' and `stage2' compilations.
        !           258: 
        !           259:           GNU CC now supports both the native (ECOFF) debugging format
        !           260:           used by DBX and GDB and an encapsulated STABS format for use
        !           261:           only with GDB.  See the discussion of the `--with-stabs'
        !           262:           option of `configure' above for more information on these
        !           263:           formats and how to select them.
        !           264: 
        !           265:           There is a bug in DEC's assembler that produces incorrect
        !           266:           line numbers for ECOFF format when the `.align' directive is
        !           267:           used.  To work around this problem, GNU CC will not emit such
        !           268:           alignment directives even if optimization is being performed
        !           269:           if it is writing ECOFF format debugging information.
        !           270:           Unfortunately, this has the very undesirable side-effect that
        !           271:           code addresses when `-O' is specified are different depending
        !           272:           on whether or not `-g' is also specified.
        !           273: 
        !           274:           To avoid this behavior, specify `-gstabs+' and use GDB
        !           275:           instead of DBX.  DEC is now aware of this problem with the
        !           276:           assembler and hopes to provide a fix shortly.
        !           277: 
        !           278:     `a29k'
        !           279:           AMD Am29k-family processors.  These are normally used in
        !           280:           embedded applications.  There are no standard Unix
        !           281:           configurations.  This configuration corresponds to AMD's
        !           282:           standard calling sequence and binary interface and is
        !           283:           compatible with other 29k tools.
        !           284: 
        !           285:           You may need to make a variant of the file `a29k.h' for your
        !           286:           particular configuration.
        !           287: 
        !           288:     `a29k-*-bsd'
        !           289:           AMD Am29050 used in a system running a variant of BSD Unix.
        !           290: 
        !           291:     `elxsi-elxsi-bsd'
        !           292:           The Elxsi's C compiler has known limitations that prevent it
        !           293:           from compiling GNU C.  Please contact `[email protected]' for
        !           294:           more details.
        !           295: 
        !           296:     `hppa*-*-*'
        !           297:           Using GAS is highly recommended for all HP-PA configurations.
        !           298:           See *Note PA Install:: for the special procedures needed to
        !           299:           compile GNU CC for the HP-PA.
        !           300: 
        !           301:     `i386-*-sco'
        !           302:           Compilation with RCC is recommended.  Also, it may be a good
        !           303:           idea to link with GNU malloc instead of the malloc that comes
        !           304:           with the system.
        !           305: 
        !           306:     `i386-*-sco3.2.4'
        !           307:           Use this configuration for SCO release 3.2 version 4.
        !           308: 
        !           309:     `i386-*-isc'
        !           310:           It may be good idea to link with GNU malloc instead of the
        !           311:           malloc that comes with the system.
        !           312: 
        !           313:     `i386-*-esix'
        !           314:           It may be good idea to link with GNU malloc instead of the
        !           315:           malloc that comes with the system.
        !           316: 
        !           317:     `i386-ibm-aix'
        !           318:           You need to use GAS version 2.1 or later, and and LD from GNU
        !           319:           binutils version 2.2 or later.
        !           320: 
        !           321:     `i386-sequent'
        !           322:           Go to the Berkeley universe before compiling.  In addition,
        !           323:           you probably need to create a file named `string.h'
        !           324:           containing just one line: `#include <strings.h>'.
        !           325: 
        !           326:     `i386-sun-sunos4'
        !           327:           You may find that you need another version of GNU CC to begin
        !           328:           bootstrapping with, since the current version when built with
        !           329:           the system's own compiler seems to get an infinite loop
        !           330:           compiling part of `libgcc2.c'.  GNU CC version 2 compiled
        !           331:           with GNU CC (any version) seems not to have this problem.
        !           332: 
        !           333:     `m68000-att'
        !           334:           AT&T 3b1, a.k.a. 7300 PC.  Special procedures are needed to
        !           335:           compile GNU CC with this machine's standard C compiler, due
        !           336:           to bugs in that compiler.  *Note 3b1 Install::.  You can
        !           337:           bootstrap it more easily with previous versions of GNU CC if
        !           338:           you have them.
        !           339: 
        !           340:     `m68000-hp-bsd'
        !           341:           HP 9000 series 200 running BSD.  Note that the C compiler
        !           342:           that comes with this system cannot compile GNU CC; contact
        !           343:           `[email protected]' to get binaries of GNU CC for bootstrapping.
        !           344: 
        !           345:     `m68k-altos'
        !           346:           Altos 3068.  You must use the GNU assembler, linker and
        !           347:           debugger.  Also, you must fix a kernel bug.  Details in the
        !           348:           file `README.ALTOS'.
        !           349: 
        !           350:     `m68k-bull-sysv'
        !           351:           Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to
        !           352:           BOS-2.01. GNU CC works either with native assembler or GNU
        !           353:           assembler. You can use GNU assembler with native coff
        !           354:           generation by providing `--gas' to the configure script or
        !           355:           use GNU assembler with dbx-in-coff encapsulation by providing
        !           356:           `--gas --stabs'. For any problem with native assembler or for
        !           357:           availability of the DPX/2 port of GAS, contact
        !           358:           `[email protected]'.
        !           359: 
        !           360:     `m68k-hp-hpux'
        !           361:           HP 9000 series 300 or 400 running HP-UX.  HP-UX version 8.0
        !           362:           has a bug in the assembler that prevents compilation of GNU
        !           363:           CC.  To fix it, get patch PHCO_0800 from HP.
        !           364: 
        !           365:           In addition, `--gas' does not currently work with this
        !           366:           configuration.  Changes in HP-UX have broken the library
        !           367:           conversion tool and the linker.
        !           368: 
        !           369:     `m68k-sun'
        !           370:           Sun 3.  We do not provide a configuration file to use the Sun
        !           371:           FPA by default, because programs that establish signal
        !           372:           handlers for floating point traps inherently cannot work with
        !           373:           the FPA.
        !           374: 
        !           375:     `m88k-*-svr3'
        !           376:           Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference
        !           377:           port.  These systems tend to use the Green Hills C, revision
        !           378:           1.8.5, as the standard C compiler.  There are apparently bugs
        !           379:           in this compiler that result in object files differences
        !           380:           between stage 2 and stage 3.  If this happens, make the stage
        !           381:           4 compiler and compare it to the stage 3 compiler.  If the
        !           382:           stage 3 and stage 4 object files are identical, this suggests
        !           383:           you encountered a problem with the standard C compiler; the
        !           384:           stage 3 and 4 compilers may be usable.
        !           385: 
        !           386:           It is best, however, to use an older version of GNU CC for
        !           387:           bootstrapping if you have one.
        !           388: 
        !           389:     `m88k-*-dgux'
        !           390:           Motorola m88k running DG/UX.  To build native or cross
        !           391:           compilers on DG/UX, you must first change to the 88open BCS
        !           392:           software development environment.  This is done by issuing
        !           393:           this command:
        !           394: 
        !           395:                eval `sde-target m88kbcs`
        !           396: 
        !           397:     `m88k-tektronix-sysv3'
        !           398:           Tektronix XD88 running UTekV 3.2e.  Do not turn on
        !           399:           optimization while building stage1 if you bootstrap with the
        !           400:           buggy Green Hills compiler.  Also, The bundled LAI System V
        !           401:           NFS is buggy so if you build in an NFS mounted directory,
        !           402:           start from a fresh reboot, or avoid NFS all together.
        !           403:           Otherwise you may have trouble getting clean comparisons
        !           404:           between stages.
        !           405: 
        !           406:     `mips-mips-bsd'
        !           407:           MIPS machines running the MIPS operating system in BSD mode.
        !           408:           It's possible that some old versions of the system lack the
        !           409:           functions `memcpy', `memcmp', and `memset'.  If your system
        !           410:           lacks these, you must remove or undo the definition of
        !           411:           `TARGET_MEM_FUNCTIONS' in `mips-bsd.h'.
        !           412: 
        !           413:     `mips-sgi-*'
        !           414:           Silicon Graphics MIPS machines running IRIX.  In order to
        !           415:           compile GCC on an SGI the "c.hdr.lib" option must be
        !           416:           installed from the CD-ROM supplied from Silicon Graphics.
        !           417:           This is found on the 2nd CD in release 4.0.1.
        !           418: 
        !           419:     `mips-sony-sysv'
        !           420:           Sony MIPS NEWS.  This works in NEWSOS 5.0.1, but not in 5.0.2
        !           421:           (which uses ELF instead of COFF).  Support for 5.0.2 will
        !           422:           probably be provided soon by volunteers.  In particular, the
        !           423:           linker does not like the code generated by GCC when shared
        !           424:           libraries are linked in.
        !           425: 
        !           426:     `ns32k-encore'
        !           427:           Encore ns32000 system.  Encore systems are supported only
        !           428:           under BSD.
        !           429: 
        !           430:     `ns32k-*-genix'
        !           431:           National Semiconductor ns32000 system.  Genix has bugs in
        !           432:           `alloca' and `malloc'; you must get the compiled versions of
        !           433:           these from GNU Emacs.
        !           434: 
        !           435:     `ns32k-sequent'
        !           436:           Go to the Berkeley universe before compiling.  In addition,
        !           437:           you probably need to create a file named `string.h'
        !           438:           containing just one line: `#include <strings.h>'.
        !           439: 
        !           440:     `ns32k-utek'
        !           441:           UTEK ns32000 system ("merlin").  The C compiler that comes
        !           442:           with this system cannot compile GNU CC; contact
        !           443:           `tektronix!reed!mason' to get binaries of GNU CC for
        !           444:           bootstrapping.
        !           445: 
        !           446:     `romp-*-aos'
        !           447:     `romp-*-mach'
        !           448:           The only operating systems supported for the IBM RT PC are
        !           449:           AOS and MACH.  GNU CC does not support AIX running on the RT.
        !           450:           We recommend you compile GNU CC with an earlier version of
        !           451:           itself; if you compile GNU CC with `hc', the Metaware
        !           452:           compiler, it will work, but you will get mismatches between
        !           453:           the stage 2 and stage 3 compilers in various files.  These
        !           454:           errors are minor differences in some floating-point constants
        !           455:           and can be safely ignored; the stage 3 compiler is correct.
        !           456: 
        !           457:     `rs6000-*-aix'
        !           458:           *Read the file `README.RS6000' for information on how to get
        !           459:           a fix for problems in the IBM assembler that interfere with
        !           460:           GNU CC.* You must either obtain the new assembler or avoid
        !           461:           using the `-g' switch.  Note that `Makefile.in' uses `-g' by
        !           462:           default when compiling `libgcc2.c'.
        !           463: 
        !           464:           The PowerPC and POWER2 architectures are now supported, but
        !           465:           have not been extensively tested due to lack of appropriate
        !           466:           systems.  Only AIX is supported on the PowerPC.
        !           467: 
        !           468:           XLC version 1.3.0.0 will miscompile `jump.c'.  XLC version
        !           469:           1.3.0.1 or later fixes this problem.  We do not yet have a
        !           470:           PTF number for this fix.
        !           471: 
        !           472:     `vax-dec-ultrix'
        !           473:           Don't try compiling with Vax C (`vcc').  It produces
        !           474:           incorrect code in some cases (for example, when `alloca' is
        !           475:           used).
        !           476: 
        !           477:           Meanwhile, compiling `cp-parse.c' with pcc does not work
        !           478:           because of an internal table size limitation in that
        !           479:           compiler.  To avoid this problem, compile just the GNU C
        !           480:           compiler first, and use it to recompile building all the
        !           481:           languages that you want to run.
        !           482: 
        !           483:      Here we spell out what files will be set up by `configure'.
        !           484:      Normally you need not be concerned with these files.
        !           485: 
        !           486:         * A symbolic link named `config.h' is made to the top-level
        !           487:           config file for the machine you will run the compiler on
        !           488:           (*note Config::.).  This file is responsible for defining
        !           489:           information about the host machine.  It includes `tm.h'.
        !           490: 
        !           491:           The top-level config file is located in the subdirectory
        !           492:           `config'.  Its name is always `xm-SOMETHING.h'; usually
        !           493:           `xm-MACHINE.h', but there are some exceptions.
        !           494: 
        !           495:           If your system does not support symbolic links, you might
        !           496:           want to set up `config.h' to contain a `#include' command
        !           497:           which refers to the appropriate file.
        !           498: 
        !           499:         * A symbolic link named `tconfig.h' is made to the top-level
        !           500:           config file for your target machine.  This is used for
        !           501:           compiling certain programs to run on that machine.
        !           502: 
        !           503:         * A symbolic link named `tm.h' is made to the
        !           504:           machine-description macro file for your target machine.  It
        !           505:           should be in the subdirectory `config' and its name is often
        !           506:           `MACHINE.h'.
        !           507: 
        !           508:         * A symbolic link named `md' will be made to the machine
        !           509:           description pattern file.  It should be in the `config'
        !           510:           subdirectory and its name should be `MACHINE.md'; but MACHINE
        !           511:           is often not the same as the name used in the `tm.h' file
        !           512:           because the `md' files are more general.
        !           513: 
        !           514:         * A symbolic link named `aux-output.c' will be made to the
        !           515:           output subroutine file for your machine.  It should be in the
        !           516:           `config' subdirectory and its name should be `MACHINE.c'.
        !           517: 
        !           518:         * The command file `configure' also constructs the file
        !           519:           `Makefile' by adding some text to the template file
        !           520:           `Makefile.in'.  The additional text comes from files in the
        !           521:           `config' directory, named `t-TARGET' and `x-HOST'.  If these
        !           522:           files do not exist, it means nothing needs to be added for a
        !           523:           given target or host.
        !           524: 
        !           525:   4. The standard directory for installing GNU CC is `/usr/local/lib'.
        !           526:      If you want to install its files somewhere else, specify
        !           527:      `--prefix=DIR' when you run `configure'.  Here DIR is a directory
        !           528:      name to use instead of `/usr/local' for all purposes with one
        !           529:      exception: the directory `/usr/local/include' is searched for
        !           530:      header files no matter where you install the compiler.
        !           531: 
        !           532:   5. Specify `--local-prefix=DIR' if you want the compiler to search
        !           533:      directory `DIR/include' for header files *instead* of
        !           534:      `/usr/local/include'.  (This is for systems that have different
        !           535:      conventions for where to put site-specific things.)
        !           536: 
        !           537:   6. Make sure the Bison parser generator is installed.  (This is
        !           538:      unnecessary if the Bison output files `c-parse.c' and `cexp.c' are
        !           539:      more recent than `c-parse.y' and `cexp.y' and you do not plan to
        !           540:      change the `.y' files.)
        !           541: 
        !           542:      Bison versions older than Sept 8, 1988 will produce incorrect
        !           543:      output for `c-parse.c'.
        !           544: 
        !           545:   7. Build the compiler.  Just type `make LANGUAGES=c' in the compiler
        !           546:      directory.
        !           547: 
        !           548:      `LANGUAGES=c' specifies that only the C compiler should be
        !           549:      compiled.  The makefile normally builds compilers for all the
        !           550:      supported languages; currently, C, C++ and Objective C.  However,
        !           551:      C is the only language that is sure to work when you build with
        !           552:      other non-GNU C compilers.  In addition, building anything but C
        !           553:      at this stage is a waste of time.
        !           554: 
        !           555:      In general, you can specify the languages to build by typing the
        !           556:      argument `LANGUAGES="LIST"', where LIST is one or more words from
        !           557:      the list `c', `c++', and `objective-c'.
        !           558: 
        !           559:      Ignore any warnings you may see about "statement not reached" in
        !           560:      `insn-emit.c'; they are normal.  Also, warnings about "unknown
        !           561:      escape sequence" are normal in `genopinit.c' and perhaps some
        !           562:      other files.  Any other compilation errors may represent bugs in
        !           563:      the port to your machine or operating system, and should be
        !           564:      investigated and reported (*note Bugs::.).
        !           565: 
        !           566:      Some commercial compilers fail to compile GNU CC because they have
        !           567:      bugs or limitations.  For example, the Microsoft compiler is said
        !           568:      to run out of macro space.  Some Ultrix compilers run out of
        !           569:      expression space; then you need to break up the statement where
        !           570:      the problem happens.
        !           571: 
        !           572:      If you are building with a previous GNU C compiler, do not use
        !           573:      `CC=gcc' on the make command or by editing the Makefile.  Instead,
        !           574:      use a full pathname to specify the compiler, such as
        !           575:      `CC=/usr/local/bin/gcc'.  This is because make might execute the
        !           576:      `gcc' in the current directory before all of the compiler
        !           577:      components have been built.
        !           578: 
        !           579:   8. If you are building a cross-compiler, stop here.  *Note
        !           580:      Cross-Compiler::.
        !           581: 
        !           582:   9. Move the first-stage object files and executables into a
        !           583:      subdirectory with this command:
        !           584: 
        !           585:           make stage1
        !           586: 
        !           587:      The files are moved into a subdirectory named `stage1'.  Once
        !           588:      installation is complete, you may wish to delete these files with
        !           589:      `rm -r stage1'.
        !           590: 
        !           591:  10. If you have chosen a configuration for GNU CC which requires other
        !           592:      GNU tools (such as GAS or the GNU linker) instead of the standard
        !           593:      system tools, install the required tools in the `stage1'
        !           594:      subdirectory under the names `as', `ld' or whatever is
        !           595:      appropriate.  This will enable the stage 1 compiler to find the
        !           596:      proper tools in the following stage.
        !           597: 
        !           598:      Alternatively, you can do subsequent compilation using a value of
        !           599:      the `PATH' environment variable such that the necessary GNU tools
        !           600:      come before the standard system tools.
        !           601: 
        !           602:  11. Recompile the compiler with itself, with this command:
        !           603: 
        !           604:           make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O"
        !           605: 
        !           606:      This is called making the stage 2 compiler.
        !           607: 
        !           608:      The command shown above builds compilers for all the supported
        !           609:      languages.  If you don't want them all, you can specify the
        !           610:      languages to build by typing the argument `LANGUAGES="LIST"'.  LIST
        !           611:      should contain one or more words from the list `c', `c++',
        !           612:      `objective-c', and `proto'.  Separate the words with spaces.
        !           613:      `proto' stands for the programs `protoize' and `unprotoize'; they
        !           614:      are not a separate language, but you use `LANGUAGES' to enable or
        !           615:      disable their installation.
        !           616: 
        !           617:      If you are going to build the stage 3 compiler, then you might
        !           618:      want to build only the C language in stage 2.
        !           619: 
        !           620:      Once you have built the stage 2 compiler, if you are short of disk
        !           621:      space, you can delete the subdirectory `stage1'.
        !           622: 
        !           623:      On a 68000 or 68020 system lacking floating point hardware, unless
        !           624:      you have selected a `tm.h' file that expects by default that there
        !           625:      is no such hardware, do this instead:
        !           626: 
        !           627:           make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O -msoft-float"
        !           628: 
        !           629:  12. If you wish to test the compiler by compiling it with itself one
        !           630:      more time, install any other necessary GNU tools (such as GAS or
        !           631:      the GNU linker) in the `stage2' subdirectory as you did in the
        !           632:      `stage1' subdirectory, then do this:
        !           633: 
        !           634:           make stage2
        !           635:           make CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O"
        !           636: 
        !           637:      This is called making the stage 3 compiler.  Aside from the `-B'
        !           638:      option, the compiler options should be the same as when you made
        !           639:      the stage 2 compiler.  But the `LANGUAGES' option need not be the
        !           640:      same.  The command shown above builds compilers for all the
        !           641:      supported languages; if you don't want them all, you can specify
        !           642:      the languages to build by typing the argument `LANGUAGES="LIST"',
        !           643:      as described above.
        !           644: 
        !           645:      Then compare the latest object files with the stage 2 object
        !           646:      files--they ought to be identical, unless they contain time stamps.
        !           647:      You can compare the files, disregarding the time stamps if any,
        !           648:      like this:
        !           649: 
        !           650:           make compare
        !           651: 
        !           652:      This will mention any object files that differ between stage 2 and
        !           653:      stage 3.  Any difference, no matter how innocuous, indicates that
        !           654:      the stage 2 compiler has compiled GNU CC incorrectly, and is
        !           655:      therefore a potentially serious bug which you should investigate
        !           656:      and report (*note Bugs::.).
        !           657: 
        !           658:      If your system does not put time stamps in the object files, then
        !           659:      this is a faster way to compare them (using the Bourne shell):
        !           660: 
        !           661:           for file in *.o; do
        !           662:           cmp $file stage2/$file
        !           663:           done
        !           664: 
        !           665:      If you have built the compiler with the `-mno-mips-tfile' option on
        !           666:      MIPS machines, you will not be able to compare the files.
        !           667: 
        !           668:      The Alpha stores file names in the object files and `make compare'
        !           669:      does not know how to ignore them, so normally you cannot compare
        !           670:      on the Alpha.  However, if you use the `-save-temps' option when
        !           671:      compiling *both* stage 2 and stage 3, this causes the same file
        !           672:      names to be used in both stages; then you can do the comparison.
        !           673: 
        !           674:  13. Build the Objective C library (if you have built the Objective C
        !           675:      compiler).  Here is the command to do this:
        !           676: 
        !           677:           make objc-runtime CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O"
        !           678: 
        !           679:  14. Install the compiler driver, the compiler's passes and run-time
        !           680:      support with `make install'.  Use the same value for `CC',
        !           681:      `CFLAGS' and `LANGUAGES' that you used when compiling the files
        !           682:      that are being installed.  One reason this is necessary is that
        !           683:      some versions of Make have bugs and recompile files gratuitously
        !           684:      when you do this step.  If you use the same variable values, those
        !           685:      files will be recompiled properly.
        !           686: 
        !           687:      For example, if you have built the stage 2 compiler, you can use
        !           688:      the following command:
        !           689: 
        !           690:           make install CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O" LANGUAGES="LIST"
        !           691: 
        !           692:      This copies the files `cc1', `cpp' and `libgcc.a' to files `cc1',
        !           693:      `cpp' and `libgcc.a' in the directory
        !           694:      `/usr/local/lib/gcc-lib/TARGET/VERSION', which is where the
        !           695:      compiler driver program looks for them.  Here TARGET is the target
        !           696:      machine type specified when you ran `configure', and VERSION is
        !           697:      the version number of GNU CC.  This naming scheme permits various
        !           698:      versions and/or cross-compilers to coexist.
        !           699: 
        !           700:      This also copies the driver program `xgcc' into
        !           701:      `/usr/local/bin/gcc', so that it appears in typical execution
        !           702:      search paths.
        !           703: 
        !           704:      On some systems, this command causes recompilation of some files.
        !           705:      This is usually due to bugs in `make'.  You should either ignore
        !           706:      this problem, or use GNU Make.
        !           707: 
        !           708:      *Warning: there is a bug in `alloca' in the Sun library.  To avoid
        !           709:      this bug, be sure to install the executables of GNU CC that were
        !           710:      compiled by GNU CC.  (That is, the executables from stage 2 or 3,
        !           711:      not stage 1.)  They use `alloca' as a built-in function and never
        !           712:      the one in the library.*
        !           713: 
        !           714:      (It is usually better to install GNU CC executables from stage 2
        !           715:      or 3, since they usually run faster than the ones compiled with
        !           716:      some other compiler.)
        !           717: 
        !           718:  15. Install the Objective C library (if you are installing the
        !           719:      Objective C compiler).  Here is the command to do this:
        !           720: 
        !           721:           make install-libobjc CC="stage2/xgcc -Bstage2/" CFLAGS="-g -O"
        !           722: 
        !           723:  16. If you're going to use C++, it's likely that you need to also
        !           724:      install the libg++ distribution.  It should be available from the
        !           725:      same place where you got the GNU C distribution.  Just as GNU C
        !           726:      does not distribute a C runtime library, it also does not include
        !           727:      a C++ run-time library.  All I/O functionality, special class
        !           728:      libraries, etc., are available in the libg++ distribution.
        !           729: 
        !           730: 
        !           731: File: gcc.info,  Node: Other Dir,  Next: Cross-Compiler,  Up: Installation
        !           732: 
        !           733: Compilation in a Separate Directory
        !           734: ===================================
        !           735: 
        !           736:    If you wish to build the object files and executables in a directory
        !           737: other than the one containing the source files, here is what you must
        !           738: do differently:
        !           739: 
        !           740:   1. Make sure you have a version of Make that supports the `VPATH'
        !           741:      feature.  (GNU Make supports it, as do Make versions on most BSD
        !           742:      systems.)
        !           743: 
        !           744:   2. If you have ever run `configure' in the source directory, you must
        !           745:      undo the configuration.  Do this by running:
        !           746: 
        !           747:           make distclean
        !           748: 
        !           749:   3. Go to the directory in which you want to build the compiler before
        !           750:      running `configure':
        !           751: 
        !           752:           mkdir gcc-sun3
        !           753:           cd gcc-sun3
        !           754: 
        !           755:      On systems that do not support symbolic links, this directory must
        !           756:      be on the same file system as the source code directory.
        !           757: 
        !           758:   4. Specify where to find `configure' when you run it:
        !           759: 
        !           760:           ../gcc/configure ...
        !           761: 
        !           762:      This also tells `configure' where to find the compiler sources;
        !           763:      `configure' takes the directory from the file name that was used to
        !           764:      invoke it.  But if you want to be sure, you can specify the source
        !           765:      directory with the `--srcdir' option, like this:
        !           766: 
        !           767:           ../gcc/configure --srcdir=../gcc sun3
        !           768: 
        !           769:      The directory you specify with `--srcdir' need not be the same as
        !           770:      the one that `configure' is found in.
        !           771: 
        !           772:    Now, you can run `make' in that directory.  You need not repeat the
        !           773: configuration steps shown above, when ordinary source files change.  You
        !           774: must, however, run `configure' again when the configuration files
        !           775: change, if your system does not support symbolic links.
        !           776: 
        !           777: 
        !           778: File: gcc.info,  Node: Cross-Compiler,  Next: PA Install,  Prev: Other Dir,  Up: Installation
        !           779: 
        !           780: Building and Installing a Cross-Compiler
        !           781: ========================================
        !           782: 
        !           783:    GNU CC can function as a cross-compiler for many machines, but not
        !           784: all.
        !           785: 
        !           786:    * Cross-compilers for the Mips as target using the Mips assembler
        !           787:      currently do not work, because the auxiliary programs
        !           788:      `mips-tdump.c' and `mips-tfile.c' can't be compiled on anything
        !           789:      but a Mips.  It does work to cross compile for a Mips if you use
        !           790:      the GNU assembler and linker.
        !           791: 
        !           792:    * Cross-compilers between machines with different floating point
        !           793:      formats have not all been made to work.  GNU CC now has a floating
        !           794:      point emulator with which these can work, but each target machine
        !           795:      description needs to be updated to take advantage of it.
        !           796: 
        !           797:    * Cross-compilation between machines of different word sizes has not
        !           798:      really been addressed yet.
        !           799: 
        !           800:    Since GNU CC generates assembler code, you probably need a
        !           801: cross-assembler that GNU CC can run, in order to produce object files.
        !           802: If you want to link on other than the target machine, you need a
        !           803: cross-linker as well.  You also need header files and libraries suitable
        !           804: for the target machine that you can install on the host machine.
        !           805: 
        !           806: * Menu:
        !           807: 
        !           808: * Steps of Cross::      Using a cross-compiler involves several steps
        !           809:                           that may be carried out on different machines.
        !           810: * Configure Cross::     Configuring a cross-compiler.
        !           811: * Tools and Libraries:: Where to put the linker and assembler, and the C library.
        !           812: * Cross Headers::       Finding and installing header files
        !           813:                           for a cross-compiler.
        !           814: * Cross Runtime::       Supplying arithmetic runtime routines (`libgcc1.a').
        !           815: * Build Cross::         Actually compiling the cross-compiler.
        !           816: 
        !           817: 
        !           818: File: gcc.info,  Node: Steps of Cross,  Next: Configure Cross,  Up: Cross-Compiler
        !           819: 
        !           820: Steps of Cross-Compilation
        !           821: --------------------------
        !           822: 
        !           823:    To compile and run a program using a cross-compiler involves several
        !           824: steps:
        !           825: 
        !           826:    * Run the cross-compiler on the host machine to produce assembler
        !           827:      files for the target machine.  This requires header files for the
        !           828:      target machine.
        !           829: 
        !           830:    * Assemble the files produced by the cross-compiler.  You can do this
        !           831:      either with an assembler on the target machine, or with a
        !           832:      cross-assembler on the host machine.
        !           833: 
        !           834:    * Link those files to make an executable.  You can do this either
        !           835:      with a linker on the target machine, or with a cross-linker on the
        !           836:      host machine.  Whichever machine you use, you need libraries and
        !           837:      certain startup files (typically `crt....o') for the target
        !           838:      machine.
        !           839: 
        !           840:    It is most convenient to do all of these steps on the same host
        !           841: machine, since then you can do it all with a single invocation of GNU
        !           842: CC.  This requires a suitable cross-assembler and cross-linker.  For
        !           843: some targets, the GNU assembler and linker are available.
        !           844: 
        !           845: 
        !           846: File: gcc.info,  Node: Configure Cross,  Next: Tools and Libraries,  Prev: Steps of Cross,  Up: Cross-Compiler
        !           847: 
        !           848: Configuring a Cross-Compiler
        !           849: ----------------------------
        !           850: 
        !           851:    To build GNU CC as a cross-compiler, you start out by running
        !           852: `configure'.  You must specify two different configurations, the host
        !           853: and the target.  Use the `--host=HOST' option for the host and
        !           854: `--target=TARGET' to specify the target type.  For example, here is how
        !           855: to configure for a cross-compiler that runs on a hypothetical Intel 386
        !           856: system and produces code for an HP 68030 system running BSD:
        !           857: 
        !           858:      configure --target=m68k-hp-bsd4.3 --host=i386-bozotheclone-bsd4.3
        !           859: 
        !           860: 
        !           861: File: gcc.info,  Node: Tools and Libraries,  Next: Cross Headers,  Prev: Configure Cross,  Up: Cross-Compiler
        !           862: 
        !           863: Tools and Libraries for a Cross-Compiler
        !           864: ----------------------------------------
        !           865: 
        !           866:    If you have a cross-assembler and cross-linker available, you should
        !           867: install them now.  Put them in the directory `/usr/local/TARGET/bin'.
        !           868: Here is a table of the tools you should put in this directory:
        !           869: 
        !           870: `as'
        !           871:      This should be the cross-assembler.
        !           872: 
        !           873: `ld'
        !           874:      This should be the cross-linker.
        !           875: 
        !           876: `ar'
        !           877:      This should be the cross-archiver: a program which can manipulate
        !           878:      archive files (linker libraries) in the target machine's format.
        !           879: 
        !           880: `ranlib'
        !           881:      This should be a program to construct a symbol table in an archive
        !           882:      file.
        !           883: 
        !           884:    The installation of GNU CC will find these programs in that
        !           885: directory, and copy or link them to the proper place to for the
        !           886: cross-compiler to find them when run later.
        !           887: 
        !           888:    The easiest way to provide these files is to build the Binutils
        !           889: package and GAS.  Configure them with the same `--host' and `--target'
        !           890: options that you use for configuring GNU CC, then build and install
        !           891: them.  They install their executables automatically into the proper
        !           892: directory.  Alas, they do not support all the targets that GNU CC
        !           893: supports.
        !           894: 
        !           895:    If you want to install libraries to use with the cross-compiler,
        !           896: such as a standard C library, put them in the directory
        !           897: `/usr/local/TARGET/lib'; installation of GNU CC copies all all the
        !           898: files in that subdirectory into the proper place for GNU CC to find
        !           899: them and link with them.  Here's an example of copying some libraries
        !           900: from a target machine:
        !           901: 
        !           902:      ftp TARGET-MACHINE
        !           903:      lcd /usr/local/TARGET/lib
        !           904:      cd /lib
        !           905:      get libc.a
        !           906:      cd /usr/lib
        !           907:      get libg.a
        !           908:      get libm.a
        !           909:      quit
        !           910: 
        !           911: The precise set of libraries you'll need, and their locations on the
        !           912: target machine, vary depending on its operating system.
        !           913: 
        !           914:    Many targets require "start files" such as `crt0.o' and `crtn.o'
        !           915: which are linked into each executable; these too should be placed in
        !           916: `/usr/local/TARGET/lib'.  There may be several alternatives for
        !           917: `crt0.o', for use with profiling or other compilation options.  Check
        !           918: your target's definition of `STARTFILE_SPEC' to find out what start
        !           919: files it uses.  Here's an example of copying these files from a target
        !           920: machine:
        !           921: 
        !           922:      ftp TARGET-MACHINE
        !           923:      lcd /usr/local/TARGET/lib
        !           924:      prompt
        !           925:      cd /lib
        !           926:      mget *crt*.o
        !           927:      cd /usr/lib
        !           928:      mget *crt*.o
        !           929:      quit
        !           930: 
        !           931: 
        !           932: File: gcc.info,  Node: Cross Runtime,  Next: Build Cross,  Prev: Cross Headers,  Up: Cross-Compiler
        !           933: 
        !           934: `libgcc.a' and Cross-Compilers
        !           935: ------------------------------
        !           936: 
        !           937:    Code compiled by GNU CC uses certain runtime support functions
        !           938: implicitly.  Some of these functions can be compiled successfully with
        !           939: GNU CC itself, but a few cannot be.  These problem functions are in the
        !           940: source file `libgcc1.c'; the library made from them is called
        !           941: `libgcc1.a'.
        !           942: 
        !           943:    When you build a native compiler, these functions are compiled with
        !           944: some other compiler-the one that you use for bootstrapping GNU CC.
        !           945: Presumably it knows how to open code these operations, or else knows how
        !           946: to call the run-time emulation facilities that the machine comes with.
        !           947: But this approach doesn't work for building a cross-compiler.  The
        !           948: compiler that you use for building knows about the host system, not the
        !           949: target system.
        !           950: 
        !           951:    So, when you build a cross-compiler you have to supply a suitable
        !           952: library `libgcc1.a' that does the job it is expected to do.
        !           953: 
        !           954:    To compile `libgcc1.c' with the cross-compiler itself does not work.
        !           955: The functions in this file are supposed to implement arithmetic
        !           956: operations that GNU CC does not know how to open code, for your target
        !           957: machine.  If these functions are compiled with GNU CC itself, they will
        !           958: compile into infinite recursion.
        !           959: 
        !           960:    On any given target, most of these functions are not needed.  If GNU
        !           961: CC can open code an arithmetic operation, it will not call these
        !           962: functions to perform the operation.  It is possible that on your target
        !           963: machine, none of these functions is needed.  If so, you can supply an
        !           964: empty library as `libgcc1.a'.
        !           965: 
        !           966:    Many targets need library support only for multiplication and
        !           967: division.  If you are linking with a library that contains functions for
        !           968: multiplication and division, you can tell GNU CC to call them directly
        !           969: by defining the macros `MULSI3_LIBCALL', and the like.  These macros
        !           970: need to be defined in the target description macro file.  For some
        !           971: targets, they are defined already.  This may be sufficient to avoid the
        !           972: need for libgcc1.a; if so, you can supply an empty library.
        !           973: 
        !           974:    Some targets do not have floating point instructions; they need other
        !           975: functions in `libgcc1.a', which do floating arithmetic.  Recent
        !           976: versions of GNU CC have a file which emulates floating point.  With a
        !           977: certain amount of work, you should be able to construct a floating
        !           978: point emulator that can be used as `libgcc1.a'.  Perhaps future
        !           979: versions will contain code to do this automatically and conveniently.
        !           980: That depends on whether someone wants to implement it.
        !           981: 
        !           982:    If your target system has another C compiler, you can configure GNU
        !           983: CC as a native compiler on that machine, build just `libgcc1.a' with
        !           984: `make libgcc1.a' on that machine, and use the resulting file with the
        !           985: cross-compiler.  To do this, execute the following on the target
        !           986: machine:
        !           987: 
        !           988:      cd TARGET-BUILD-DIR
        !           989:      configure --host=sparc --target=sun3
        !           990:      make libgcc1.a
        !           991: 
        !           992: And then this on the host machine:
        !           993: 
        !           994:      ftp TARGET-MACHINE
        !           995:      binary
        !           996:      cd TARGET-BUILD-DIR
        !           997:      get libgcc1.a
        !           998:      quit
        !           999: 
        !          1000:    Another way to provide the functions you need in `libgcc1.a' is to
        !          1001: define the appropriate `perform_...' macros for those functions.  If
        !          1002: these definitions do not use the C arithmetic operators that they are
        !          1003: meant to implement, you should be able to compile them with the
        !          1004: cross-compiler you are building.  (If these definitions already exist
        !          1005: for your target file, then you are all set.)
        !          1006: 
        !          1007:    To build `libgcc1.a' using the perform macros, use
        !          1008: `LIBGCC1=libgcc1.a OLDCC=./xgcc' when building the compiler.
        !          1009: Otherwise, you should place your replacement library under the name
        !          1010: `libgcc1.a' in the directory in which you will build the
        !          1011: cross-compiler, before you run `make'.
        !          1012: 
        !          1013: 
        !          1014: File: gcc.info,  Node: Cross Headers,  Next: Cross Runtime,  Prev: Tools and Libraries,  Up: Cross-Compiler
        !          1015: 
        !          1016: Cross-Compilers and Header Files
        !          1017: --------------------------------
        !          1018: 
        !          1019:    If you are cross-compiling a standalone program or a program for an
        !          1020: embedded system, then you may not need any header files except the few
        !          1021: that are part of GNU CC (and those of your program).  However, if you
        !          1022: intend to link your program with a standard C library such as `libc.a',
        !          1023: then you probably need to compile with the header files that go with
        !          1024: the library you use.
        !          1025: 
        !          1026:    The GNU C compiler does not come with these files, because (1) they
        !          1027: are system-specific, and (2) they belong in a C library, not in a
        !          1028: compiler.
        !          1029: 
        !          1030:    If the GNU C library supports your target machine, then you can get
        !          1031: the header files from there (assuming you actually use the GNU library
        !          1032: when you link your program).
        !          1033: 
        !          1034:    If your target machine comes with a C compiler, it probably comes
        !          1035: with suitable header files also.  If you make these files accessible
        !          1036: from the host machine, the cross-compiler can use them also.
        !          1037: 
        !          1038:    Otherwise, you're on your own in finding header files to use when
        !          1039: cross-compiling.
        !          1040: 
        !          1041:    When you have found suitable header files, put them in
        !          1042: `/usr/local/TARGET/include', before building the cross compiler.  Then
        !          1043: installation will run fixincludes properly and install the corrected
        !          1044: versions of the header files where the compiler will use them.
        !          1045: 
        !          1046:    Provide the header files before you build the cross-compiler, because
        !          1047: the build stage actually runs the cross-compiler to produce parts of
        !          1048: `libgcc.a'.  (These are the parts that *can* be compiled with GNU CC.)
        !          1049: Some of them need suitable header files.
        !          1050: 
        !          1051:    Here's an example showing how to copy the header files from a target
        !          1052: machine.  On the target machine, do this:
        !          1053: 
        !          1054:      (cd /usr/include; tar cf - .) > tarfile
        !          1055: 
        !          1056:    Then, on the host machine, do this:
        !          1057: 
        !          1058:      ftp TARGET-MACHINE
        !          1059:      lcd /usr/local/TARGET/include
        !          1060:      get tarfile
        !          1061:      quit
        !          1062:      tar xf tarfile
        !          1063: 
        !          1064: 
        !          1065: File: gcc.info,  Node: Build Cross,  Prev: Cross Runtime,  Up: Cross-Compiler
        !          1066: 
        !          1067: Actually Building the Cross-Compiler
        !          1068: ------------------------------------
        !          1069: 
        !          1070:    Now you can proceed just as for compiling a single-machine compiler
        !          1071: through the step of building stage 1.  If you have not provided some
        !          1072: sort of `libgcc1.a', then compilation will give up at the point where
        !          1073: it needs that file, printing a suitable error message.  If you do
        !          1074: provide `libgcc1.a', then building the compiler will automatically
        !          1075: compile and link a test program called `cross-test'; if you get errors
        !          1076: in the linking, it means that not all of the necessary routines in
        !          1077: `libgcc1.a' are available.
        !          1078: 
        !          1079:    If you are making a cross-compiler for an embedded system, and there
        !          1080: is no `stdio.h' header for it, then the compilation of `enquire' will
        !          1081: probably fail.  The job of `enquire' is to run on the target machine
        !          1082: and figure out by experiment the nature of its floating point
        !          1083: representation.  `enquire' records its findings in the header file
        !          1084: `float.h'.  If you can't produce this file by running `enquire' on the
        !          1085: target machine, then you will need to come up with a suitable `float.h'
        !          1086: in some other way (or else, avoid using it in your programs).
        !          1087: 
        !          1088:    Do not try to build stage 2 for a cross-compiler.  It doesn't work to
        !          1089: rebuild GNU CC as a cross-compiler using the cross-compiler, because
        !          1090: that would produce a program that runs on the target machine, not on the
        !          1091: host.  For example, if you compile a 386-to-68030 cross-compiler with
        !          1092: itself, the result will not be right either for the 386 (because it was
        !          1093: compiled into 68030 code) or for the 68030 (because it was configured
        !          1094: for a 386 as the host).  If you want to compile GNU CC into 68030 code,
        !          1095: whether you compile it on a 68030 or with a cross-compiler on a 386, you
        !          1096: must specify a 68030 as the host when you configure it.
        !          1097: 
        !          1098:    To install the cross-compiler, use `make install', as usual.
        !          1099: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.