Boost logo

Boost-Build :

From: Caleb Epstein (caleb.epstein_at_[hidden])
Date: 2006-08-30 16:54:50

I tried using BBv2 to install Boost for the first time today. I've
been using it to run regression tests for a while, but I ran into a
v1/v2 difference that concerns the --layout=system option.

With BBv1, installing with --layout=system would install shared
libraries like so:

lrwxrwxrwx 1 cepstein wt 31 Aug 3 11:00 ->
-rwxr-xr-x 1 cepstein wt 29K Aug 3 11:00

The library name (up to the .so) has no version number information,
but there is a version number suffix. This is standard practice for
versioned shared objects, and the behavior I have come to expect. I
can now install several versions of Boost libraries in the same
directory with no ill effects. Applications link using e.g.
"-lboost_iostreams-mt", but the actual runtime dependency (e.g. when
you run ldd on the executable) is The
linker picks the versioned object that the symlink was pointing to
when the executable was linked.

The upshot of this is that I can always use the un-versioned name in
my build system and my old binaries built with Boost 1.33.0 will
continue to work as long as I keep the .so.1.33.0 files around on my
system. This is even if I have later installed 1.34.0, 1.35.0 and so

When I install using BBv2 and --layout=system, I get only this:

-rwxrwxr-x 1 cepstein wt 15K Aug 30 16:28

Note that there is no versioned .so file and no symlink. So if I link
an application to this library, the runtime dependency will be for As a result, I no longer have the
ability to install a newer version of this library without breaking
old code.

Can the BBv2 --layout=system be made to work more like the old way? I
dislike encoding the version number in the explicit part of the
filename as this requires changes to my build system whenever I
upgrade versions of Boost, and the version redundancy in filenames
like "" makes no practical
sense on platforms that support versioned shared objects.

Caleb Epstein

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at