Linux cross-compilation¶
RF24 library supports cross-compilation. Advantages of cross-compilation:
development tools don’t have to be installed on target machine
resources of target machine don’t have to be sufficient for compilation
compilation time can be reduced for large projects
Following prerequisites need to be assured:
ssh passwordless access to target machine Here is a hint
sudo of a remote user without password Here is a hint
cross-compilation toolchain for your target machine; for RPi
git clone https://github.com/raspberrypi/tools rpi_tools
and cross-compilation tools must be in PATH, for example
export PATH=$PATH:/your/dir/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
Cross compilation steps¶
clone RF24 to a machine for cross-compilation
git clone https://github.com/nRF24/RF24 cd RF24
configure for cross compilation
./configure --remote=pi@target_linux_host
eventually
./configure --remote=pi@target_linux_host --driver=<driver>
build
make
(optional) install library to cross-compilation machine into cross-exvironment - important for compilation of examples
sudo make install
upload library to target machine
make upload
(optional) compile examples
cd examples_linux make
(optional) upload examples to target machine
make upload
Cross comilation steps for python wrapper¶
Prerequisites¶
Python setuptools must be installed on both target and cross-compilation machines
sudo pip install setuptools
or
sudo apt-get install python-setuptools
Installation steps¶
Assure having libboost-python-dev library in your cross-compilation environment. Alternatively, you can install it into your target machine and copy /usr and /lib directories to the cross-compilation machine. For example
mkdir -p rpi_root && rsync -a pi@target_linux_host:/usr :/lib rpi_root export CFLAGS="--sysroot=/your/dir/rpi_root -I/your/dir/rpi_root/usr/include/python2.7/"
Build the python wrapper
cd pyRF24 ./setup.py build --compiler=crossunix
Make the egg package
./setup.py bdist_egg --plat-name=cross
dist/RF24-<version>-cross.egg
should be created.Upload it to the target machine and install there:
scp dist/RF24-*-cross.egg pi@target_linux_host: ssh pi@target_linux_host 'sudo easy_install RF24-*-cross.egg'
Warning
These instructions are no longer recommended because they involve disabling security measures for the target system. Please try the instructions using CMake.