[comp.sys.sun] Using GNU GCC as a cross compiler summary

kpoppleton@cs.utah.edu (10/08/90)

Here is the responce I recieved an how to compile GCC as a cross compiler
from SPARC to create 680x0 code.  I recieved several requests for this
information.   Thanks for the information!  It is exactly what we need.

Ken Poppleton
Evans & Sutherland Computer Corp.
Salt Lake City, Utah

***

X-From: wjj@SUN-VALLEY.STANFORD.EDU (Warren Jasper)

[Reposted from gnu.gcc.
Comments on this service to emv@math.lsa.umich.edu (Edward Vielmetti).]

I have received a few requests for making gcc into a cross compiler from
the Sun4 (Host) to a Motorola 680X0 (Target) single-board computer.  We
use gcc to generate code that we compile on a SPARCStation to run on our
real time MVME 147 boards (68030 SBC).  Here is a step by step procedure
for doing this.

Note: I am trying to finish up my PhD dissertation, and I don't have a lot
of time to help people with this.  If you can not get this to work, please
do NOT ask me for help.  Sorry, but I have to finish up.

1) You will need to get the latest copies of gcc (1.37.1), gas(1.35) and gld.
2) Make sure you have a working gcc compiler. Ours is in /local/bin.
3) Copy the scripts Makefile.cross and cross-config.gcc into
   the main gcc directory. e.g. /usr/local/src/gcc/gcc.1.37.1.
4) type "cross-config.gcc sun4-os4 sun3-os4". This will set up the
   correct symbolic links for you.
5) Edit Makefile.cross if you need to change directory paths.
6) Type make -f Makefile.cross  
   Note: If you get an error making gnulib{2}, don't worry about it.
   There is no good way that I know of on how to make a cross compiled
   version of this.  Best to copy a version made on a Sun3 into 
   DESTDIR.  Unless you use long long, you don't need gnulib2 anyway.
   This should make the cross-compiler.

Now for the cross assembler and loader.

7) Copy Makefile.gas into the gas directory and type
   make -f Makefile.gas
8) Copy Makefile.gld into the gld directory. Type
   make -f Makefile.gld
   Warning: There were some problems with earlier versions of gld.  I think
   that they were fixed. If not, get the latest ld from the g++ distribution.
   I think our bug fixes were incorporated, but I'm not sure.  If gld does not
   cross load, send me mail and I'll see what I can do.
******Vicom Systems note: the linker used is a hacked copy of gld which is
******located in the binutils directory. GAW 6/11/90

9) Copy your version of gcc into /usr/local/lib/sun4.  In this directory
   should be:

   gcc-as        gcc-sun3-as
   gcc           gcc-sun3-gcc
   gcc-cc1       gcc-sun3-cc1
   gcc-cpp       gcc-sun3-cpp
   gcc-gnublib   gcc-sun3-gnulib <-- you have to make this on a Sun3
                 gcc-sun3-ld


copy gcc and gld (scripts at the end of this file) into /usr/local/bin.

10) gld does not do dynamic loading.  You don't want this anyway for
    your target  processor.  Also, ld does not know how to get to the 
    C libraries such as libC.a.  Don't worry about this either, since
    you will be using the ld -r option anyway.

    Also, don't forget to include the file math-68881.h if your
    SBC has the math chip.  This file goes into ./gcc-include.

11) To compile normally, just type

   		gcc foo.c
    To cross compile:
		gcc -sun3 -c cross_foo.c 
                gld -sun3 -r -o cross_foo cross_foo.o

Good Luck !!

Warren Jasper
Stanford University

[[Ed's Notes: Scripts placed in archives. -bdg]]

FTP:	Hostname : titan.rice.edu (128.42.1.30)
	Directory: sun-source
	Filename : cross.script
	Filesize : 9525 bytes

Archive Server Address: archive-server@rice.edu
Archive Server Command: send sun-source cross.script