Wednesday, 10 July 2013

Compiling BOOST with custom GCC location

Compiling BOOST on our shared cluster running CentOS 5 is always a pain in the neck. The default GCC version is 4.1, so compiling programs with just the default GCC is not always the best choice.
I was trying to compile a program that depends on BOOST, and figuring out how to specify non-default compilers to BOOST took me a while to figure out.

Download your version of BOOST and untar:

wget http://sourceforge.net/projects/boost/files/boost/1.52.0/boost_1_52_0.tar.bz2
tar xjf boost_1_52_0.tar.bz2


Find the user-config.jam file (this is where the magic happens) and edit:

cd boost_1_52_0
vim tools/build/v2/user-config.jam


Add the line corresponding to your C++ compiler (In my case G++ 4.4). The user-config.jam file loosk something like:

# ------------------
# GCC configuration.
# ------------------

# Configure gcc (default version).
# using gcc ;
# Configure specific gcc version, giving alternative name to use.
# using gcc : 3.2 : g++-3.2 ;
using gcc : 4.4 : /usr/bin/g++44 ;

The syntax is:

using <toolset name> : <version> : <executable> ;


See more info here: http://www.boost.org/boost-build2/doc/html/bbv2/reference/tools.html

Now bootstrap BOOST as you normally would:

./bootstrap.sh --prefix=/opt/boost_1_52_0_gcc44

And compile! Use the -d2 option to up the debug level of b2, so you can see the actual compile command (and check that b2 is using the correct compiler):

./b2 -d 2
./b2 install

Tell your mother of that awesome blog post you just read.