Building the spmp3050 arm-elf-gcc toolchain on Fedora for idiots like us

This article is pretty much our own personal notes for when we inevitably corrupt our installation or write random sectors to a hard drive.   In some ways, we treat linux as a canvas that occasionally gets painted over – not a big deal, but it’s painful to try to remember all the little tricks that are needed in order to get from square 1 to where you’d like to be.

So assuming a fresh linux install (here: FC11), and more specifically a live-usb mini install, here’s our notes on getting to a freshly cross-compiled arm toolchain for the spmp3050 processor.   Almost everything you see here is done in a terminal window, so if you don’t know how to do that please shut down your PC and install Windows.   :)   No,   just kidding – in Fedora it’s under

Applications -> System Tools -> Terminal


Step 0 – make yourself passwordless sudo access for the lazy.  

Some may complain about security issues, but for a home pc it should not be an issue.   You are born with a finite number of keystrokes in each finger, so enlessly typing sudo passwords is just bringing you closer to death.   To avoid this untimely demise, you can add yourself as a sudoer with no password required.   Use su to get root access, then edit the sudoers file with visudo.   Remember, when using vi the i key is used for insert mode and esc gets out.   :wq to write and quit.   Go down to the section where it gives access to root:

root ALL=(ALL) ALL

and add a second line right below with your username and NOPASSWD:

root ALL=(ALL) ALL

myusername ALL=(ALL) NOPASSWD: ALL

Write, quit, and now you can sudo like mad


Step 1 – Get the required development tools and doodads.

sudo when needed or just root up for Step 1.

yum install gcc

yum install svn

yum install wget

yum install apt

yum install yum-utils

yum-builddep gcc

Which should set you up with pretty much everything you need


Step 3 – Build the required GMP and MPFR libraries
Download the bz2 archives of GMP from here and MPFR from here.   Save them in a temporary working directory – we will install them after build is done so their present location is not important.

Unpack each into it’s own directory with:

tar -jxf gmp-*.tar.bz2

tar -jxf mpfr-*.tar.bz2

This wil give you a gmp-x.x.x directory and a mpfr-y.y.y directory.   cd into the gmp directory and run the following commands.   Each one will do a lot of work, so just sit back and enjoy the fact that you’re not doing it manually.

./configure

make

make check

Of course, if anything fails you cannot continue, but let’s assume the configure and make are easy.   Pay attention to the make check command, as this will test whether your libraries are built properly or not.   Out of the box, we found gmp compiled with no issues.

Once gmp passes make check, then you can install it to the main lib directories by using

sudo make install

And yes – you must be sudo or root to install to those dirs.   Done with GMP?   Great!

cd back down and now cd into the MPFR directory.   In a perfect world, you’d use the same ./configure, make, make check and be done.   But in our case, make check failed 2 of 146 tests.   Good enough?   NO!   We eventually found a solution on this page which we will describe here in case that page ever disappears.   You will need to set some CFLAGS before the configure, which is done by appending an export onto your configure statement.   The modified statements are now:

export CFLAGS=”-fPIC” && ./configure

make  

make check

And if everything passed during the make check, install with

sudo make install



Step 4 – Get libspmp3050 source and Avoozl’s awesome toolchain script

Use SVN to fetch a copy of the libspmp3050 and put it in a directory of your choosing.   Assuming you’re in home and you’d like it in /libspmp the SVN command would be

 svn checkout http://libspmp3050.googlecode.com/svn/trunk libspmp

This will go and fetch you a copy of the code and write it to ./libspmp.


Step 5 – Start the toolchain build script

First, navigate to the toolchain directory.   Assuming you are still in the same directory as when you checked it out the command would be

cd libspmp/src/toolchain

And fire the build script

./builder.sh

This guy will chug away for a while (about 20 minutes on a beater aspire one), so you can go enjoy a cold beer (you’ll need it whether it succeds or fails) or just sit back and marvel at all the work you don’t have to do by hand.   At this point, if you’ve gotten no errors, you should have a working toolchain, congrats!   If you used the default builder.sh script then you’ll have a path called /install that contains the software in /bin.   From home, the quick test would be

./libspmp/src/toolchain/install/bin/arm-elf-ar

To get a gratifying screen full of tasty info to prove your hard work is done, master compiler.


This entry was posted in MP5. Bookmark the permalink.

Leave a reply