home *** CD-ROM | disk | FTP | other *** search
- This is a copy of one chapter from the Info file gcc.info*.
- For full information on installing and porting GCC, refer to the
- GCC manual:
-
- Info file gcc.info
- TeX output gcc.dvi
- TeX source gcc.texinfo
-
-
- Installing GNU CC
- *****************
-
- Here is the procedure for installing GNU CC on a Unix system.
-
- 1. If you have built GNU CC previously in the same directory for a
- different target machine, do `make cleanconfig' to delete all
- files that might be invalid.
-
- 2. On a Sequent system, go to the Berkeley universe.
-
- 3. On a System V release 4 system, make sure `/usr/bin' precedes
- `/usr/ucb' in `PATH'. The `cc' command in `/usr/ucb' uses
- libraries which have bugs.
-
- 4. Specify the host and target machine configurations. You do this
- by running the file `configure' with appropriate arguments.
-
- If you are building a compiler to produce code for the machine
- it runs on, specify just one machine type. To build a
- cross-compiler, specify two configurations, one for the "host
- machine" (which the compiler runs on), and one for the "target
- machine" (which the compiler produces code for). The command
- looks like this:
-
- configure --host=sun3-sunos3 --target=sparc-sun-sunos4.1
-
- A configuration name may be canonical or it may be more or less
- abbreviated.
-
- A canonical configuration name has three parts, separated by
- dashes. It looks like this: `CPU-COMPANY-SYSTEM'. (The three
- parts may themselves contain dashes; `configure' can figure out
- which dashes serve which purpose.) For example,
- `m68k-sun-sunos4.1' specifies a Sun 3.
-
- You can also replace parts of the configuration by nicknames
- or aliases. For example, `sun3' stands for `m68k-sun', so
- `sun3-sunos4.1' is another way to specify a Sun 3. You can also
- use simply `sun3-sunos', since the version of Sunos is assumed by
- default to be version 4. `sun3-bsd' also works, since
- `configure' knows that the only BSD variant on a Sun 3 is Sunos.
-
- You can specify a version number after any of the system
- types, and some of the CPU types. In most cases, the version is
- irrelevant, and will be ignored. So you might as well specify
- the version if you know it.
-
- Here are the possible CPU types:
-
- a29k, arm, cN, hppa, i386, i860, m68000, m68k, m88k, mips,
- ns32k, romp, rs6000, sparc, vax.
-
- Note that the type hppa currently works only with Berkeley
- systems, not with HP/UX.
-
- Here are the recognized company names. As you can see,
- customary abbreviations are used rather than the longer official
- names.
-
- alliant, altos, apollo, att, convergent, convex, crds, dec,
- dg, encore, harris, hp, ibm, mips, motorola, ncr, next, ns,
- omron, sequent, sgi, sony, sun, tti, unicom.
-
- The company name is meaningful only to disambiguate when the
- rest of the information supplied is insufficient. You can omit
- it, writing just `CPU-SYSTEM', if it is not needed. For example,
- `vax-ultrix4.2' is equivalent to `vax-dec-ultrix4.2'.
-
- Here is a list of system types:
-
- bsd, sysv, mach, minix, genix, ultrix, vms, sco, esix, isc,
- aix, sunos, hpux, unos, luna, dgux, newsos, osfrose, osf,
- dynix, aos, ctix.
-
- You can omit the system type; then `configure' guesses the
- operating system from the CPU and company.
-
- Often a particular model of machine has a name. Many of these
- names are recognized as an alias for a CPU/company combination.
- The alias `sun3', mentioned above, is an example of this: it
- stands for `m68k-sun'. Sometimes we accept a company name as a
- machine name, when the name is popularly used for a particular
- machine. Here is a table of the known machine names:
-
- 3300, 3b1, 7300, altos3068, altos, apollo68, att-7300,
- balance, convex-cN, crds, decstation-3100, decstation-dec,
- decstation, delta, encore, gmicro, hp7NN, hp8NN, hp9k2NN,
- hp9k3NN, hp9k7NN, hp9k8NN, iris4d, iris, isi68, m3230,
- magnum, merlin, miniframe, mmax, news-3600, news800, news,
- next, pbd, pc532, pmax, ps2, risc-news, rtpc, sun2, sun386i,
- sun386, sun3, sun4, symmetry, tower-32, tower.
-
- If you specify an impossible combination such as `i860-dg-vms',
- then you may get an error message from `configure', or it may
- ignore part of the information and do the best it can with the
- rest. `configure' always prints the canonical name for the
- alternative that it used.
-
- On certain systems, you must specify whether you want GNU CC
- to work with the usual compilation tools or with the GNU
- compilation tools (including GAS). Use the `--gas' argument when
- you run `configure', if you want to use the GNU tools. The
- systems were this makes a difference are `i386-ANYTHING-sysv',
- `i860-ANYTHING-bsd', `m68k-hp-hpux', `m68k-sony-bsd',
- `m68k-altos-sysv', `m68000-hp-hpux', and `m68000-att-sysv'. On
- any other system, `--gas' has no effect.
-
- On certain systems, you must specify whether the machine has a
- floating point unit. These systems are `m68k-sun-sunosN' and
- `m68k-isi-bsd'. On any other system, `--nfp' currently has no
- effect, though perhaps there are other systems where it could
- usefully make a difference.
-
- If you want to install your own homemade configuration files,
- you can use `local' as the company name to access them. If you
- use configuration `CPU-local', the entire configuration name is
- used to form the configuration file names.
-
- Thus, if you specify `m68k-local', then the files used are
- `m68k-local.md', `m68k-local.h', `m68k-local.c',
- `xm-m68k-local.h', `t-m68k-local', and `x-m68k-local'.
-
- Here is a list of configurations that have special treatment:
-
- `m68000-att'
- AT&T 3b1, a.k.a. 7300 PC. Special procedures are needed to
- compile GNU CC with this machine's standard C compiler, due
- to bugs in that compiler. *Note 3b1 Install::. You can
- bootstrap it more easily with previous versions of GNU CC if
- you have them.
-
- `m68000-hp-bsd'
- HP 9000 series 200 running BSD. Note that the C compiler
- that comes with this system cannot compile GNU CC; contact
- `law@super.org' to get binaries of GNU CC for bootstrapping.
-
- `m68k-altos'
- Altos 3068. You must use the GNU assembler, linker and
- debugger, with COFF-encapsulation. Also, you must fix a
- kernel bug. Details in the file `ALTOS-README'.
-
- `m68k-hp-hpux'
- HP 9000 series 200 or 300 running HPUX. GNU CC does not
- support the special symbol table used by HP's debugger, but
- you can debug programs with GDB if you specify `--gas' to
- use the GNU tools instead. In order to use the GNU tools,
- you must install a library conversion program called `hpxt'.
-
- `m68k-sun'
- Sun 3. We do not provide a configuration file to use the
- Sun FPA by default, because programs that establish signal
- handlers for floating point traps inherently cannot work
- with the FPA.
-
- `m88k-dgux'
- Motorola m88k running DG/UX. To build native or cross
- compilers on DG/UX, you must first change to the 88open BCS
- software development environment. This is done by issuing
- this command:
-
- eval `sde-target m88kbcs`
-
- `ns32k-encore'
- Encore ns32000 system. Encore systems are supported only
- under BSD.
-
- `ns32k-*-genix'
- National Semiconductor ns32000 system. Genix has bugs in
- `alloca' and `malloc'; you must get the compiled versions of
- these from GNU Emacs.
-
- `ns32k-utek'
- UTEK ns32000 system ("merlin"). The C compiler that comes
- with this system cannot compile GNU CC; contact
- `tektronix!reed!mason' to get binaries of GNU CC for
- bootstrapping.
-
- `rs6000-ibm'
- IBM PowerStation/6000 machines. Due to the nonstandard
- debugging information required for this machine, `-g' is not
- available in this configuration.
-
- `vax-dec-ultrix'
- Don't try compiling with Vax C (`vcc'). It produces
- incorrect code in some cases (for example, when `alloca' is
- used).
-
- Meanwhile, compiling `cp-parse.c' with pcc does not work
- because of an internal table size limitation in that
- compiler. To avoid this problem, compile just the GNU C
- compiler first, and use it to recompile building all the
- languages that you want to run.
-
- Here we spell out what files will be set up by `configure'.
- Normally you need not be concerned with these files.
-
- * A symbolic link named `config.h' is made to the top-level
- config file for the machine you will run the compiler on
- (*note Config::.). This file is responsible for defining
- information about the host machine. It includes `tm.h'.
-
- The top-level config file is located in the subdirectory
- `config'. Its name is always `xm-SOMETHING.h'; usually
- `xm-MACHINE.h', but there are some exceptions.
-
- If your system does not support symbolic links, you might
- want to set up `config.h' to contain a `#include' command
- which refers to the appropriate file.
-
- * A symbolic link named `tconfig.h' is made to the top-level
- config file for your target machine. This is used for
- compiling certain programs to run on that machine.
-
- * A symbolic link named `tm.h' is made to the
- machine-description macro file for your target machine. It
- should be in the subdirectory `config' and its name is often
- `MACHINE.h'.
-
- * A symbolic link named `md' will be made to the machine
- description pattern file. It should be in the `config'
- subdirectory and its name should be `MACHINE.md'; but
- MACHINE is often not the same as the name used in the `tm.h'
- file because the `md' files are more general.
-
- * A symbolic link named `aux-output.c' will be made to the
- output subroutine file for your machine. It should be in
- the `config' subdirectory and its name should be `MACHINE.c'.
-
- * The command file `configure' also constructs `Makefile' by
- adding some text to the template file `Makefile.in'. The
- additional text comes from files in the `config' directory,
- named `t-TARGET' and `h-HOST'. If these files do not exist,
- it means nothing needs to be added for a given target or
- host.
-
- 5. Make sure the Bison parser generator is installed. (This is
- unnecessary if the Bison output files `c-parse.c' and `cexp.c'
- are more recent than `c-parse.y' and `cexp.y' and you do not plan
- to change the `.y' files.)
-
- Bison versions older than Sept 8, 1988 will produce incorrect
- output for `c-parse.c'.
-
- 6. Build the compiler. Just type `make LANGUAGES=c' in the compiler
- directory.
-
- `LANGUAGES=c' specifies that only the C compiler should be
- compiled. The makefile normally builds compilers for all the
- supported languages; currently, C, C++ and Objective C. However,
- C is the only language that is sure to work when you build with
- other non-GNU C compilers. In addition, building anything but C
- at this stage is a waste of time.
-
- In general, you can specify the languages to build by typing
- the argument `LANGUAGES="LIST"', where LIST is one or more words
- from the list `c', `c++', and `objective-c'.
-
- Ignore any warnings you may see about "statement not reached"
- in `insn-emit.c'; they are normal. Any other compilation errors
- may represent bugs in the port to your machine or operating
- system, and should be investigated and reported (*note Bugs::.).
-
- Some commercial compilers fail to compile GNU CC because they
- have bugs or limitations. For example, the Microsoft compiler is
- said to run out of macro space. Some Ultrix compilers run out of
- expression space; then you need to break up the statement where
- the problem happens.
-
- 7. If you are using COFF-encapsulation, you must convert `libgcc.a'
- to a GNU-format library at this point. See the file
- `README-ENCAP' in the directory containing the GNU binary file
- utilities, for directions.
-
- 8. Move the first-stage object files and executables into a
- subdirectory with this command:
-
- make stage1
-
- The files are moved into a subdirectory named `stage1'. Once
- installation is complete, you may wish to delete these files with
- `rm -r stage1'.
-
- 9. Recompile the compiler with itself, with this command:
-
- make CC=stage1/gcc CFLAGS="-g -O -Bstage1/"
-
- This is called making the stage 2 compiler.
-
- The command shown above builds compilers for all the supported
- languages. If you don't want them all, you can specify the
- languages to build by typing the argument `LANGUAGES="LIST"'.
- LIST should contain one or more words from the list `c', `c++',
- and `objective-c', separated by spaces.
-
- On a 68000 or 68020 system lacking floating point hardware,
- unless you have selected a `tm.h' file that expects by default
- that there is no such hardware, do this instead:
-
- make CC=stage1/gcc CFLAGS="-g -O -Bstage1/ -msoft-float"
-
- 10. If you wish to test the compiler by compiling it with itself one
- more time, do this:
-
- make stage2
- make CC=stage2/gcc CFLAGS="-g -O -Bstage2/"
-
- This is called making the stage 3 compiler. Aside from the `-B'
- option, the options should be the same as when you made the stage
- 2 compiler.
-
- Then compare the latest object files with the stage 2 object
- files--they ought to be identical, unless they contain time
- stamps. On systems where object files do not contain time
- stamps, you can do this (in Bourne shell):
-
- for file in *.o; do
- cmp $file stage2/$file
- done
-
- This will mention any object files that differ between stage 2
- and stage 3. Any difference, no matter how innocuous, indicates
- that the stage 2 compiler has compiled GNU CC incorrectly, and is
- therefore a potentially serious bug which you should investigate
- and report (*note Bugs::.).
-
- On systems that use COFF object files, bytes 5 to 8 will
- always be different, since it is a timestamp. On these systems,
- you can do the comparison as follows (in Bourne shell):
-
- for file in *.o; do
- tail +10c $file > foo1
- tail +10c stage2/$file > foo2
- cmp foo1 foo2 || echo $file
- done
-
- On MIPS machines, you need to use the shell script `ecoff-cmp'
- to compare two object files if you have built the compiler with
- the `-mno-mips-tfile' option. Thus, do this:
-
- for file in *.o; do
- ecoff-cmp $file stage2/$file
- done
-
- 11. Install the compiler driver, the compiler's passes and run-time
- support. You can use the following command:
-
- make CC=stage2/gcc install
-
- (Use the same value for `CC' that you used when compiling the
- files that are being installed.)
-
- This copies the files `cc1', `cpp' and `libgcc.a' to files
- `cc1', `cpp' and `libgcc.a' in directory
- `/usr/local/lib/gcc/TARGET/VERSION', which is where the compiler
- driver program looks for them. Here TARGET is the target machine
- type specified when you ran `configure', and VERSION is the
- version number of GNU CC. This naming scheme permits various
- versions and/or cross-compilers to coexist.
-
- It also copies the driver program `gcc' into the directory
- `/usr/local/bin', so that it appears in typical execution search
- paths.
-
- *Warning: there is a bug in `alloca' in the Sun library. To
- avoid this bug, install the binaries of GNU CC that were compiled
- by GNU CC. They use `alloca' as a built-in function and never
- the one in the library.*
-
- 12. If you will be using C++ or Objective C, and your operating
- system does not handle constructors, then you must build and
- install the program `collect2'. Do this with the following
- command:
-
- make CC="stage2/gcc -O" install-collect2
-
- The systems that *do* handle constructors on their own include
- system V release 4, and system V release 3 on the Intel 386.
-
- Berkeley systems that use the "a.out" object file format handle
- constructors without `collect2' if you use the GNU linker. But if
- you don't use the GNU linker, then you need `collect2' on these
- systems.
-
- 13. Build and install `protoize' if you want it. Type
-
- make CC="stage2/gcc -O" install-proto
-
- There is as yet no documentation for `protoize'. Sorry.
-
- 14. Correct errors in the header files on your machine.
-
- Various system header files often contain constructs which are
- incompatible with ANSI C, and they will not work when you compile
- programs with GNU CC. This behavior consists of substituting for
- macro argument names when they appear inside of character
- constants. The most common offender is `ioctl.h'.
-
- You can overcome this problem when you compile by specifying
- the `-traditional' option.
-
- Alternatively, on Sun systems and 4.3BSD at least, you can
- correct the include files by running the shell script
- `fixincludes'. This installs modified, corrected copies of the
- files `ioctl.h', `ttychars.h' and many others, in a special
- directory where only GNU CC will normally look for them. This
- script will work on various systems because it chooses the files
- by searching all the system headers for the problem cases that we
- know about.
-
- Use the following command to do this:
-
- make install-fixincludes
-
- If you selected a different directory for GNU CC installation
- when you installed it, by specifying the Make variable `prefix' or
- `libdir', specify it the same way in this command.
-
- Note that some systems are starting to come with ANSI C system
- header files. On these systems, don't run `fixincludes'; it may
- not work, and is certainly not necessary.
-
- If you cannot install the compiler's passes and run-time support in
- `/usr/local/lib', you can alternatively use the `-B' option to specify
- a prefix by which they may be found. The compiler concatenates the
- prefix with the names `cpp', `cc1' and `libgcc.a'. Thus, you can put
- the files in a directory `/usr/foo/gcc' and specify `-B/usr/foo/gcc/'
- when you run GNU CC.
-
- Also, you can specify an alternative default directory for these
- files by setting the Make variable `libdir' when you make GNU CC.
-
-
- Compilation in a Separate Directory
- ===================================
-
- If you wish to build the object files and executables in a directory
- other than the one containing the source files, here is what you must
- do differently:
-
- 1. Make sure you have a version of Make that supports the `VPATH'
- feature. (GNU Make supports it, as do Make versions on most BSD
- systems.)
-
- 2. Go to that directory before running `configure':
-
- mkdir gcc-sun3
- cd gcc-sun3
-
- On systems that do not support symbolic links, this directory
- must be on the same file system as the source code directory.
-
- 3. Specify where to find `configure' when you run it:
-
- ../gcc-2.00/configure ...
-
- This also tells `configure' where to find the compiler sources;
- `configure' takes the directory from the file name that was used
- to invoke it. But if you want to be sure, you can specify the
- source directory with the `--srcdir' option, like this:
-
- ../gcc-2.00/configure --srcdir=../gcc-2.00 sun3
-
- The directory you specify with `--srcdir' need not be the same
- as the one that `configure' is found in.
-
- Now, you can run `make' in that directory. You need not repeat the
- configuration steps shown above, when ordinary source files change.
- You must, however, run `configure' again when the configuration files
- change, if your system does not support symbolic links.
-
-
- Installing GNU CC on the Sun
- ============================
-
- Make sure the environment variable `FLOAT_OPTION' is not set when
- you compile `libgcc.a'. If this option were set to `f68881' when
- `libgcc.a' is compiled, the resulting code would demand to be linked
- with a special startup file and would not link properly without
- special pains.
-
- There is a bug in `alloca' in certain versions of the Sun library.
- To avoid this bug, install the binaries of GNU CC that were compiled by
- GNU CC. They use `alloca' as a built-in function and never the one in
- the library.
-
- Some versions of the Sun compiler crash when compiling GNU CC. The
- problem is a segmentation fault in cpp. This problem seems to be due
- to the bulk of data in the environment variables. You may be able to
- avoid it by using the following command to compile GNU CC with Sun CC:
-
- make CC="TERMCAP=x OBJS=x LIBFUNCS=x STAGESTUFF=x cc"
-
-
- Installing GNU CC on the 3b1
- ============================
-
- Installing GNU CC on the 3b1 is difficult if you do not already have
- GNU CC running, due to bugs in the installed C compiler. However, the
- following procedure might work. We are unable to test it.
-
- 1. Comment out the `#include "config.h"' line on line 37 of `cccp.c'
- and do `make cpp'. This makes a preliminary version of GNU cpp.
-
- 2. Save the old `/lib/cpp' and copy the preliminary GNU cpp to that
- file name.
-
- 3. Undo your change in `cccp.c', or reinstall the original version,
- and do `make cpp' again.
-
- 4. Copy this final version of GNU cpp into `/lib/cpp'.
-
- 5. Replace every occurrence of `obstack_free' in the file `tree.c'
- with `_obstack_free'.
-
- 6. Run `make' to get the first-stage GNU CC.
-
- 7. Reinstall the original version of `/lib/cpp'.
-
- 8. Now you can compile GNU CC with itself and install it in the
- normal fashion.
-
-
- Installing GNU CC on SCO System V 3.2
- =====================================
-
- The compiler that comes with this system does not work properly with
- `-O'. Therefore, you should redefine the Make variable `CCLIBFLAGS'
- not to use `-O'.
-
- In addition, the compiler produces incorrect output when compiling
- parts of GNU CC; the resulting executable `cc1' does not work properly
- when it is used with `-O'.
-
- Therefore, what you must do after building the first stage is use
- GNU CC to compile itself without optimization. Here is how:
-
- make -k cc1 CC="./gcc -B./"
-
- You can think of this as "stage 1.1" of the installation process.
- However, using this command has the effect of discarding the faulty
- stage 1 executable for `cc1' and replacing it with stage 1.1. You can
- then proceed with `make stage1' and the rest of installation.
-
- On Xenix, the same thing is necessary; in addition, you may have to
- remove `-g' from the options used with `cc', and you may have to
- simplify complicated statements in the sources of GNU CC to get them
- to compile.
-
-
- Installing GNU CC on Unos
- =========================
-
- Use `configure unos' for building on Unos.
-
- The Unos assembler is named `casm' instead of `as'. For some
- strange reason linking `/bin/as' to `/bin/casm' changes the behavior,
- and does not work. So, when installing GNU CC, you should install the
- following script as `as' in the subdirectory where the passes of GCC
- are installed:
-
- #!/bin/sh
- casm $*
-
- The default Unos library is named `libunos.a' instead of `libc.a'.
- To allow GNU CC to function, either change all references to `-lc' in
- `gcc.c' to `-lunos' or link `/lib/libc.a' to `/lib/libunos.a'.
-
- When compiling GNU CC with the standard compiler, to overcome bugs
- in the support of `alloca', do not use `-O' when making stage 2. Then
- use the stage 2 compiler with `-O' to make the stage 3 compiler. This
- compiler will have the same characteristics as the usual stage 2
- compiler on other systems. Use it to make a stage 4 compiler and
- compare that with stage 3 to verify proper compilation.
-
- Unos uses memory segmentation instead of demand paging, so you will
- need a lot of memory. 5 Mb is barely enough if no other tasks are
- running. If linking `cc1' fails, try putting the object files into a
- library and linking from that library.
-
-
- Installing GNU CC on VMS
- ========================
-
- The VMS version of GNU CC is distributed in a backup saveset
- containing both source code and precompiled binaries.
-
- To install the `gcc' command so you can use the compiler easily, in
- the same manner as you use the VMS C compiler, you must install the
- VMS CLD file for GNU CC as follows:
-
- 1. Define the VMS logical names `GNU_CC' and `GNU_CC_INCLUDE' to
- point to the directories where the GNU CC executables (`gcc-cpp',
- `gcc-cc1', etc.) and the C include files are kept. This should
- be done with the commands:
-
- $ assign /super /system disk:[gcc.] gnu_cc
- $ assign /super /system disk:[gcc.include.] gnu_cc_include
-
- with the appropriate disk and directory names. These commands
- can be placed in your system startup file so they will be
- executed whenever the machine is rebooted. You may, if you
- choose, do this via the `GCC_INSTALL.COM' script in the `[GCC]'
- directory.
-
- 2. Install the `GCC' command with the command line:
-
- $ set command /table=sys$library:dcltables gnu_cc:[000000]gcc
-
- 3. To install the help file, do the following:
-
- $ lib/help sys$library:helplib.hlb gcc.hlp
-
- Now you can invoke the compiler with a command like `gcc /verbose
- file.c', which is equivalent to the command `gcc -v -c file.c' in
- Unix.
-
- If you wish to use GNU C++ you must first install GNU CC, and then
- perform the following steps:
-
- 1. Define the VMS logical name `GNU_GXX_INCLUDE' to point to the
- directory where the preprocessor will search for the C++ header
- files. This can be done with the command:
-
- $ assign /super /system disk:[gcc.gxx_include.] gnu_gxx_include
-
- with the appropriate disk and directory name. If you are going
- to be using libg++, you should place the libg++ header files in
- the directory that this logical name points to.
-
- 2. Obtain the file `gcc-cc1plus.exe', and place this in the same
- directory that `gcc-cc1.exe' is kept.
-
- 3. You will need several library functions which are used to call the
- constructors and destructors for global objects. These functions
- are part of the libg++ distribution, and you will automatically
- get them if you install libg++.
-
- If you are not planning to install libg++, you will need to
- obtain the files `gxx-startup-1.mar' and `gstart.cc' from the
- libg++ distribution, compile them, and supply them to the linker
- whenever you link a C++ program.
-
- The GNU C++ compiler can be invoked with a command like `gcc
- /plus /verbose file.cc', which is equivalent to the command `g++
- -v -c file.cc' in Unix.
-
- We try to put corresponding binaries and sources on the VMS
- distribution tape. But sometimes the binaries will be from an older
- version that the sources, because we don't always have time to update
- them. (Use the `/version' option to determine the version number of
- the binaries and compare it with the source file `version.c' to tell
- whether this is so.) In this case, you should use the binaries you
- get to recompile the sources. If you must recompile, here is how:
-
- 1. Copy the file `vms.h' to `tm.h', `xm-vms.h' to `config.h',
- `vax.md' to `md.' and `vax.c' to `aux-output.c'. The files to be
- copied are found in the subdirectory named `config'; they should
- be copied to the main directory of GNU CC. If you wish, you may
- use the command file `config-gcc.com' to perform these steps for
- you.
-
- 2. Setup the logical names and command tables as defined above. In
- addition, define the VMS logical name `GNU_BISON' to point at the
- to the directories where the Bison executable is kept. This
- should be done with the command:
-
- $ assign /super /system disk:[bison.] gnu_bison
-
- You may, if you choose, use the `INSTALL_BISON.COM' script in
- the `[BISON]' directory.
-
- 3. Install the `BISON' command with the command line:
-
- $ set command /table=sys$library:dcltables gnu_bison:[000000]bison
-
- 4. Type `@make-gcc' to recompile everything (alternatively, you may
- submit the file `make-gcc.com' to a batch queue). If you wish to
- build the GNU C++ compiler as well as the GNU CC compiler, you
- must first edit `make-gcc.com' and follow the instructions that
- appear in the comments.
-
- *If you are building GNU CC with a previous version of GNU CC,
- you also should check to see that you have the newest version of
- the assembler*. In particular, GNU CC version 2 treats global
- constant variables slightly differently from GNU CC version 1,
- and GAS version 1.38.1 does not have the patches required to work
- with GCC version 2. If you use GAS 1.38.1, then `extern const'
- variables will not have the read-only bit set, and the linker
- will generate warning messages about mismatched psect attributes
- for these variables. These warning messages are merely a
- nuisance, and can safely be ignored.
-
- If you are compiling with a version of GNU CC older than 1.33,
- specify `/DEFINE=("inline=")' as an option in all the
- compilations. This requires editing all the `gcc' commands in
- `make-cc1.com'. (The older versions had problems supporting
- `inline'.) Once you have a working 1.33 or newer GNU CC, you can
- change this file back.
-
- Under previous versions of GNU CC, the generated code would
- occasionally give strange results when linked to the sharable
- `VAXCRTL' library. Now this should work.
-
- Even with this version, however, GNU CC itself should not be linked
- to the sharable `VAXCRTL'. The `qsort' routine supplied with
- `VAXCRTL' has a bug which can cause a compiler crash.
-
- Similarly, the preprocessor should not be linked to the sharable
- `VAXCRTL'. The `strncat' routine supplied with `VAXCRTL' has a bug
- which can cause the preprocessor to go into an infinite loop.
-
- If you attempt to link to the sharable `VAXCRTL', the VMS linker
- will strongly resist any effort to force it to use the `qsort' and
- `strncat' routines from `gcclib'. Until the bugs in `VAXCRTL' have
- been fixed, linking any of the compiler components to the sharable
- VAXCRTL is not recommended. (These routines can be bypassed by
- placing duplicate copies of `qsort' and `strncat' in `gcclib' under
- different names, and patching the compiler sources to use these
- routines). Both of the bugs in `VAXCRTL' are still present in VMS
- version 5.4-1, which is the most recent version as of this writing.
-
- The executables that are generated by `make-cc1.com' and
- `make-cccp.com' use the nonshared version of `VAXCRTL' (and thus use
- the `qsort' and `strncat' routines from `gcclib.olb').
-