Kompilacja GNUARM pod Ubuntu

Gnuarm to zestaw narzędzi do tworzenia oprogramowania dla procesorów ARM. Jest to projekt opensource'owy i najnowsze wersję są niedostępne w postaci binariów dla linuxa. Na szczęście kompilacja Gnuarm nie jest zbyt skomplikowana.
Na początku musimy się zaopatrzyć w aktualną wersję środowiska. Ja użyłem wersji 4.3 i cały pakiet zainstalowałem w katalogu /opt/gnuarm. Aby "zainstalować" pakiet w innym folderze należy odpowiednio zmodyfikować podane niżej komendy.

  1. Tworzenie katalogu i kopiowanie źródeł

  2. cd /opt
    sudo mkdir gnuarm
    cd /home/slawek/gnuarm
    sudo cp * /opt/gnuarm

  3. Rozpakowywanie źródeł

  4. sudo tar xvf binutils-2.19.tar.bz2
    sudo tar xvf gcc-4.3.2.tar.bz2
    sudo tar xvf newlib-1.16.0.tar.gz
    sudo tar xvf insight-6.8.tar.bz2

  5. Instalacja (ewentualnie) dodatkowych pakietów/bibliotek
  6. Kompilacja niektórych źródeł gnuarm-a wymaga "specyficznych" pakietów w systemie. Przede wszystkim należy zainstalować Texinfo, GMP, MPFR i tcl/tk. Możemy to zrobić np. tak:


    sudo apt-get install libgmp3-dev
    sudo apt-get install libmpfr-dev
    sudo apt-get install tcl
    sudo apt-get install tk

    Potrzebny może być też bison.

  7. Konfiguracja i kompilacja

  8. cd /opt/gnuarm
    sudo mkdir binutils-build
    cd binutils-build
    sudo ../binutils-2.19/configure --target=arm-elf --prefix=/opt/gnuarm --enable-interwork --enable-multilib --with-float=soft
    sudo make all install

    W tym miejscu dodajemy do PATH katalog: /opt/gnuarm/bin (np. przez edycję bash.bashrc).


    cd ..
    sudo mkdir gcc-build
    cd gcc-build
    sudo ../gcc-4.3.2/configure --target=arm-elf --prefix=/opt/gnuarm --enable-interwork --enable-multilib --with-float=soft --enable-languages="c,c++" --with-newlib --with-headers=/opt/gnuarm/newlib-1.16.0/newlib/libc/include
    sudo make all-gcc install-gcc
    cd ..
    sudo mkdir newlib-build
    cd newlib-build
    sudo ../newlib-1.16.0/configure --target=arm-elf --prefix=/opt/gnuarm --enable-interwork --enable-multilib --with-float=soft
    sudo make all install
    cd ..
    cd gcc-build
    sudo make all install
    cd ..
    sudo mkdir gdb-build
    cd gdb-build
    sudo ../insight-6.8/configure --target=arm-elf --prefix=/opt/gnuarm --enable-interwork --enable-multilib --with-float=soft
    sudo make all install

    Starsze wersję gnuarm-a posiadały błąd w pliku Makefile objawiającym się wyświetleniem komunikatu o braku texinfo/makeinfo. Aby to poprawić należy zedytować Makefile i zamieńić linię typu:
    MAKEINFO = /opt/gnuarm/newlib-1.15.0/missing makeinfo
    na
    MAKEINFO = makeinfo
    Trochę "brutalny" sposób ale działa.

I to właściwie wszystko. Od tego momentu możemy już kompilować i budować programy na procesory ARM.