C++ ubuntu 12.04上升级的Boost出现问题

C++ ubuntu 12.04上升级的Boost出现问题,c++,boost,ros,C++,Boost,Ros,我有CMake的代码库。起初,我的增压率为1.48。今天将Boost升级到最新版本(即1.59)。我有ubuntu 12.04 我有一个使用boost::thread的代码库。 现在它给出了以下错误: Linking CXX executable /home/eeuser/ros_workspaces/HeloRosProject/devel/lib/visensor_node/visensor_node /home/eeuser/ros_workspaces/HeloRosProject/de

我有CMake的代码库。起初,我的增压率为1.48。今天将Boost升级到最新版本(即1.59)。我有ubuntu 12.04

我有一个使用boost::thread的代码库。 现在它给出了以下错误:

Linking CXX executable /home/eeuser/ros_workspaces/HeloRosProject/devel/lib/visensor_node/visensor_node
/home/eeuser/ros_workspaces/HeloRosProject/devel/lib/libvisensor.so: error: undefined reference to 'boost::thread::join_noexcept()'
/home/eeuser/ros_workspaces/HeloRosProject/devel/lib/libvisensor.so: error: undefined reference to 'boost::thread::start_thread_noexcept()'
collect2: ld returned 1 exit status
make[2]: *** [/home/eeuser/ros_workspaces/HeloRosProject/devel/lib/visensor_node/visensor_node] Error 1
make[1]: *** [visensor_node/CMakeFiles/visensor_node.dir/all] Error 2
make: *** [all] Error 2
Invoking "make" failed
下面是我的cmakefile的外观

cmake_minimum_required(VERSION 2.8.3)
project(visensor_node)

find_package(catkin REQUIRED COMPONENTS
  roscpp 
  message_generation
  geometry_msgs
  sensor_msgs 
  cv_bridge 
  std_msgs 
  image_transport 
  camera_info_manager 
  dynamic_reconfigure
  cmake_modules
)

# check libvisensor version, flags not used later
find_package(libvisensor 1.1.0 REQUIRED)
find_package(Boost REQUIRED COMPONENTS system thread date_time)
include_directories(${Boost_INCLUDE_DIRS})
find_package(Threads REQUIRED)

set(Boost_USE_MULTITHREADED ON)  
add_message_files(
  DIRECTORY msg
  FILES visensor_imu.msg 
  visensor_time_host.msg
  visensor_calibration.msg
)

add_service_files(
    FILES
    visensor_calibration_service.srv
)

generate_messages(DEPENDENCIES geometry_msgs)

include_directories(include ${catkin_INCLUDE_DIRS} ${libvisensor_INCLUDE_DIRS})

find_package(Eigen REQUIRED)
include_directories(${EIGEN_INCLUDE_DIR})
add_definitions(${EIGEN_DEFINITIONS})

find_package(OpenCV REQUIRED COMPONENTS core highgui imgproc)

generate_dynamic_reconfigure_options(cfg/visensor_node.cfg)

if(NOT DEFINED CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Release)
endif(NOT DEFINED CMAKE_BUILD_TYPE)

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -std=c++0x -D__STRICT_ANSI__")

catkin_package(
  INCLUDE_DIRS include ${catkin_INCLUDE_DIRS}
  CATKIN_DEPENDS
  roscpp 
  sensor_msgs 
  cv_bridge 
  std_msgs 
  image_transport 
  camera_info_manager 
)

#build and add libvisensor system library dependency
add_executable(visensor_node src/visensor_node.cpp src/visensor.cpp )

add_dependencies(visensor_node ${${PROJECT_NAME}_EXPORTED_TARGETS}})
target_link_libraries(visensor_node ${libvisensor_LIBRARIES} ${catkin_LIBRARIES} ${OpenCV_LIBRARIES} ${Boost_THREAD_LIBRARY} )
这个错误快把我逼疯了。。。!
请帮忙

很可能您没有链接到与编译时使用的头版本相匹配的Boost线程二进制文件(libboost_Thread.so)

也许您可以让CMake告诉您所涉及的确切包含目录和库目录


如果它们看起来正常(例如
-I/my/boost/path/boost
-L/my/boost/path/stage/libs
),那么您一定忘了构建1.59版本的库。

您使用的是ros hydro吗?您的ros版本可能与较新的boost不兼容。另见。