Install the ARM cross compiler toolchain on your Linux Ubuntu PC

This article illustrates how to install on a Ubuntu Linux PC the complete toolchain to cross compile the Linux Kernel, the Linux device drivers, the Linux applications and the boot loader like as AT91Bootstrap and its derivates like AcmeBoot and AriaBoot.

This procedure has been tested on Linux Ubuntu 15.04.

Install the Cross Compilers, utilities, etc.

Install the GCC, G++ cross compilers and support programs by typing:

$ sudo apt-get install libc6-armel-cross libc6-dev-armel-cross
$ sudo apt-get install binutils-arm-linux-gnueabi
$ sudo apt-get install libncurses5-dev

If you are using an Arietta, Aria or FOX board:

$ sudo apt-get install gcc-arm-linux-gnueabi
$ sudo apt-get install g++-arm-linux-gnueabi

If you are using an Acqua board:

$ sudo apt-get install gcc-arm-linux-gnueabihf
$ sudo apt-get install g++-arm-linux-gnueabihf

Now you are ready to cross-compile on your PC all the source available for the Acme Boards based on Atmel MPUs.

Try the cross C compiler

Let's try to cross compile a Hello World example in C and running it on an Acme board.

This is the example:

#include "stdio.h"
 
int main(void) {
  printf("Hello world !\n");
  return 0;
}

Compile it typing:

~$ arm-linux-gnueabi-gcc hello.c -o hello

As you can see we are using the ARM version of gcc just installed on your PC. It will generate an executable file for your Linux board.

Copy the executable file on the board via ssh:

~$ scp hello root@[your_board_ip]:/root

Then open a command session on your board and run the example:

~# ./hello
Hello world !

Try the cross C++ compiler

Let's try to cross compile a Hello World example in C++ and running it on an Acme board.

This is the example:

#include "iostream"
 
using namespace std;
 
int main(int argc, char *argv[]) {
    cout << "Hello world !" << endl;
    return 0;
}

Compile it typing:

~$ arm-linux-gnueabi-g++ hello.cc -o hello

As you can see we are using the ARM version of gcc just installed on your PC. It will generate an executable file for your Linux board.

Copy the executable file on the board via ssh:

~$ scp hello root@[your_board_ip]:/root

Then open a command session on your board and run the example:

~# ./hello
Hello world !