Annotation of gcc/INSTALL, revision 1.1

1.1     ! root        1: This is a copy of one chapter from the Info file gcc.info*.
        !             2: For full information on installing and porting GCC, refer to the
        !             3: GCC manual:
        !             4: 
        !             5:   Info file   gcc.info
        !             6:   TeX output  gcc.dvi
        !             7:   TeX source  gcc.texinfo
        !             8: 
        !             9: 
        !            10: Installing GNU CC
        !            11: *****************
        !            12: 
        !            13:    Here is the procedure for installing GNU CC on a Unix system.
        !            14: 
        !            15:   1. If you have built GNU CC previously in the same directory for a
        !            16:      different target machine, do `make cleanconfig' to delete all
        !            17:      files that might be invalid.
        !            18: 
        !            19:   2. On a Sequent system, go to the Berkeley universe.
        !            20: 
        !            21:   3. On a System V release 4 system, make sure `/usr/bin' precedes
        !            22:      `/usr/ucb' in `PATH'.  The `cc' command in `/usr/ucb' uses
        !            23:      libraries which have bugs.
        !            24: 
        !            25:   4. Specify the host and target machine configurations.  You do this
        !            26:      by running the file `configure' with appropriate arguments.
        !            27: 
        !            28:         If you are building a compiler to produce code for the machine
        !            29:      it runs on, specify just one machine type.  To build a
        !            30:      cross-compiler, specify two configurations, one for the "host
        !            31:      machine" (which the compiler runs on), and one for the "target
        !            32:      machine" (which the compiler produces code for).  The command
        !            33:      looks like this:
        !            34: 
        !            35:           configure --host=sun3-sunos3 --target=sparc-sun-sunos4.1
        !            36: 
        !            37:         A configuration name may be canonical or it may be more or less
        !            38:      abbreviated.
        !            39: 
        !            40:         A canonical configuration name has three parts, separated by
        !            41:      dashes.  It looks like this: `CPU-COMPANY-SYSTEM'.  (The three
        !            42:      parts may themselves contain dashes; `configure' can figure out
        !            43:      which dashes serve which purpose.)  For example,
        !            44:      `m68k-sun-sunos4.1' specifies a Sun 3.
        !            45: 
        !            46:         You can also replace parts of the configuration by nicknames
        !            47:      or aliases.  For example, `sun3' stands for `m68k-sun', so
        !            48:      `sun3-sunos4.1' is another way to specify a Sun 3.  You can also
        !            49:      use simply `sun3-sunos', since the version of Sunos is assumed by
        !            50:      default to be version 4.  `sun3-bsd' also works, since
        !            51:      `configure' knows that the only BSD variant on a Sun 3 is Sunos.
        !            52: 
        !            53:         You can specify a version number after any of the system
        !            54:      types, and some of the CPU types.  In most cases, the version is
        !            55:      irrelevant, and will be ignored.  So you might as well specify
        !            56:      the version if you know it.
        !            57: 
        !            58:         Here are the possible CPU types:
        !            59: 
        !            60:           a29k, arm, cN, hppa, i386, i860, m68000, m68k, m88k, mips,
        !            61:           ns32k, romp, rs6000, sparc, vax.
        !            62: 
        !            63:         Note that the type hppa currently works only with Berkeley
        !            64:      systems, not with HP/UX.
        !            65: 
        !            66:         Here are the recognized company names.  As you can see,
        !            67:      customary abbreviations are used rather than the longer official
        !            68:      names.
        !            69: 
        !            70:           alliant, altos, apollo, att, convergent, convex, crds, dec,
        !            71:           dg, encore, harris, hp, ibm, mips, motorola, ncr, next, ns,
        !            72:           omron, sequent, sgi, sony, sun, tti, unicom.
        !            73: 
        !            74:         The company name is meaningful only to disambiguate when the
        !            75:      rest of the information supplied is insufficient.  You can omit
        !            76:      it, writing just `CPU-SYSTEM', if it is not needed.  For example,
        !            77:      `vax-ultrix4.2' is equivalent to `vax-dec-ultrix4.2'.
        !            78: 
        !            79:         Here is a list of system types:
        !            80: 
        !            81:           bsd, sysv, mach, minix, genix, ultrix, vms, sco, esix, isc,
        !            82:           aix, sunos, hpux, unos, luna, dgux, newsos, osfrose, osf,
        !            83:           dynix, aos, ctix.
        !            84: 
        !            85:      You can omit the system type; then `configure' guesses the
        !            86:      operating system from the CPU and company.
        !            87: 
        !            88:         Often a particular model of machine has a name.  Many of these
        !            89:      names are recognized as an alias for a CPU/company combination. 
        !            90:      The alias `sun3', mentioned above, is an example of this: it
        !            91:      stands for `m68k-sun'.  Sometimes we accept a company name as a
        !            92:      machine name, when the name is popularly used for a particular
        !            93:      machine.  Here is a table of the known machine names:
        !            94: 
        !            95:           3300, 3b1, 7300, altos3068, altos, apollo68, att-7300,
        !            96:           balance, convex-cN, crds, decstation-3100, decstation-dec,
        !            97:           decstation, delta, encore, gmicro, hp7NN, hp8NN, hp9k2NN,
        !            98:           hp9k3NN, hp9k7NN, hp9k8NN, iris4d, iris, isi68, m3230,
        !            99:           magnum, merlin, miniframe, mmax, news-3600, news800, news,
        !           100:           next, pbd, pc532, pmax, ps2, risc-news, rtpc, sun2, sun386i,
        !           101:           sun386, sun3, sun4, symmetry, tower-32, tower.
        !           102: 
        !           103:         If you specify an impossible combination such as `i860-dg-vms',
        !           104:      then you may get an error message from `configure', or it may
        !           105:      ignore part of the information and do the best it can with the
        !           106:      rest.  `configure' always prints the canonical name for the
        !           107:      alternative that it used.
        !           108: 
        !           109:         On certain systems, you must specify whether you want GNU CC
        !           110:      to work with the usual compilation tools or with the GNU
        !           111:      compilation tools (including GAS).  Use the `--gas' argument when
        !           112:      you run `configure', if you want to use the GNU tools.  The
        !           113:      systems were this makes a difference are `i386-ANYTHING-sysv',
        !           114:      `i860-ANYTHING-bsd', `m68k-hp-hpux', `m68k-sony-bsd',
        !           115:      `m68k-altos-sysv', `m68000-hp-hpux', and `m68000-att-sysv'.  On
        !           116:      any other system, `--gas' has no effect.
        !           117: 
        !           118:         On certain systems, you must specify whether the machine has a
        !           119:      floating point unit.  These systems are `m68k-sun-sunosN' and
        !           120:      `m68k-isi-bsd'.  On any other system, `--nfp' currently has no
        !           121:      effect, though perhaps there are other systems where it could
        !           122:      usefully make a difference.
        !           123: 
        !           124:         If you want to install your own homemade configuration files,
        !           125:      you can use `local' as the company name to access them.  If you
        !           126:      use configuration `CPU-local', the entire configuration name is
        !           127:      used to form the configuration file names.
        !           128: 
        !           129:         Thus, if you specify `m68k-local', then the files used are
        !           130:      `m68k-local.md', `m68k-local.h', `m68k-local.c',
        !           131:      `xm-m68k-local.h', `t-m68k-local', and `x-m68k-local'.
        !           132: 
        !           133:         Here is a list of configurations that have special treatment:
        !           134: 
        !           135:     `m68000-att'
        !           136:           AT&T 3b1, a.k.a. 7300 PC.  Special procedures are needed to
        !           137:           compile GNU CC with this machine's standard C compiler, due
        !           138:           to bugs in that compiler.  *Note 3b1 Install::.  You can
        !           139:           bootstrap it more easily with previous versions of GNU CC if
        !           140:           you have them.
        !           141: 
        !           142:     `m68000-hp-bsd'
        !           143:           HP 9000 series 200 running BSD.  Note that the C compiler
        !           144:           that comes with this system cannot compile GNU CC; contact
        !           145:           `[email protected]' to get binaries of GNU CC for bootstrapping.
        !           146: 
        !           147:     `m68k-altos'
        !           148:           Altos 3068.  You must use the GNU assembler, linker and
        !           149:           debugger, with COFF-encapsulation.  Also, you must fix a
        !           150:           kernel bug.  Details in the file `ALTOS-README'.
        !           151: 
        !           152:     `m68k-hp-hpux'
        !           153:           HP 9000 series 200 or 300 running HPUX.  GNU CC does not
        !           154:           support the special symbol table used by HP's debugger, but
        !           155:           you can debug programs with GDB if you specify `--gas' to
        !           156:           use the GNU tools instead.  In order to use the GNU tools,
        !           157:           you must install a library conversion program called `hpxt'.
        !           158: 
        !           159:     `m68k-sun'
        !           160:           Sun 3.  We do not provide a configuration file to use the
        !           161:           Sun FPA by default, because programs that establish signal
        !           162:           handlers for floating point traps inherently cannot work
        !           163:           with the FPA.
        !           164: 
        !           165:     `m88k-dgux'
        !           166:           Motorola m88k running DG/UX.  To build native or cross
        !           167:           compilers on DG/UX, you must first change to the 88open BCS
        !           168:           software development environment.  This is done by issuing
        !           169:           this command:
        !           170: 
        !           171:                eval `sde-target m88kbcs`
        !           172: 
        !           173:     `ns32k-encore'
        !           174:           Encore ns32000 system.  Encore systems are supported only
        !           175:           under BSD.
        !           176: 
        !           177:     `ns32k-*-genix'
        !           178:           National Semiconductor ns32000 system.  Genix has bugs in
        !           179:           `alloca' and `malloc'; you must get the compiled versions of
        !           180:           these from GNU Emacs.
        !           181: 
        !           182:     `ns32k-utek'
        !           183:           UTEK ns32000 system ("merlin").  The C compiler that comes
        !           184:           with this system cannot compile GNU CC; contact
        !           185:           `tektronix!reed!mason' to get binaries of GNU CC for
        !           186:           bootstrapping.
        !           187: 
        !           188:     `rs6000-ibm'
        !           189:           IBM PowerStation/6000 machines.  Due to the nonstandard
        !           190:           debugging information required for this machine, `-g' is not
        !           191:           available in this configuration.
        !           192: 
        !           193:     `vax-dec-ultrix'
        !           194:           Don't try compiling with Vax C (`vcc').  It produces
        !           195:           incorrect code in some cases (for example, when `alloca' is
        !           196:           used).
        !           197: 
        !           198:           Meanwhile, compiling `cp-parse.c' with pcc does not work
        !           199:           because of an internal table size limitation in that
        !           200:           compiler.  To avoid this problem, compile just the GNU C
        !           201:           compiler first, and use it to recompile building all the
        !           202:           languages that you want to run.
        !           203: 
        !           204:         Here we spell out what files will be set up by `configure'. 
        !           205:      Normally you need not be concerned with these files.
        !           206: 
        !           207:         * A symbolic link named `config.h' is made to the top-level
        !           208:           config file for the machine you will run the compiler on
        !           209:           (*note Config::.).  This file is responsible for defining
        !           210:           information about the host machine.  It includes `tm.h'.
        !           211: 
        !           212:           The top-level config file is located in the subdirectory
        !           213:           `config'.  Its name is always `xm-SOMETHING.h'; usually
        !           214:           `xm-MACHINE.h', but there are some exceptions.
        !           215: 
        !           216:           If your system does not support symbolic links, you might
        !           217:           want to set up `config.h' to contain a `#include' command
        !           218:           which refers to the appropriate file.
        !           219: 
        !           220:         * A symbolic link named `tconfig.h' is made to the top-level
        !           221:           config file for your target machine.  This is used for
        !           222:           compiling certain programs to run on that machine.
        !           223: 
        !           224:         * A symbolic link named `tm.h' is made to the
        !           225:           machine-description macro file for your target machine.  It
        !           226:           should be in the subdirectory `config' and its name is often
        !           227:           `MACHINE.h'.
        !           228: 
        !           229:         * A symbolic link named `md' will be made to the machine
        !           230:           description pattern file.  It should be in the `config'
        !           231:           subdirectory and its name should be `MACHINE.md'; but
        !           232:           MACHINE is often not the same as the name used in the `tm.h'
        !           233:           file because the `md' files are more general.
        !           234: 
        !           235:         * A symbolic link named `aux-output.c' will be made to the
        !           236:           output subroutine file for your machine.  It should be in
        !           237:           the `config' subdirectory and its name should be `MACHINE.c'.
        !           238: 
        !           239:         * The command file `configure' also constructs `Makefile' by
        !           240:           adding some text to the template file `Makefile.in'.  The
        !           241:           additional text comes from files in the `config' directory,
        !           242:           named `t-TARGET' and `h-HOST'.  If these files do not exist,
        !           243:           it means nothing needs to be added for a given target or
        !           244:           host.
        !           245: 
        !           246:   5. Make sure the Bison parser generator is installed.  (This is
        !           247:      unnecessary if the Bison output files `c-parse.c' and `cexp.c'
        !           248:      are more recent than `c-parse.y' and `cexp.y' and you do not plan
        !           249:      to change the `.y' files.)
        !           250: 
        !           251:         Bison versions older than Sept 8, 1988 will produce incorrect
        !           252:      output for `c-parse.c'.
        !           253: 
        !           254:   6. Build the compiler.  Just type `make LANGUAGES=c' in the compiler
        !           255:      directory.
        !           256: 
        !           257:         `LANGUAGES=c' specifies that only the C compiler should be
        !           258:      compiled.  The makefile normally builds compilers for all the
        !           259:      supported languages; currently, C, C++ and Objective C.  However,
        !           260:      C is the only language that is sure to work when you build with
        !           261:      other non-GNU C compilers.  In addition, building anything but C
        !           262:      at this stage is a waste of time.
        !           263: 
        !           264:         In general, you can specify the languages to build by typing
        !           265:      the argument `LANGUAGES="LIST"', where LIST is one or more words
        !           266:      from the list `c', `c++', and `objective-c'.
        !           267: 
        !           268:         Ignore any warnings you may see about "statement not reached"
        !           269:      in `insn-emit.c'; they are normal.  Any other compilation errors
        !           270:      may represent bugs in the port to your machine or operating
        !           271:      system, and should be investigated and reported (*note Bugs::.).
        !           272: 
        !           273:         Some commercial compilers fail to compile GNU CC because they
        !           274:      have bugs or limitations.  For example, the Microsoft compiler is
        !           275:      said to run out of macro space.  Some Ultrix compilers run out of
        !           276:      expression space; then you need to break up the statement where
        !           277:      the problem happens.
        !           278: 
        !           279:   7. If you are using COFF-encapsulation, you must convert `libgcc.a'
        !           280:      to a GNU-format library at this point.  See the file
        !           281:      `README-ENCAP' in the directory containing the GNU binary file
        !           282:      utilities, for directions.
        !           283: 
        !           284:   8. Move the first-stage object files and executables into a
        !           285:      subdirectory with this command:
        !           286: 
        !           287:           make stage1
        !           288: 
        !           289:         The files are moved into a subdirectory named `stage1'.  Once
        !           290:      installation is complete, you may wish to delete these files with
        !           291:      `rm -r stage1'.
        !           292: 
        !           293:   9. Recompile the compiler with itself, with this command:
        !           294: 
        !           295:           make CC=stage1/gcc CFLAGS="-g -O -Bstage1/"
        !           296: 
        !           297:         This is called making the stage 2 compiler.
        !           298: 
        !           299:         The command shown above builds compilers for all the supported
        !           300:      languages.  If you don't want them all, you can specify the
        !           301:      languages to build by typing the argument `LANGUAGES="LIST"'. 
        !           302:      LIST should contain one or more words from the list `c', `c++',
        !           303:      and `objective-c', separated by spaces.
        !           304: 
        !           305:         On a 68000 or 68020 system lacking floating point hardware,
        !           306:      unless you have selected a `tm.h' file that expects by default
        !           307:      that there is no such hardware, do this instead:
        !           308: 
        !           309:           make CC=stage1/gcc CFLAGS="-g -O -Bstage1/ -msoft-float"
        !           310: 
        !           311:  10. If you wish to test the compiler by compiling it with itself one
        !           312:      more time, do this:
        !           313: 
        !           314:           make stage2
        !           315:           make CC=stage2/gcc CFLAGS="-g -O -Bstage2/"
        !           316: 
        !           317:      This is called making the stage 3 compiler.  Aside from the `-B'
        !           318:      option, the options should be the same as when you made the stage
        !           319:      2 compiler.
        !           320: 
        !           321:         Then compare the latest object files with the stage 2 object
        !           322:      files--they ought to be identical, unless they contain time
        !           323:      stamps.  On systems where object files do not contain time
        !           324:      stamps, you can do this (in Bourne shell):
        !           325: 
        !           326:           for file in *.o; do
        !           327:           cmp $file stage2/$file
        !           328:           done
        !           329: 
        !           330:         This will mention any object files that differ between stage 2
        !           331:      and stage 3.  Any difference, no matter how innocuous, indicates
        !           332:      that the stage 2 compiler has compiled GNU CC incorrectly, and is
        !           333:      therefore a potentially serious bug which you should investigate
        !           334:      and report (*note Bugs::.).
        !           335: 
        !           336:         On systems that use COFF object files, bytes 5 to 8 will
        !           337:      always be different, since it is a timestamp.  On these systems,
        !           338:      you can do the comparison as follows (in Bourne shell):
        !           339: 
        !           340:           for file in *.o; do
        !           341:           tail +10c $file > foo1
        !           342:           tail +10c stage2/$file > foo2
        !           343:           cmp foo1 foo2 || echo $file
        !           344:           done
        !           345: 
        !           346:         On MIPS machines, you need to use the shell script `ecoff-cmp'
        !           347:      to compare two object files if you have built the compiler with
        !           348:      the `-mno-mips-tfile' option.  Thus, do this:
        !           349: 
        !           350:           for file in *.o; do
        !           351:           ecoff-cmp $file stage2/$file
        !           352:           done
        !           353: 
        !           354:  11. Install the compiler driver, the compiler's passes and run-time
        !           355:      support.  You can use the following command:
        !           356: 
        !           357:           make CC=stage2/gcc install
        !           358: 
        !           359:      (Use the same value for `CC' that you used when compiling the
        !           360:      files that are being installed.)
        !           361: 
        !           362:         This copies the files `cc1', `cpp' and `libgcc.a' to files
        !           363:      `cc1', `cpp' and `libgcc.a' in directory
        !           364:      `/usr/local/lib/gcc/TARGET/VERSION', which is where the compiler
        !           365:      driver program looks for them.  Here TARGET is the target machine
        !           366:      type specified when you ran `configure', and VERSION is the
        !           367:      version number of GNU CC.  This naming scheme permits various
        !           368:      versions and/or cross-compilers to coexist.
        !           369: 
        !           370:         It also copies the driver program `gcc' into the directory
        !           371:      `/usr/local/bin', so that it appears in typical execution search
        !           372:      paths.
        !           373: 
        !           374:         *Warning: there is a bug in `alloca' in the Sun library.  To
        !           375:      avoid this bug, install the binaries of GNU CC that were compiled
        !           376:      by GNU CC.  They use `alloca' as a built-in function and never
        !           377:      the one in the library.*
        !           378: 
        !           379:  12. If you will be using C++ or Objective C, and your operating
        !           380:      system does not handle constructors, then you must build and
        !           381:      install the program `collect2'.  Do this with the following
        !           382:      command:
        !           383: 
        !           384:           make CC="stage2/gcc -O" install-collect2
        !           385: 
        !           386:         The systems that *do* handle constructors on their own include
        !           387:      system V release 4, and system V release 3 on the Intel 386.
        !           388: 
        !           389:         Berkeley systems that use the "a.out" object file format handle
        !           390:      constructors without `collect2' if you use the GNU linker.  But if
        !           391:      you don't use the GNU linker, then you need `collect2' on these
        !           392:      systems.
        !           393: 
        !           394:  13. Build and install `protoize' if you want it.  Type
        !           395: 
        !           396:           make CC="stage2/gcc -O" install-proto
        !           397: 
        !           398:         There is as yet no documentation for `protoize'.  Sorry.
        !           399: 
        !           400:  14. Correct errors in the header files on your machine.
        !           401: 
        !           402:         Various system header files often contain constructs which are
        !           403:      incompatible with ANSI C, and they will not work when you compile
        !           404:      programs with GNU CC.  This behavior consists of substituting for
        !           405:      macro argument names when they appear inside of character
        !           406:      constants.  The most common offender is `ioctl.h'.
        !           407: 
        !           408:         You can overcome this problem when you compile by specifying
        !           409:      the `-traditional' option.
        !           410: 
        !           411:         Alternatively, on Sun systems and 4.3BSD at least, you can
        !           412:      correct the include files by running the shell script
        !           413:      `fixincludes'.  This installs modified, corrected copies of the
        !           414:      files `ioctl.h', `ttychars.h' and many others, in a special
        !           415:      directory where only GNU CC will normally look for them.  This
        !           416:      script will work on various systems because it chooses the files
        !           417:      by searching all the system headers for the problem cases that we
        !           418:      know about.
        !           419: 
        !           420:         Use the following command to do this:
        !           421: 
        !           422:           make install-fixincludes
        !           423: 
        !           424:      If you selected a different directory for GNU CC installation
        !           425:      when you installed it, by specifying the Make variable `prefix' or
        !           426:      `libdir', specify it the same way in this command.
        !           427: 
        !           428:         Note that some systems are starting to come with ANSI C system
        !           429:      header files.  On these systems, don't run `fixincludes'; it may
        !           430:      not work, and is certainly not necessary.
        !           431: 
        !           432:    If you cannot install the compiler's passes and run-time support in
        !           433: `/usr/local/lib', you can alternatively use the `-B' option to specify
        !           434: a prefix by which they may be found.  The compiler concatenates the
        !           435: prefix with the names  `cpp', `cc1' and `libgcc.a'.  Thus, you can put
        !           436: the files in a directory `/usr/foo/gcc' and specify `-B/usr/foo/gcc/'
        !           437: when you run GNU CC.
        !           438: 
        !           439:    Also, you can specify an alternative default directory for these
        !           440: files by setting the Make variable `libdir' when you make GNU CC.
        !           441: 
        !           442: 
        !           443: Compilation in a Separate Directory
        !           444: ===================================
        !           445: 
        !           446:    If you wish to build the object files and executables in a directory
        !           447: other than the one containing the source files, here is what you must
        !           448: do differently:
        !           449: 
        !           450:   1. Make sure you have a version of Make that supports the `VPATH'
        !           451:      feature.  (GNU Make supports it, as do Make versions on most BSD
        !           452:      systems.)
        !           453: 
        !           454:   2. Go to that directory before running `configure':
        !           455: 
        !           456:           mkdir gcc-sun3
        !           457:           cd gcc-sun3
        !           458: 
        !           459:         On systems that do not support symbolic links, this directory
        !           460:      must be on the same file system as the source code directory.
        !           461: 
        !           462:   3. Specify where to find `configure' when you run it:
        !           463: 
        !           464:           ../gcc-2.00/configure ...
        !           465: 
        !           466:         This also tells `configure' where to find the compiler sources;
        !           467:      `configure' takes the directory from the file name that was used
        !           468:      to invoke it.  But if you want to be sure, you can specify the
        !           469:      source directory with the `--srcdir' option, like this:
        !           470: 
        !           471:           ../gcc-2.00/configure --srcdir=../gcc-2.00 sun3
        !           472: 
        !           473:         The directory you specify with `--srcdir' need not be the same
        !           474:      as the one that `configure' is found in.
        !           475: 
        !           476:    Now, you can run `make' in that directory.  You need not repeat the
        !           477: configuration steps shown above, when ordinary source files change. 
        !           478: You must, however, run `configure' again when the configuration files
        !           479: change, if your system does not support symbolic links.
        !           480: 
        !           481: 
        !           482: Installing GNU CC on the Sun
        !           483: ============================
        !           484: 
        !           485:    Make sure the environment variable `FLOAT_OPTION' is not set when
        !           486: you compile `libgcc.a'.  If this option were set to `f68881' when
        !           487: `libgcc.a' is compiled, the resulting code would demand to be linked
        !           488: with a special startup file and would not link properly without
        !           489: special pains.
        !           490: 
        !           491:    There is a bug in `alloca' in certain versions of the Sun library. 
        !           492: To avoid this bug, install the binaries of GNU CC that were compiled by
        !           493: GNU CC.  They use `alloca' as a built-in function and never the one in
        !           494: the library.
        !           495: 
        !           496:    Some versions of the Sun compiler crash when compiling GNU CC.  The
        !           497: problem is a segmentation fault in cpp.  This problem seems to be due
        !           498: to the bulk of data in the environment variables.  You may be able to
        !           499: avoid it by using the following command to compile GNU CC with Sun CC:
        !           500: 
        !           501:      make CC="TERMCAP=x OBJS=x LIBFUNCS=x STAGESTUFF=x cc"
        !           502: 
        !           503: 
        !           504: Installing GNU CC on the 3b1
        !           505: ============================
        !           506: 
        !           507:    Installing GNU CC on the 3b1 is difficult if you do not already have
        !           508: GNU CC running, due to bugs in the installed C compiler.  However, the
        !           509: following procedure might work.  We are unable to test it.
        !           510: 
        !           511:   1. Comment out the `#include "config.h"' line on line 37 of `cccp.c'
        !           512:      and do `make cpp'.  This makes a preliminary version of GNU cpp.
        !           513: 
        !           514:   2. Save the old `/lib/cpp' and copy the preliminary GNU cpp to that
        !           515:      file name.
        !           516: 
        !           517:   3. Undo your change in `cccp.c', or reinstall the original version,
        !           518:      and do `make cpp' again.
        !           519: 
        !           520:   4. Copy this final version of GNU cpp into `/lib/cpp'.
        !           521: 
        !           522:   5. Replace every occurrence of `obstack_free' in the file `tree.c'
        !           523:      with `_obstack_free'.
        !           524: 
        !           525:   6. Run `make' to get the first-stage GNU CC.
        !           526: 
        !           527:   7. Reinstall the original version of `/lib/cpp'.
        !           528: 
        !           529:   8. Now you can compile GNU CC with itself and install it in the
        !           530:      normal fashion.
        !           531: 
        !           532: 
        !           533: Installing GNU CC on SCO System V 3.2
        !           534: =====================================
        !           535: 
        !           536:    The compiler that comes with this system does not work properly with
        !           537: `-O'.  Therefore, you should redefine the Make variable `CCLIBFLAGS'
        !           538: not to use `-O'.
        !           539: 
        !           540:    In addition, the compiler produces incorrect output when compiling
        !           541: parts of GNU CC; the resulting executable `cc1' does not work properly
        !           542: when it is used with `-O'.
        !           543: 
        !           544:    Therefore, what you must do after building the first stage is use
        !           545: GNU CC to compile itself without optimization.  Here is how:
        !           546: 
        !           547:      make -k cc1 CC="./gcc -B./"
        !           548: 
        !           549:    You can think of this as "stage 1.1" of the installation process. 
        !           550: However, using this command has the effect of discarding the faulty
        !           551: stage 1 executable for `cc1' and replacing it with stage 1.1.  You can
        !           552: then proceed with `make stage1' and the rest of installation.
        !           553: 
        !           554:    On Xenix, the same thing is necessary; in addition, you may have to
        !           555: remove `-g' from the options used with `cc', and you may have to
        !           556: simplify complicated statements in the sources of GNU CC to get them
        !           557: to compile.
        !           558: 
        !           559: 
        !           560: Installing GNU CC on Unos
        !           561: =========================
        !           562: 
        !           563:    Use `configure unos' for building on Unos.
        !           564: 
        !           565:    The Unos assembler is named `casm' instead of `as'.  For some
        !           566: strange reason linking `/bin/as' to `/bin/casm' changes the behavior,
        !           567: and does not work.  So, when installing GNU CC, you should install the
        !           568: following script as `as' in the subdirectory where the passes of GCC
        !           569: are installed:
        !           570: 
        !           571:      #!/bin/sh
        !           572:      casm $*
        !           573: 
        !           574:    The default Unos library is named `libunos.a' instead of `libc.a'. 
        !           575: To allow GNU CC to function, either change all references to `-lc' in
        !           576: `gcc.c' to `-lunos' or link `/lib/libc.a' to `/lib/libunos.a'.
        !           577: 
        !           578:    When compiling GNU CC with the standard compiler, to overcome bugs
        !           579: in the support of `alloca', do not use `-O' when making stage 2.  Then
        !           580: use the stage 2 compiler with `-O' to make the stage 3 compiler.  This
        !           581: compiler will have the same characteristics as the usual stage 2
        !           582: compiler on other systems.  Use it to make a stage 4 compiler and
        !           583: compare that with stage 3 to verify proper compilation.
        !           584: 
        !           585:    Unos uses memory segmentation instead of demand paging, so you will
        !           586: need a lot of memory.  5 Mb is barely enough if no other tasks are
        !           587: running.  If linking `cc1' fails, try putting the object files into a
        !           588: library and linking from that library.
        !           589: 
        !           590: 
        !           591: Installing GNU CC on VMS
        !           592: ========================
        !           593: 
        !           594:    The VMS version of GNU CC is distributed in a backup saveset
        !           595: containing both source code and precompiled binaries.
        !           596: 
        !           597:    To install the `gcc' command so you can use the compiler easily, in
        !           598: the same manner as you use the VMS C compiler, you must install the
        !           599: VMS CLD file for GNU CC as follows:
        !           600: 
        !           601:   1. Define the VMS logical names `GNU_CC' and `GNU_CC_INCLUDE' to
        !           602:      point to the directories where the GNU CC executables (`gcc-cpp',
        !           603:      `gcc-cc1', etc.) and the C include files are kept.  This should
        !           604:      be done with the commands:
        !           605: 
        !           606:           $ assign /super /system disk:[gcc.] gnu_cc
        !           607:           $ assign /super /system disk:[gcc.include.] gnu_cc_include
        !           608: 
        !           609:      with the appropriate disk and directory names.  These commands
        !           610:      can be placed in your system startup file so they will be
        !           611:      executed whenever the machine is rebooted.  You may, if you
        !           612:      choose, do this via the `GCC_INSTALL.COM' script in the `[GCC]'
        !           613:      directory.
        !           614: 
        !           615:   2. Install the `GCC' command with the command line:
        !           616: 
        !           617:           $ set command /table=sys$library:dcltables gnu_cc:[000000]gcc
        !           618: 
        !           619:   3. To install the help file, do the following:
        !           620: 
        !           621:           $ lib/help sys$library:helplib.hlb gcc.hlp
        !           622: 
        !           623:      Now you can invoke the compiler with a command like `gcc /verbose
        !           624:      file.c', which is equivalent to the command `gcc -v -c file.c' in
        !           625:      Unix.
        !           626: 
        !           627:    If you wish to use GNU C++ you must first install GNU CC, and then
        !           628: perform the following steps:
        !           629: 
        !           630:   1. Define the VMS logical name `GNU_GXX_INCLUDE' to point to the
        !           631:      directory where the preprocessor will search for the C++ header
        !           632:      files.  This can be done with the command:
        !           633: 
        !           634:           $ assign /super /system disk:[gcc.gxx_include.] gnu_gxx_include
        !           635: 
        !           636:      with the appropriate disk and directory name.  If you are going
        !           637:      to be using libg++, you should place the libg++ header files in
        !           638:      the directory that this logical name points to.
        !           639: 
        !           640:   2. Obtain the file `gcc-cc1plus.exe', and place this in the same
        !           641:      directory that `gcc-cc1.exe' is kept.
        !           642: 
        !           643:   3. You will need several library functions which are used to call the
        !           644:      constructors and destructors for global objects.  These functions
        !           645:      are part of the libg++ distribution, and you will automatically
        !           646:      get them if you install libg++.
        !           647: 
        !           648:         If you are not planning to install libg++, you will need to
        !           649:      obtain the files `gxx-startup-1.mar' and `gstart.cc' from the
        !           650:      libg++ distribution, compile them, and supply them to the linker
        !           651:      whenever you link a C++ program.
        !           652: 
        !           653:         The GNU C++ compiler can be invoked with a command like `gcc
        !           654:      /plus /verbose file.cc', which is equivalent to the command `g++
        !           655:      -v -c file.cc' in Unix.
        !           656: 
        !           657:    We try to put corresponding binaries and sources on the VMS
        !           658: distribution tape.  But sometimes the binaries will be from an older
        !           659: version that the sources, because we don't always have time to update
        !           660: them.  (Use the `/version' option to determine the version number of
        !           661: the binaries and compare it with the source file `version.c' to tell
        !           662: whether this is so.)  In this case, you should use the binaries you
        !           663: get to recompile the sources.  If you must recompile, here is how:
        !           664: 
        !           665:   1. Copy the file `vms.h' to `tm.h', `xm-vms.h' to `config.h',
        !           666:      `vax.md' to `md.' and `vax.c' to `aux-output.c'.  The files to be
        !           667:      copied are found in the subdirectory named `config'; they should
        !           668:      be copied to the main directory of GNU CC.  If you wish, you may
        !           669:      use the command file `config-gcc.com' to perform these steps for
        !           670:      you.
        !           671: 
        !           672:   2. Setup the logical names and command tables as defined above.  In
        !           673:      addition, define the VMS logical name `GNU_BISON' to point at the
        !           674:      to the directories where the Bison executable is kept.  This
        !           675:      should be done with the command:
        !           676: 
        !           677:           $ assign /super /system disk:[bison.] gnu_bison
        !           678: 
        !           679:         You may, if you choose, use the `INSTALL_BISON.COM' script in
        !           680:      the `[BISON]' directory.
        !           681: 
        !           682:   3. Install the `BISON' command with the command line:
        !           683: 
        !           684:           $ set command /table=sys$library:dcltables gnu_bison:[000000]bison
        !           685: 
        !           686:   4. Type `@make-gcc' to recompile everything (alternatively, you may
        !           687:      submit the file `make-gcc.com' to a batch queue).  If you wish to
        !           688:      build the GNU C++ compiler as well as the GNU CC compiler, you
        !           689:      must first edit `make-gcc.com' and follow the instructions that
        !           690:      appear in the comments.
        !           691: 
        !           692:         *If you are building GNU CC with a previous version of GNU CC,
        !           693:      you also should check to see that you have the newest version of
        !           694:      the assembler*.  In particular, GNU CC version 2 treats global
        !           695:      constant variables slightly differently from GNU CC version 1,
        !           696:      and GAS version 1.38.1 does not have the patches required to work
        !           697:      with GCC version 2.  If you use GAS 1.38.1, then `extern const'
        !           698:      variables will not have the read-only bit set, and the linker
        !           699:      will generate warning messages about mismatched psect attributes
        !           700:      for these variables.  These warning messages are merely a
        !           701:      nuisance, and can safely be ignored.
        !           702: 
        !           703:         If you are compiling with a version of GNU CC older than 1.33,
        !           704:      specify `/DEFINE=("inline=")' as an option in all the
        !           705:      compilations.  This requires editing all the `gcc' commands in
        !           706:      `make-cc1.com'.  (The older versions had problems supporting
        !           707:      `inline'.)  Once you have a working 1.33 or newer GNU CC, you can
        !           708:      change this file back.
        !           709: 
        !           710:    Under previous versions of GNU CC, the generated code would
        !           711: occasionally give strange results when linked to the sharable
        !           712: `VAXCRTL' library.  Now this should work.
        !           713: 
        !           714:    Even with this version, however, GNU CC itself should not be linked
        !           715: to the sharable `VAXCRTL'.  The `qsort' routine supplied with
        !           716: `VAXCRTL' has a bug which can cause a compiler crash.
        !           717: 
        !           718:    Similarly, the preprocessor should not be linked to the sharable
        !           719: `VAXCRTL'.  The `strncat' routine supplied with `VAXCRTL' has a bug
        !           720: which can cause the preprocessor to go into an infinite loop.
        !           721: 
        !           722:    If you attempt to link to the sharable `VAXCRTL', the VMS linker
        !           723: will strongly resist any effort to force it to use the `qsort' and
        !           724: `strncat' routines from `gcclib'.  Until the bugs in `VAXCRTL' have
        !           725: been fixed, linking any of the compiler components to the sharable
        !           726: VAXCRTL is not recommended.  (These routines can be bypassed by
        !           727: placing duplicate copies of `qsort' and `strncat' in `gcclib' under
        !           728: different names, and patching the compiler sources to use these
        !           729: routines).  Both of the bugs in `VAXCRTL' are still present in VMS
        !           730: version 5.4-1, which is the most recent version as of this writing.
        !           731: 
        !           732:    The executables that are generated by `make-cc1.com' and
        !           733: `make-cccp.com' use the nonshared version of `VAXCRTL' (and thus use
        !           734: the `qsort' and `strncat' routines from `gcclib.olb').

unix.superglobalmegacorp.com

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