Error compiling eigen_msg on OSX 10.9
I'm trying to build Hydro on OSX Mavericks by following the guide on the wiki. I am using an up-to-date homebrew, which got me this far. After several days of tracking down and fixing other compiler errors, I'm finally stuck on eigen_conversions
and in particular eigen_msg
.
./src/catkin/bin/catkin_make_isolated --install
fails with an error having to do with implicit instantiation of undefined template 'std::allocator<void>'
. The full make
output is below. Any ideas? Is this an issue relating to clang on OSX? Do I need to update some include paths?
==> Processing catkin package: 'eigen_conversions'
==> Building with env: '/Users/sagar/workspace/ros_catkin_ws/install_isolated/env.sh'
Makefile exists, skipping explicit cmake invocation...
==> make cmake_check_build_system in '/Users/sagar/workspace/ros_catkin_ws/build_isolated/eigen_conversions'
==> make -j4 -l4 in '/Users/sagar/workspace/ros_catkin_ws/build_isolated/eigen_conversions'
[ 50%] Building CXX object CMakeFiles/eigen_conversions.dir/src/eigen_msg.cpp.o
In file included from /Users/sagar/workspace/ros_catkin_ws/src/eigen_conversions/src/eigen_msg.cpp:31:
In file included from /Users/sagar/workspace/ros_catkin_ws/src/eigen_conversions/include/eigen_conversions/eigen_msg.h:37:
In file included from /Users/sagar/workspace/ros_catkin_ws/install_isolated/include/std_msgs/Float64MultiArray.h:51:
/Users/sagar/workspace/ros_catkin_ws/install_isolated/include/std_msgs/MultiArrayLayout.h:71:89: error: implicit instantiation of undefined template 'std::allocator<void>'
typedef std::vector< ::std_msgs::MultiArrayDimension_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::std_msgs::MultiArrayDimension_<ContainerAllocator> >::other > _dim_type;
^
/Users/sagar/workspace/ros_catkin_ws/install_isolated/include/std_msgs/Float64MultiArray.h:72:16: note: in instantiation of template class 'std_msgs::MultiArrayLayout_<std::allocator<void> >' requested here
_layout_type layout;
^
/Users/sagar/workspace/ros_catkin_ws/src/eigen_conversions/include/eigen_conversions/eigen_msg.h:97:8: note: in instantiation of template class 'std_msgs::Float64MultiArray_<std::allocator<void> >' requested
here
if (m.layout.dim.size() != 2)
^
/Users/sagar/workspace/ros_catkin_ws/install_isolated/include/ros/message_forward.h:33:28: note: template is declared here
template<typename T> class allocator;
^
In file included from /Users/sagar/workspace/ros_catkin_ws/src/eigen_conversions/src/eigen_msg.cpp:31:
In file included from /Users/sagar/workspace/ros_catkin_ws/src/eigen_conversions/include/eigen_conversions/eigen_msg.h:37:
In file included from /Users/sagar/workspace/ros_catkin_ws/install_isolated/include/std_msgs/Float64MultiArray.h:51:
/Users/sagar/workspace/ros_catkin_ws/install_isolated/include/std_msgs/MultiArrayLayout.h:71:118: error: 'rebind' following the 'template' keyword does not refer to a template
typedef std::vector< ::std_msgs::MultiArrayDimension_<ContainerAllocator> , typename ContainerAllocator::template rebind< ::std_msgs::MultiArrayDimension_<ContainerAllocator> >::other > _dim_type;
^~~~~~
In file included from /Users/sagar/workspace/ros_catkin_ws/src/eigen_conversions/src/eigen_msg.cpp:31:
In file included from /Users/sagar/workspace/ros_catkin_ws/src/eigen_conversions/include/eigen_conversions/eigen_msg.h:37:
/Users/sagar/workspace/ros_catkin_ws/install_isolated/include/std_msgs/Float64MultiArray.h:74:41: error: implicit instantiation of undefined template 'std::allocator<void>'
typedef std::vector<double, typename ContainerAllocator::template rebind<double>::other > _data_type;
^
/Users/sagar/workspace/ros_catkin_ws/src/eigen_conversions/include/eigen_conversions/eigen_msg.h:97:8: note: in instantiation of template class 'std_msgs::Float64MultiArray_<std::allocator<void> >' requested
here
if (m.layout.dim.size() != 2)
^
/Users/sagar/workspace/ros_catkin_ws/install_isolated/include/ros/message_forward.h:33:28: note: template is declared here
template<typename T> class allocator;
^
In file included from /Users/sagar/workspace ...