CMakeError: make -j4 -l4 error (undefined reference error)
Hello, all. I'm running Ubuntu 16.04 LTS Xenial with ROS kinetic. I tried to make a snake robot following robotignite academy course. However, I've met this kind of error and I don't know how to solve this. Actually, my cpp file does not work as expected. I expect that my problem is on CMakeLists.txt.
Snake_Controller.cpp
#include <controller_interface/controller.h>
#include <hardware_interface/joint_command_interface.h>
#include <pluginlib/class_list_macros.h>
namespace controller_ns{
class PositionController : public controller_interface::Controller<hardware_interface::EffortJointInterface>
{
public:
bool init(hardware_interface::EffortJointInterface* hw, ros::NodeHandle &n)
{
std::string my_joint;
if (!n.getParam("joint", my_joint)){
ROS_ERROR("Could not find joint name");
return false;
}
joint_ = hw->getHandle(my_joint); // throws on failure
return true;
}
void update(const ros::Time& time, const ros::Duration& period)
{
double error = setpoint_ - joint_.getPosition();
joint_.setCommand(error*gain_);
}
void starting(const ros::Time& time) { }
void stopping(const ros::Time& time) { }
private:
hardware_interface::JointHandle joint_;
static const double gain_ = 2.25;
static const double setpoint_ = 1.00;
};
PLUGINLIB_EXPORT_CLASS(controller_ns::PositionController, controller_interface::ControllerBase);
}
In fact, the cpp code is same as robotigniteacademy ros control101 course's exercise. However, I'm trying to make my code work on my local environment changing CMakeLists.txt.
CMakeLists.txt
cmake_minimum_required(VERSION 2.8.3)
project(my_snake_robot)
## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
controller_interface
hardware_interface
pluginlib
roslib
)
catkin_package(
INCLUDE_DIRS include
LIBRARIES my_snake_robot
CATKIN_DEPENDS roscpp controller_interface hardware_interface pluginlib roslib
)
###########
## Build ##
## Declare a C++ library
add_library(my_snake_robot_lib src/snake_controller.cpp)
## Add cmake target dependencies of the library
## as an example, code may need to be generated before libraries
## either from message generation or dynamic reconfigure
add_dependencies(${my_snake_robot} ${${my_snake_robot}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
## Declare a C++ executable
## With catkin_make all packages are built within a single CMake context
## The recommended prefix ensures that target names across packages don't collide
add_executable(${my_snake_robot}_node src/snake_controller.cpp)
target_link_libraries(my_snake_robot_lib ${catkin_LIBRARIES})
package.xml
<?xml version="1.0"?>
<!-- One maintainer tag required, multiple allowed, one person per tag -->
<!-- Example: -->
<!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
<maintainer email="dsong@todo.todo">dsong</maintainer>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>controller_interface</build_depend>
<build_depend>hardware_interface</build_depend>
<build_depend>pluginlib</build_depend>
<build_depend>roscpp</build_depend>
<build_depend>roslib</build_depend>
<build_export_depend>controller_interface</build_export_depend>
<build_export_depend>hardware_interface</build_export_depend>
<build_export_depend>pluginlib</build_export_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>roslib</build_export_depend>
<exec_depend>controller_interface</exec_depend>
<exec_depend>hardware_interface</exec_depend>
<exec_depend>pluginlib</exec_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>roslib</exec_depend>
<!-- The export tag contains other, unspecified, tags -->
<export>
<controller_interface plugin="${prefix}/controller_plugins.xml"/>
</export>
</package>
I'm trying to make adding controller on my unit snake robot. However, it does not work as I expected. Any help will very grateful for me. Thanks for reading.
I've gotten this kind of error
CMake Warning at /opt/ros/kinetic/share/catkin/cmake/catkin_package.cmake:166 (message):
catkin_package() DEPENDS on 'gazebo' but neither 'gazebo_INCLUDE_DIRS' nor
'gazebo_LIBRARIES' is defined.
Call Stack (most recent call first):
/opt/ros/kinetic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package)
practice/snake_ws/src/gazebo_ros_control/CMakeLists.txt:22 (catkin_package)
-- +++ processing catkin package: 'testbot_description'
-- ==> add_subdirectory(testbot_description)
-- +++ processing catkin package: 'turtlebot3_description'
-- ==> add_subdirectory(turtlebot3/turtlebot3_description)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dsong/catkin_ws/build
####
#### Running command: "make -j4 -l4" in "/home/dsong/catkin_ws/build/my_snake_robot"
####
[ 33%] Linking CXX executable /home/dsong/catkin_ws/devel/lib/my_snake_robot/my_snake_robot
[100%] Built target my_snake_robot_lib
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
CMakeFiles/my_snake_robot.dir/src/snake_controller.cpp.o: In function `controller_ns::(anonymous namespace)::ProxyExec0::ProxyExec0()':
snake_controller.cpp:(.text+0x8a): undefined reference to `console_bridge::log(char const*, int, console_bridge::LogLevel, char const*, ...)'
CMakeFiles/my_snake_robot.dir/src/snake_controller.cpp.o: In function `__static_initialization_and_destruction_0(int, int)':
snake_controller.cpp:(.text+0x242): undefined reference to `boost::system::generic_category()'
snake_controller.cpp:(.text+0x24e): undefined reference to `boost::system::generic_category()'
snake_controller.cpp:(.text+0x25a): undefined reference to `boost::system::system_category()'
CMakeFiles/my_snake_robot.dir/src/snake_controller.cpp.o: In function `controller_ns::PositionController::init(hardware_interface::EffortJointInterface*, ros::NodeHandle&)':
snake_controller.cpp:(.text._ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE[_ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE]+0x85): undefined reference to `ros::NodeHandle::getParam(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
snake_controller.cpp:(.text._ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE[_ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE]+0xb7): undefined reference to `ros::console::g_initialized'
snake_controller.cpp:(.text._ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE[_ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE]+0xc7): undefined reference to `ros::console::initialize()'
snake_controller.cpp:(.text._ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE[_ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE]+0x116): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE[_ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE]+0x154): undefined reference to `ros::console::setLogLocationLevel(ros::console::LogLocation*, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE[_ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE]+0x15e): undefined reference to `ros::console::checkLogLocationEnabled(ros::console::LogLocation*)'
snake_controller.cpp:(.text._ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE[_ZN13controller_ns18PositionController4initEPN18hardware_interface20EffortJointInterfaceERN3ros10NodeHandleE]+0x1b0): undefined reference to `ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, char const*, int, char const*, char const*, ...)'
CMakeFiles/my_snake_robot.dir/src/snake_controller.cpp.o: In function `void class_loader::class_loader_private::registerPlugin<controller_ns::PositionController, controller_interface::ControllerBase>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0x2a): undefined reference to `class_loader::class_loader_private::getCurrentlyLoadingLibraryName[abi:cxx11]()'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0x3e): undefined reference to `class_loader::class_loader_private::getCurrentlyActiveClassLoader()'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0x76): undefined reference to `console_bridge::log(char const*, int, console_bridge::LogLevel, char const*, ...)'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0x8b): undefined reference to `class_loader::class_loader_private::getCurrentlyActiveClassLoader()'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0xb9): undefined reference to `console_bridge::log(char const*, int, console_bridge::LogLevel, char const*, ...)'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0xc3): undefined reference to `class_loader::class_loader_private::hasANonPurePluginLibraryBeenOpened(bool)'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0xec): undefined reference to `class_loader::class_loader_private::getCurrentlyActiveClassLoader()'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0xfe): undefined reference to `class_loader::class_loader_private::AbstractMetaObjectBase::addOwningClassLoader(class_loader::ClassLoader*)'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0x10a): undefined reference to `class_loader::class_loader_private::getCurrentlyLoadingLibraryName[abi:cxx11]()'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0x11d): undefined reference to `class_loader::class_loader_private::AbstractMetaObjectBase::setAssociatedLibraryPath(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0x12e): undefined reference to `class_loader::class_loader_private::getPluginBaseToFactoryMapMapMutex()'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0x1aa): undefined reference to `console_bridge::log(char const*, int, console_bridge::LogLevel, char const*, ...)'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0x1cc): undefined reference to `class_loader::class_loader_private::getPluginBaseToFactoryMapMapMutex()'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_[_ZN12class_loader20class_loader_private14registerPluginIN13controller_ns18PositionControllerEN20controller_interface14ControllerBaseEEEvRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_]+0x20b): undefined reference to `console_bridge::log(char const*, int, console_bridge::LogLevel, char const*, ...)'
CMakeFiles/my_snake_robot.dir/src/snake_controller.cpp.o: In function `std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, class_loader::class_loader_private::AbstractMetaObjectBase*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, class_loader::class_loader_private::AbstractMetaObjectBase*> > >& class_loader::class_loader_private::getFactoryMapForBaseClass<controller_interface::ControllerBase>()':
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private25getFactoryMapForBaseClassIN20controller_interface14ControllerBaseEEERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS0_22AbstractMetaObjectBaseESt4lessISA_ESaISt4pairIKSA_SC_EEEv[_ZN12class_loader20class_loader_private25getFactoryMapForBaseClassIN20controller_interface14ControllerBaseEEERSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS0_22AbstractMetaObjectBaseESt4lessISA_ESaISt4pairIKSA_SC_EEEv]+0x4c): undefined reference to `class_loader::class_loader_private::getFactoryMapForBaseClass(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
CMakeFiles/my_snake_robot.dir/src/snake_controller.cpp.o: In function `class_loader::class_loader_private::AbstractMetaObject<controller_interface::ControllerBase>::AbstractMetaObject(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private18AbstractMetaObjectIN20controller_interface14ControllerBaseEEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_[_ZN12class_loader20class_loader_private18AbstractMetaObjectIN20controller_interface14ControllerBaseEEC5ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_]+0x37): undefined reference to `class_loader::class_loader_private::AbstractMetaObjectBase::AbstractMetaObjectBase(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
snake_controller.cpp:(.text._ZN12class_loader20class_loader_private18AbstractMetaObjectIN20controller_interface14ControllerBaseEEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_[_ZN12class_loader20class_loader_private18AbstractMetaObjectIN20controller_interface14ControllerBaseEEC5ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESC_]+0xdf): undefined reference to `class_loader::class_loader_private::AbstractMetaObjectBase::~AbstractMetaObjectBase()'
CMakeFiles/my_snake_robot.dir/src/snake_controller.cpp.o: In function `controller_interface::Controller<hardware_interface::EffortJointInterface>::initRequest(hardware_interface::RobotHW*, ros::NodeHandle&, ros::NodeHandle&, std::vector<hardware_interface::InterfaceResources, std::allocator<hardware_interface::InterfaceResources> >&)':
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x53): undefined reference to `ros::console::g_initialized'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x63): undefined reference to `ros::console::initialize()'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0xb2): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0xf0): undefined reference to `ros::console::setLogLocationLevel(ros::console::LogLocation*, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0xfa): undefined reference to `ros::console::checkLogLocationEnabled(ros::console::LogLocation*)'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x14c): undefined reference to `ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, char const*, int, char const*, char const*, ...)'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x189): undefined reference to `ros::console::g_initialized'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x199): undefined reference to `ros::console::initialize()'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x1e8): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x226): undefined reference to `ros::console::setLogLocationLevel(ros::console::LogLocation*, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x230): undefined reference to `ros::console::checkLogLocationEnabled(ros::console::LogLocation*)'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x2a4): undefined reference to `ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, char const*, int, char const*, char const*, ...)'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x350): undefined reference to `ros::console::g_initialized'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x360): undefined reference to `ros::console::initialize()'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x3af): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x3ed): undefined reference to `ros::console::setLogLocationLevel(ros::console::LogLocation*, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x3f7): undefined reference to `ros::console::checkLogLocationEnabled(ros::console::LogLocation*)'
snake_controller.cpp:(.text._ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE[_ZN20controller_interface10ControllerIN18hardware_interface20EffortJointInterfaceEE11initRequestEPNS1_7RobotHWERN3ros10NodeHandleES8_RSt6vectorINS1_18InterfaceResourcesESaISA_EE]+0x449): undefined reference to `ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, char const*, int, char const*, char const*, ...)'
CMakeFiles/my_snake_robot.dir/src/snake_controller.cpp.o: In function `hardware_interface::EffortJointInterface* hardware_interface::InterfaceManager::get<hardware_interface::EffortJointInterface>()':
snake_controller.cpp:(.text._ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v[_ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v]+0xc6): undefined reference to `ros::console::g_initialized'
snake_controller.cpp:(.text._ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v[_ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v]+0xd6): undefined reference to `ros::console::initialize()'
snake_controller.cpp:(.text._ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v[_ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v]+0x12b): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v[_ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v]+0x16c): undefined reference to `ros::console::setLogLocationLevel(ros::console::LogLocation*, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v[_ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v]+0x176): undefined reference to `ros::console::checkLogLocationEnabled(ros::console::LogLocation*)'
snake_controller.cpp:(.text._ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v[_ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v]+0x22d): undefined reference to `ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > const&, char const*, int, char const*)'
snake_controller.cpp:(.text._ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v[_ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v]+0x4d3): undefined reference to `ros::console::g_initialized'
snake_controller.cpp:(.text._ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v[_ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v]+0x4e3): undefined reference to `ros::console::initialize()'
snake_controller.cpp:(.text._ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v[_ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v]+0x538): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v[_ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v]+0x579): undefined reference to `ros::console::setLogLocationLevel(ros::console::LogLocation*, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v[_ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v]+0x583): undefined reference to `ros::console::checkLogLocationEnabled(ros::console::LogLocation*)'
snake_controller.cpp:(.text._ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v[_ZN18hardware_interface16InterfaceManager3getINS_20EffortJointInterfaceEEEPT_v]+0x5d5): undefined reference to `ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, char const*, int, char const*, char const*, ...)'
CMakeFiles/my_snake_robot.dir/src/snake_controller.cpp.o: In function `hardware_interface::ResourceManager<hardware_interface::JointHandle>::registerHandle(hardware_interface::JointHandle const&)':
snake_controller.cpp:(.text._ZN18hardware_interface15ResourceManagerINS_11JointHandleEE14registerHandleERKS1_[_ZN18hardware_interface15ResourceManagerINS_11JointHandleEE14registerHandleERKS1_]+0x17c): undefined reference to `ros::console::g_initialized'
snake_controller.cpp:(.text._ZN18hardware_interface15ResourceManagerINS_11JointHandleEE14registerHandleERKS1_[_ZN18hardware_interface15ResourceManagerINS_11JointHandleEE14registerHandleERKS1_]+0x18c): undefined reference to `ros::console::initialize()'
snake_controller.cpp:(.text._ZN18hardware_interface15ResourceManagerINS_11JointHandleEE14registerHandleERKS1_[_ZN18hardware_interface15ResourceManagerINS_11JointHandleEE14registerHandleERKS1_]+0x1e1): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN18hardware_interface15ResourceManagerINS_11JointHandleEE14registerHandleERKS1_[_ZN18hardware_interface15ResourceManagerINS_11JointHandleEE14registerHandleERKS1_]+0x222): undefined reference to `ros::console::setLogLocationLevel(ros::console::LogLocation*, ros::console::levels::Level)'
snake_controller.cpp:(.text._ZN18hardware_interface15ResourceManagerINS_11JointHandleEE14registerHandleERKS1_[_ZN18hardware_interface15ResourceManagerINS_11JointHandleEE14registerHandleERKS1_]+0x22c): undefined reference to `ros::console::checkLogLocationEnabled(ros::console::LogLocation*)'
snake_controller.cpp:(.text._ZN18hardware_interface15ResourceManagerINS_11JointHandleEE14registerHandleERKS1_[_ZN18hardware_interface15ResourceManagerINS_11JointHandleEE14registerHandleERKS1_]+0x38a): undefined reference to `ros::console::print(ros::console::FilterBase*, void*, ros::console::levels::Level, std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > const&, char const*, int, char const*)'
collect2: error: ld returned 1 exit status
my_snake_robot/CMakeFiles/my_snake_robot.dir/build.make:94: '/home/dsong/catkin_ws/devel/lib/my_snake_robot/my_snake_robot' 타겟에 대한 명령이 실패했습니다
make[2]: *** [/home/dsong/catkin_ws/devel/lib/my_snake_robot/my_snake_robot] 오류 1
CMakeFiles/Makefile2:2260: 'my_snake_robot/CMakeFiles/my_snake_robot.dir/all' 타겟에 대한 명령이 실패했습니다
make[1]: *** [my_snake_robot/CMakeFiles/my_snake_robot.dir/all] 오류 2
Makefile:138: 'all' 타겟에 대한 명령이 실패했습니다
make: *** [all] 오류 2
Invoking "make -j4 -l4" failed
Asked by JinhyeokSong on 2018-08-22 07:11:10 UTC
Answers
I've just had a closer look at your CMakeLists.txt
file and I think you haven't defined the target link libraries for the executable. you have the following line which sets them for the libraries:
target_link_libraries(my_snake_robot_lib ${catkin_LIBRARIES})
But you need to add another line as below to add them for the executable as well:
target_link_libraries(${my_snake_robot}_node ${catkin_LIBRARIES})
This should get this package building properly.
Asked by PeteBlackerThe3rd on 2018-08-23 05:51:09 UTC
Comments
Are you trying to build an executable node which depends on a library which is built in this same package? This may be causing you some problems.
Asked by PeteBlackerThe3rd on 2018-08-22 08:20:22 UTC
Thanks for giving advice. I'll check for my codes if I wrote something wrong from libraries.
Asked by JinhyeokSong on 2018-08-23 02:05:49 UTC