Version 6 (modified by sam, 5 years ago) (diff)

fix a typo in the Raspi doc

Set up a cross-build machine for the Raspberry Pi

Prerequisites

This document focuses on Debian hosts. Debian derivatives such as Ubuntu should work with minor changes.

Downloads

Alternatively, these can be retrieved using Git. Unpack them in two directories called firmware and tools.

Environment variables

  • Set RASPI_SDK_ROOT to the directory containing firmware and tools.
  • Add the following directory to PATH:
$RASPI_SDK_ROOT/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin

Building autoconf projects

For simple autoconf projects (using ./configure ; make) the following command can now be used:

RASPI_INCLUDES="$RASPI_SDK_ROOT/firmware/opt/vc/include"
RASPI_LIBS="$RASPI_SDK_ROOT/firmware/opt/vc/lib"

./configure --host=arm-bcm2708hardfp-linux-gnueabi \
    CPPFLAGS="-I$RASPI_INCLUDES -I$RASPI_INCLUDES/interface/vcos/pthreads" \
    LDFLAGS="-L$RASPI_LIBS"

make

Using Debian / Raspbian libraries

Choose a directory to store Raspbian packages, for instance $RASPI_SDK_ROOT/chroot. You can then use debootstrap to install packages to it, but if you have a multiarch-enabled system you can use this poor man's shell script:

raspi-install () {
    for pkg in "$@"
    do
        apt-get download "$pkg":armhf \
         && dpkg-deb -x "$pkg"_*.deb $RASPI_SDK_ROOT/chroot \
         && rm -f "$pkg"_*_armhf.deb
    done
}

Then for eg. SDL:

raspi-install libsdl1.2debian libsdl1.2-dev

Then add the following to CPPFLAGS in the configure line:

-I$RASPI_SDK_ROOT/chroot/usr/include

And the following to LDFLAGS:

-L$RASPI_SDK_ROOT/chroot/lib/arm-linux-gnueabihf
-Wl,-rpath-link -Wl,$RASPI_SDK_ROOT/chroot/lib/arm-linux-gnueabihf
-L$RASPI_SDK_ROOT/chroot/usr/lib/arm-linux-gnueabihf
-Wl,-rpath-link -Wl,$RASPI_SDK_ROOT/chroot/usr/lib/arm-linux-gnueabihf
-Wl,--unresolved-symbols=ignore-in-shared-libs

Bitten configuration

For Lol Engine autobuilders, add the following section to the bitten machine file:

[raspi]
version = 0