Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why autoconf isn't detecting boost properly?

I am using autoconf to detect boost libraries, with the support of the autoconf-archive macros and they work fine with system-wide boost libraries, but fail if I manually compile boost in my home directory:

sb@stephane:~/devel/spectra2$ ./configure --with-boost=/home/sb/local/
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for style of include used by make... GNU
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for library containing strerror... none required
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for boostlib >= 1.31.0... yes
checking whether the Boost::Program_Options library is available... yes
checking for exit in -lboost_program_options... yes
checking whether the Boost::Filesystem library is available... yes
checking for exit in -lboost_filesystem... no
checking for exit in -lboost_filesystem... (cached) no
checking for exit in -lboost_filesystem... (cached) no
configure: error: Could not link against boost_filesystem !

As you can see, it detects some libraries fine, but it fails with boost-filesystem. These are the contents of ~/local/lib:

sb@stephane:~$ ls -1 /home/sb/local/lib/
libboost_filesystem.a
libboost_filesystem.so
libboost_filesystem.so.1.42.0
libboost_program_options.a
libboost_program_options.so
libboost_program_options.so.1.42.0
libboost_system.a
libboost_system.so
libboost_system.so.1.42.0
libboost_thread.a
libboost_thread.so
libboost_thread.so.1.42.0

So the library is there. I tried with both boost-1.39 and boost-1.42 with no different result, any idea why is this happening? Did I forget about something?

like image 307
Kjir Avatar asked Mar 05 '10 10:03

Kjir


2 Answers

Since boost-1.39 libboost_filesystem depends on libboost_system. Before 1.39 you could only link to boost_filesystem, in later versions you have to link to both of them.

Maybe it has something to do with your error.

like image 67
Dmitry Yudakov Avatar answered Oct 05 '22 23:10

Dmitry Yudakov


I've found boost.m4 to be much more robust than the Boost macros available from the Autoconf Macro Archive. You may have good luck simply migrating to boost.m4.

like image 41
Rhys Ulerich Avatar answered Oct 06 '22 00:10

Rhys Ulerich