Boost

Boost

Boost is a popular collection of C++ libraries.

The robo.fish software projects standardize on Boost version 1.69.0, which is assumed to be located at /usr/local/boost_1_69_0 on Linux systems.

Build From Source

Configuration

The version of Boost in Ubuntu 16.04 Xenial and Ubuntu 18.04 Bionic is older than 1.69.0. Therefore you need to build Boost from source. Make sure to supply the correct version of Python to bootstrap.sh. The software projects on this website use Python 3.6 because version 3.6 is the default for the Python environment manager Miniconda3 and the default version of Python 3 in Ubuntu 18.04.

./bootstrap.sh --with-python-version=3.6m


Also, on your main development system make sure that Boost is installed to the directory /usr/local/boost_1_69_0 instead of the default directory /usr/local. This allows you to install other versions of Boost without conflict.

./bootstrap.sh --with-python-version=3.6m --prefix=/usr/local/boost_1_69_0

On Raspberry Pi, Boost is assumed to be installed in /usr/local.

On an Ubuntu 16.04 based system, where you installed Python 3.6 via miniconda, edit the file project-config.jam to replace the lines

# Python configuration
import python ;
if ! [ python.configured ]
{
    using python : 3.6m : <path to miniconda3> ;
}

with

# Python configuration
using python : 3.6m : <path to miniconda3>/bin/python3 : <path to miniconda3>/include/python3.6m : <path to miniconda3>/lib ;

where <path to miniconda3> is the absolute file path to the miniconda root directory. Otherwise the configuration file will pick up the system's default Python configuration, which is Python 2.7.

On Ubuntu 18.04, where Python 3.6 is a main package, replace the same if block with

# Python configuration
using python : 3.6m : /usr/bin/python3.6m : /usr/include/python3.6m : usr/lib/x86_64-linux-gnu ;


Building

Use this command to install while building and to shorten the build time by running up to 4 build processes in parallel.

sudo ./b2 -j4 install


Raspberry Pi

On Raspberry Pi, -j4 can cause problems. Try with -j2 or just don't use the multi-process building option. Since build times will be long, you probably want to run the build process in the background and so that it continues running after you logged out from the terminal session:

nohup sudo ./b2 install > /dev/null 2>&1 &

The assumption is that there is a GUI-less Raspbian system on the Raspberry Pi. When you log in again on your RPi, you can use top to check if the build is still running. The b2 command will be using most of the CPU while running.