Two versions of libboost?
I've seen that running two versions of libboost will cause problems, but I can't figure out how to upgrade my libboost so that I can use an external library.
I'm using the vicon_bridge package, which uses a Vicon SDK that seems to need libboost1.53. My BOOST_LIB_VERSION
macro prints out as Boost version: 1_46_1
, and apt-cache policy libboost-dev
returns:
libboost-dev:
Installed: 1.48.0.2
Candidate: 1.48.0.2
Version table:
*** 1.48.0.2 0
500 http://us.archive.ubuntu.com/ubuntu/ precise/main i386 Packages
100 /var/lib/dpkg/status
I'm running a 32-bit VM of Ubuntu 12.04 with ROS Hydro. If I run sudo apt-get install libboost1.54-dev
, apt-get will uninstall all my ros binaries (presumably because they need a 1.4* version of boost).
How can I meet both 1.53 and 1.48 boost version dependencies simultaneously?
EDIT: I'd assumed that it's a boost library issue, but might not be. Here's the backtrace from the segfault:
#0 0xb7aa5108 in ?? () from /lib/i386-linux-gnu/libc.so.6
#1 0xb7aa6674 in ?? () from /lib/i386-linux-gnu/libc.so.6
#2 0xb7aa8e4c in malloc () from /lib/i386-linux-gnu/libc.so.6
#3 0xb7ccf627 in operator new(unsigned int) () from /usr/lib/i386-linux-gnu/libstdc++.so.6
#4 0xb7e1117a in ros::PollManager::addPollThreadListener(boost::function<void ()> const&) () from /opt/ros/hydro/lib/libroscpp.so
#5 0xb7e558f7 in ros::start() () from /opt/ros/hydro/lib/libroscpp.so
#6 0xb7e2c317 in ros::NodeHandle::construct(std::string const&, bool) () from /opt/ros/hydro/lib/libroscpp.so
#7 0xb7e2d7a3 in ros::NodeHandle::NodeHandle(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const&) ()
from /opt/ros/hydro/lib/libroscpp.so
#8 0xb7e6f434 in ros::AsyncSpinnerImpl::AsyncSpinnerImpl(unsigned int, ros::CallbackQueue*) () from /opt/ros/hydro/lib/libroscpp.so
#9 0xb7e71d94 in ros::AsyncSpinner::AsyncSpinner(unsigned int) () from /opt/ros/hydro/lib/libroscpp.so
#10 0x080a22f9 in main ()
EDIT 2: More info on the boost linking:
$ ldd vicon_bridge | grep boost
libboost_signals.so.1.46.1 => /usr/lib/libboost_signals.so.1.46.1 (0xb70ba000)
libboost_system.so.1.46.1 => /usr/lib/libboost_system.so.1.46.1 (0xb7090000)
libboost_thread.so.1.46.1 => /usr/lib/libboost_thread.so.1.46.1 (0xb7079000)
libboost_filesystem.so.1.46.1 => /usr/lib/libboost_filesystem.so.1.46.1 (0xb7034000)
libboost_regex.so.1.46.1 => /usr/lib/libboost_regex.so.1.46.1 (0xb6d8e000)
I get the same output even after I run commands like:
$ catkin_make --force-cmake --pkg vicon_bridge -DBoost_DIR=/home/cohrint/catkin_ws/src/vicon_bridge/vicon_sdk/Vicon_SDK_1.3_Linux/32-bit/ -DBoost_NO_SYSTEM_PATHS=ON -DBoost_ADDITIONAL_VERSIONS="1.53;1.53.0"
and I get the same thing whenever I try to edit the CMakeLists.txt file as specified in this post.
EDIT3: I've now reinstalled everything on a 64-bit Ubuntu 12.04 install, and I still get issues with Boost. Here's the output of roslaunch vicon_bridge vicon.launch
:
process[vicon-1]: started with pid [2993]
[ INFO] [1409066865.764183805]: Connecting to ...
Are those dependencies on 1.53 header-only?
I actually don't know how to check that. I assumed the dependencies were on libboost1.53 because of these libraries in the package
It looks like the 1.53 libs are wrapped inside the package, so it shouldn't conflict with your Boost libs system-wide.
So the segfault is unrelated to boost? Why would AsyncSpinner() cause a segfault?