It is important to distinguish between the machine where the development is done (the host) and the machine where the program will be running (the target). These two can be the same but very often you write the program on one machine and execute it on another. And very often the architecture of the target machine is not identical to the one of the host machine, which means that programs cannot be simply copied from the host to the target. If the architectures of target and host don't match, cross compilation is necessary.
On a Linux system the following command displays the hardware plattform of your machine:
$ uname -m
On a PC the result is usually:
On the target machine it's probably different. Some examples are:
A compiler that runs on one plattform and generates code for another plattform is called a cross compiler . A cross compiler can be obtained from the official package repositories of your Linux distribution or from third party sources.
EEROS uses CMake to build the code. By default CMake does not use a cross compiler. To tell CMake to use a cross compiler you have to supply the CMAKE_TOOLCHAIN_FILE option when generating the build files:
$ cmake -DCMAKE_TOOLCHAIN_FILE=path/to/toolchain-file.cmake path/to/source/directory
An example of a toolchain file can be found on the github page of the EEDURO project: https://github.com/eeduro/eeduro-scripts/blob/master/delta/arm-linux-gnueabihf.cmake