Difference between revisions of "AVR toolchain compilation"

From DiLab
Jump to: navigation, search
Line 20: Line 20:
# GMP:
# GMP:
echo "Fetching GMP, required by GCC..."
echo "Fetching GMP, required by GCC..."
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
wget -c ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
bunzip2 -c gmp-4.3.2.tar.bz2 | tar xf -
bunzip2 -c gmp-4.3.2.tar.bz2 | tar xf -
mkdir gmp-4.3.2/obj
mkdir gmp-4.3.2/obj
Line 44: Line 44:
# MPC:
# MPC:
echo "Fetching MPC, required by GCC..."
echo "Fetching MPC, required by GCC..."
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
wget -c ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
tar -xzf mpc-0.8.1.tar.gz
tar -xzf mpc-0.8.1.tar.gz
mkdir mpc-0.8.1/obj
mkdir mpc-0.8.1/obj
Line 56: Line 56:
# BINUTILS:
# BINUTILS:
echo "Fetching binutils..."
echo "Fetching binutils..."
wget http://ftp.gnu.org/gnu/binutils/binutils-2.20.tar.gz
wget -c http://ftp.gnu.org/gnu/binutils/binutils-2.20.tar.gz
tar -xzf binutils-2.20.tar.gz
tar -xzf binutils-2.20.tar.gz
cd binutils-2.20
cd binutils-2.20
Line 71: Line 71:
# GCC:
# GCC:
echo "Fetching GCC…"
echo "Fetching GCC…"
wget http://ftp.gnu.org/gnu/gcc/gcc-4.5.0/gcc-core-4.5.0.tar.gz
wget -c http://ftp.gnu.org/gnu/gcc/gcc-4.5.0/gcc-core-4.5.0.tar.gz
tar -xzf gcc-core-4.5.0.tar.gz
tar -xzf gcc-core-4.5.0.tar.gz
cd gcc-4.5.0
cd gcc-4.5.0

Revision as of 02:54, 20 April 2011

This document is an adapted version of AVR libc tutorial.

Create a new directory, where the toolchain source files will be stored temporarily.

Download GCC and GAS patches, save them in newly created directory.

Run the following script! You will be asked for a password, as sudo command is used. User account with administrator (sudo) rights is required. wget tool is required to fetch source files from GNU sites. You can compile wget from sources on both: Linux and MacOS platforms.

#!/bin/bash

# will be installed under /usr/local. Change here, if other destination is needed
export PREFIX=/usr/local

PATH="$PREFIX/bin:$PATH"

# Patches
tar -xvzf avr-new-device-patch.tar.gz

# GMP: 
echo "Fetching GMP, required by GCC..."
wget -c ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
bunzip2 -c gmp-4.3.2.tar.bz2 | tar xf -
mkdir gmp-4.3.2/obj
cd gmp-4.3.2/obj
echo "Building GMP..."
../configure --prefix=$PREFIX
make
sudo make install
cd ../..

# MPFR:
echo "Fetching MPFR, required by GCC..."
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
bunzip2 -c mpfr-2.4.2.tar.bz2 | tar xf -
mkdir mpfr-2.4.2/obj
cd mpfr-2.4.2/obj
echo "Building MPFR..."
../configure --prefix=$PREFIX
make
sudo make install
cd ../..

# MPC:
echo "Fetching MPC, required by GCC..."
wget -c ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
tar -xzf mpc-0.8.1.tar.gz
mkdir mpc-0.8.1/obj
cd mpc-0.8.1/obj
echo "Building MPC..."
../configure --prefix=$PREFIX
make
sudo make install
cd ../..
 
# BINUTILS:
echo "Fetching binutils..."
wget -c http://ftp.gnu.org/gnu/binutils/binutils-2.20.tar.gz
tar -xzf binutils-2.20.tar.gz
cd binutils-2.20
cp ../gas-patch-newdevices.patch ./
echo "Building binutils..."
patch -p0 < gas-patch-newdevices.patch
mkdir obj-avr
cd obj-avr
../configure --prefix=$PREFIX --target=avr --disable-nls --disable-werror
make
sudo make install
cd ../..

# GCC:
echo "Fetching GCC…"
wget -c http://ftp.gnu.org/gnu/gcc/gcc-4.5.0/gcc-core-4.5.0.tar.gz
tar -xzf gcc-core-4.5.0.tar.gz
cd gcc-4.5.0
cp ../gcc-new-device-support.patch ./
echo "Building GCC..."
patch -p0 < gcc-new-device-support.patch
mkdir obj-avr
cd obj-avr
../configure --prefix=$PREFIX --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --with-dwarf2