C++ ubuntu 12.04上升级的Boost出现问题
我有CMake的代码库。起初,我的增压率为1.48。今天将Boost升级到最新版本(即1.59)。我有ubuntu 12.04 我有一个使用boost::thread的代码库。 现在它给出了以下错误: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
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不兼容。另见。