2002-03-27 09:25:09 +00:00
|
|
|
#define _PAGE_ Building the SH1 cross compiler
|
|
|
|
#include "head.t"
|
|
|
|
|
|
|
|
<p>
|
|
|
|
In this example I will assume that you are running Linux with the bash shell.
|
|
|
|
We will only build the C compiler along with the assembler, linker and stuff.
|
|
|
|
<h2>Download the source code</h2>
|
|
|
|
<p>
|
|
|
|
You will need the following archives:
|
|
|
|
<ul>
|
|
|
|
<li>binutils-2.11.tar.gz (find it at your closest GNU FTP site)
|
|
|
|
<li>gcc-3.0.3.tar.gz (find it at your closest GNU FTP site)
|
|
|
|
<li>newlib-1.10.0.tar.gz (go to <a href="http://sources.redhat.com/newlib/">the newlib home page</a> for information)
|
|
|
|
<li>(optional) gdb-5.1.1.tar.gz (find it at your closest GNU FTP site)
|
|
|
|
</ul>
|
|
|
|
<h2>Unpack the archives</h2>
|
|
|
|
<p>
|
|
|
|
<pre>
|
|
|
|
/home/linus> tar zxf binutils-2.11.tar.gz
|
|
|
|
/home/linus> tar zxf gcc-3.0.3.tar.gz
|
|
|
|
/home/linus> tar zxf newlib-1.10.0.tar.gz
|
|
|
|
/home/linus> tar zxf gdb-5.1.1.tar.gz
|
|
|
|
</pre>
|
|
|
|
<h2>Create the directory tree</h2>
|
|
|
|
<p>
|
|
|
|
<pre>
|
|
|
|
/home/linus> mkdir build
|
|
|
|
/home/linus> cd build
|
|
|
|
/home/linus/build> mkdir binutils
|
|
|
|
/home/linus/build> mkdir gcc
|
|
|
|
/home/linus/build> mkdir gdb
|
|
|
|
</pre>
|
|
|
|
<h2>Create the newlib and libgloss links</h2>
|
|
|
|
<p>
|
|
|
|
The GCC configuration script finds the newlib and libgloss files if they are in the GCC tree. Let's create two soft links.
|
|
|
|
<pre>
|
|
|
|
/home/linus> cd gcc-3.0.3
|
|
|
|
/home/linus/gcc-3.0.3> ln -s ../newlib-1.10.0/newlib .
|
|
|
|
/home/linus/gcc-3.0.3> ln -s ../newlib-1.10.0/libgloss .
|
|
|
|
</pre>
|
2002-03-28 13:54:38 +00:00
|
|
|
<h2>Choose location</h2>
|
2002-03-27 09:25:09 +00:00
|
|
|
<p>
|
|
|
|
Now is the time to decide where you want the tools to be installed. This is
|
|
|
|
the directory where all binaries, libraries, man pages and stuff end up when
|
|
|
|
you do "make install".
|
|
|
|
<p>
|
|
|
|
In this example I have chosen "/home/linus/sh1" as my installation directory, or <i>prefix</i> as it is called. Feel free to use any prefix, like
|
|
|
|
/usr/local/sh1 for example.
|
|
|
|
<h2>Build binutils</h2>
|
|
|
|
<p>
|
|
|
|
We will start with building the binutils (the assembler, linker and stuff).
|
|
|
|
This is pretty straightforward. We will be installing the whole tool chain
|
|
|
|
in the /home/linus/sh1 directory.
|
|
|
|
<pre>
|
|
|
|
/home/linus> cd build/binutils
|
|
|
|
/home/linus/build/binutils> ../../binutils-2.11/configure --target=sh-elf --prefix=/home/linus/sh1
|
|
|
|
/home/linus/build/binutils> make
|
|
|
|
/home/linus/build/binutils> make install
|
|
|
|
</pre>
|
|
|
|
<h2>Build GCC</h2>
|
|
|
|
<p>
|
|
|
|
Now you are ready to build GCC. To do this, you must have the newly built
|
|
|
|
binutils in the PATH.
|
|
|
|
<pre>
|
|
|
|
/home/linus> export PATH=/home/linus/sh1/bin:$PATH
|
|
|
|
/home/linus> cd build/gcc
|
|
|
|
/home/linus/gcc> ../../gcc-3.0.3/configure --target=sh-elf --prefix=/home/linus/sh1 --with-newlib --enable-languages=c
|
|
|
|
/home/linus/build/binutils> make
|
|
|
|
/home/linus/build/binutils> make install
|
|
|
|
</pre>
|
|
|
|
<h2>Build GDB</h2>
|
|
|
|
<p>
|
|
|
|
If you are planning to debug your code with GDB, you have to build it as well.
|
|
|
|
<pre>
|
|
|
|
/home/linus> export PATH=/home/linus/sh1/bin:$PATH
|
|
|
|
/home/linus> cd build/gdb
|
|
|
|
/home/linus/gdb> ../../gdb-5.1.1/configure --target=sh-elf --prefix=/home/linus/sh1
|
|
|
|
/home/linus/build/binutils> make
|
|
|
|
/home/linus/build/binutils> make install
|
|
|
|
</pre>
|
|
|
|
<h2>Done</h2>
|
|
|
|
<p>
|
|
|
|
If someone up there likes you, you now have a working tool chain for SH1.
|
|
|
|
To compile a file with gcc:
|
|
|
|
<pre>
|
|
|
|
/home/linus> sh-elf-gcc -c main.o main.c
|
|
|
|
</pre>
|
|
|
|
Good luck!
|
|
|
|
<p>
|
|
|
|
<i>Linus</i>
|
|
|
|
|
|
|
|
#include "foot.t"
|