26b6232088
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2231 a1c6a512-1295-4272-9138-f99709370657
105 lines
3.1 KiB
Perl
105 lines
3.1 KiB
Perl
#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.
|
|
Note that the procedure is exactly the same if you are running cygwin on Windows.
|
|
|
|
<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.4.tar.gz (find it at your closest GNU FTP site)
|
|
<li>(optional) gdb-5.1.1.tar.gz (find it at your closest GNU FTP site)
|
|
</ul>
|
|
<p>
|
|
If you want to stay out of trouble, use the versions stated above. If you
|
|
want to live on the edge you can try building with the latest versions.
|
|
However, if you use binutils-2.13 or later you will not be able to build
|
|
Rockbox older that CVS 2002-09-08 if you don't add the .rodata.str1.4
|
|
section to the .rodata section in the linker script:
|
|
|
|
<pre>
|
|
.rodata :
|
|
{
|
|
*(.rodata)
|
|
<b> *(.rodata.str1.4)</b>
|
|
} > DRAM
|
|
</pre>
|
|
|
|
<h2>Unpack the archives</h2>
|
|
<p>
|
|
<pre>
|
|
/home/linus> tar zxf binutils-2.11.tar.gz
|
|
/home/linus> tar zxf gcc-3.0.4.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>Choose location</h2>
|
|
<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.4/configure --target=sh-elf --prefix=/home/linus/sh1 --enable-languages=c
|
|
/home/linus/build/gcc> make
|
|
/home/linus/build/gcc> 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/gdb> make
|
|
/home/linus/build/gdb> 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"
|