Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Building Boost on Linux - library names

I am trying to build an application which depends on Boost. So I downloaded Boost 1_41_0 to my Linux box and followed the instructions found on the Boost site for Unix variants, http://www.boost.org/doc/libs/1_41_0/more/getting_started/unix-variants.html.

They basically suggest that I run ./bjam install, which I did. The build completed successfully. However, the library names don't seem to match the Boost naming convention described both in the documentation above, and what is specified in the makefile of the application I am trying to build.

I noticed that there are a bunch of options that I can specify to bjam and I tried to play with those, but no matter what happens I can't seem to get it quite right. My understanding is that the libraries should go into the $BOOST_ROOT/lib directory. This is where the libraries show up, but named:

libboost_thread.a
libboost_thread.so
libboost_thread.so.1.41.0

I'd expect them to be named libboost_thread-gcc41-mt-d-1_41_0 or something similar.

I did try ./bjam --build-type=complete --layout=tagged and I see:

libboost_thread.a
libboost_thread-mt.a
libboost_thread-mt-d.a
libboost_thread-mt-d.so
libboost_thread-mt-d.so.1.41.0
libboost_thread-mt-s.a
libboost_thread-mt-sd.a
libboost_thread-mt.so
libboost_thread-mt.so.1.41.0
libboost_thread.so
libboost_thread.so.1.41.0

So, I am not sure if I should just make stage my -L directory? Is there any documentation which describe this in more detail?

like image 628
Andy Faibishenko Avatar asked Nov 20 '09 07:11

Andy Faibishenko


1 Answers

The names was changed in 1.40.0 - see in release notes:

Build System

The default naming of libraries in Unix-like environment now matches system conventions, and does not include various decorations.

They probably forgot to update this part in the build documentation.

like image 98
Xeor Avatar answered Oct 07 '22 04:10

Xeor