Cross-compiling for the Raspberry Pi
Compiling DUNE directly on the Raspberry Pi is possible, but soon becomes tedious, as it takes a while. Luckily there is an alternative, cross-compiling. The Raspberry Pi has an available toolchain at GitHub, but it uses a too old version of the gcc compiler, and therefore it will not compile DUNE. The solution to this, is to use the cross-compiler environment that is made for LSTS Glued.
Setting up Glued cross-compiler for DUNE
- Install required packages
sudo apt-get install docker.io
- Clone Glued from github
git clone https://github.com/LSTS/glued.git
- Run docker shell for the build system
cd glued/docker && sudo make && sudo make shell
- Create build configuration for mariner-01
./mkconfig.bash mariner-01
- Compile system image for mariner-01
./mksystem.bash lctr-rpi/mariner-01.bash
- Create cross-compilation toolchain
./pktoolchain.bash lctr-rpi/mariner-01.bash
- Leave docker enviroment
exit
Cross compiling with the Glued toolchain
- Make directory for pibuild
mkdir dunebuildrpi && cd dunebuildrpi
- Create makefiles with cmake, replace
[wherisit]
with path to the glued folder just created and[dune_source]
with dune folder
cmake -DCROSS=[wherisit]/glued/lctr-rpi/toolchain/bin/armv7-lsts-linux-gnueabihf-gcc [dune_source]
- Compile with make, add the -j4 for using more threads, add package to make a tar.gz2 archive that can easily be transferred to the Raspberry Pi
make -j4