Ubuntu compilation guide

These are some notes on cross-compiling, that worked on WSL xenial Ubuntu.

Activate the cross compilation in dpkg

dpkg --add-architecture armhf
sed 's/deb http/deb \[arch=amd64,i386\] http/' -i /etc/apt/sources.list
echo >/etc/apt/sources.list <<EOF
deb [arch=armhf] http://ports.ubuntu.com/ $(lsb_release -cs) main universe restricted multiverse
deb [arch=armhf] http://ports.ubuntu.com/ $(lsb_release -cs)-updates main universe restricted multiverse
deb [arch=armhf] http://ports.ubuntu.com/ $(lsb_release -cs)-security main universe restricted multiverse
EOF
apt update

Install dependency libraries

apt install libssl-dev:armhf libasound2-dev:armhf

Replace standard rust with rustup and activate the target architecture

apt remove rustc
curl https://sh.rustup.rs -sSf | sh
rustup target add arm-unknown-linux-gnueabihf

Build

PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig PKG_CONFIG_ALLOW_CROSS=1 cargo build --target=arm-unknown-linux-gnueabihf --release