Search code examples
pythonboostvlfeat

installing the python wrappers for vlfeat


I have been trying to install the python wrappers for VlFeat for the last 5 hours and it always ends with:

cannot find -lboost_python-mt-py27

As suggested in other threads, I changed the setup file to ask it to use the python 2.7 boost libraries. The python version on my system is 2.7.6. This is the reason I get -lboost_python-mt-py27 rather than -lboost_python-mt-py26

Additionally, I reinstalled boost-python-dev. However, this problem does not go away. I have completely run out of ideas and do not know what else to do.

[EDIT] When I do: ldconfig -p |grep libboost

I get:

libboost_wserialization.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_wserialization.so.1.54.0
libboost_wave.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_wave.so.1.54.0
libboost_unit_test_framework.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.54.0
libboost_timer.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_timer.so.1.54.0
libboost_thread.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.54.0
libboost_system.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_system.so.1.54.0
libboost_signals.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_signals.so.1.54.0
libboost_serialization.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.54.0
libboost_regex.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.54.0
libboost_random.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_random.so.1.54.0
libboost_python-py34.so.1.55.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_python-py34.so.1.55.0
libboost_python-py34.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_python-py34.so.1.54.0
libboost_python-py34.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_python-py34.so
libboost_python-py33.so.1.55.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_python-py33.so.1.55.0
libboost_python-py27.so.1.55.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_python-py27.so.1.55.0
libboost_python-py27.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_python-py27.so.1.54.0
libboost_python-py27.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_python-py27.so
libboost_program_options.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.54.0
libboost_prg_exec_monitor.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_prg_exec_monitor.so.1.54.0
libboost_mpi.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_mpi.so.1.54.0
libboost_math_tr1l.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_math_tr1l.so.1.54.0
libboost_math_tr1f.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_math_tr1f.so.1.54.0
libboost_math_tr1.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_math_tr1.so.1.54.0
libboost_math_c99l.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_math_c99l.so.1.54.0
libboost_math_c99f.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_math_c99f.so.1.54.0
libboost_math_c99.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_math_c99.so.1.54.0
libboost_log_setup.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_log_setup.so.1.54.0
libboost_log.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_log.so.1.54.0
libboost_locale.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_locale.so.1.54.0
libboost_iostreams.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_iostreams.so.1.54.0
libboost_iostreams.so.1.49.0 (libc6,x86-64) => /usr/lib/libboost_iostreams.so.1.49.0
libboost_graph_parallel.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_graph_parallel.so.1.54.0
libboost_graph.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_graph.so.1.54.0
libboost_filesystem.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.54.0
libboost_date_time.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.54.0
libboost_date_time.so.1.53.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.53.0
libboost_date_time.so.1.49.0 (libc6,x86-64) => /usr/lib/libboost_date_time.so.1.49.0
libboost_context.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_context.so.1.54.0
libboost_chrono.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_chrono.so.1.54.0
libboost_atomic.so.1.54.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libboost_atomic.so.1.54.0

So, the 'mt' version that it looks for does not seem to be there. I cannot see any install candidates for this on my linux mint system.

[EDIT 2]: I made it work by linking to the standard boost library but would like to know how to get it working with the multithreaded version!


Solution

  • On Linux, from Boost v1.40.0:

    Build System

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

    Decorations are tags like:

    -mt: the library was built with multithreading support enabled.

    -d: encodes details that affect the library's interoperability with other compiled code. ...

    Both on Linux and Windows Boost libraries are usually built in MT mode but only on Windows you get the -mt suffix for it (e.g. take a look at BOOST libraries in multithreading-aware mode).

    So your idea of linking with boost_python-mt-py27 should be safe (unfortunately I don't know how to distinguish thread aware libraries from regular libraries).