Last active
February 12, 2017 16:40
-
-
Save tsbertalan/85580e3c0105084cdcca4a1156fe14e2 to your computer and use it in GitHub Desktop.
beginner_totorials fails with undefined reference ros::init(...args...)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Created by | |
# catkin_make -j1 VERBOSE=1 > catkin_make-c11.out 2>&1 | |
# Command was done three times to keep only nontransient output. | |
# Output was the same (per diff) with our without | |
# add_definitions(-std=c++11) | |
# before | |
# cmake_minimum_required(VERSION 2.8.3) | |
# in CMakeLists.txt. | |
# | |
# Before compiling and piping output, I did | |
# catkin_make clean; rm -rf build devel install; catkin_make clean | |
# . | |
# However, there *was* a difference if I only ran catkin_make once: | |
# 15c15 | |
# < cd /home/tsbertalan/newcatkin_ws/build/beginner_tutorials && /usr/bin/c++ -DROSCONSOLE_BACKEND_LOG4CXX -DROS_BUILD_SHARED_LIBS=1 -DROS_PACKAGE_NAME=\"beginner_tutorials\" -I/home/tsbertalan/newcatkin_ws/src/beginner_tutorials/include -I/opt/ros/kinetic/include -o CMakeFiles/listener.dir/src/listener.cpp.o -c /home/tsbertalan/newcatkin_ws/src/beginner_tutorials/src/listener.cpp | |
# --- | |
# > cd /home/tsbertalan/newcatkin_ws/build/beginner_tutorials && /usr/bin/c++ -DROSCONSOLE_BACKEND_LOG4CXX -DROS_BUILD_SHARED_LIBS=1 -DROS_PACKAGE_NAME=\"beginner_tutorials\" -I/home/tsbertalan/newcatkin_ws/src/beginner_tutorials/include -I/opt/ros/kinetic/include -std=c++11 -o CMakeFiles/listener.dir/src/listener.cpp.o -c /home/tsbertalan/newcatkin_ws/src/beginner_tutorials/src/listener.cpp | |
# Clearly not significant. | |
/usr/bin/cmake -H/home/tsbertalan/newcatkin_ws/src -B/home/tsbertalan/newcatkin_ws/build --check-build-system CMakeFiles/Makefile.cmake 0 | |
/usr/bin/cmake -E cmake_progress_start /home/tsbertalan/newcatkin_ws/build/CMakeFiles /home/tsbertalan/newcatkin_ws/build/CMakeFiles/progress.marks | |
make -f CMakeFiles/Makefile2 all | |
make[1]: Entering directory '/home/tsbertalan/newcatkin_ws/build' | |
make -f beginner_tutorials/CMakeFiles/listener.dir/build.make beginner_tutorials/CMakeFiles/listener.dir/depend | |
make[2]: Entering directory '/home/tsbertalan/newcatkin_ws/build' | |
cd /home/tsbertalan/newcatkin_ws/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/tsbertalan/newcatkin_ws/src /home/tsbertalan/newcatkin_ws/src/beginner_tutorials /home/tsbertalan/newcatkin_ws/build /home/tsbertalan/newcatkin_ws/build/beginner_tutorials /home/tsbertalan/newcatkin_ws/build/beginner_tutorials/CMakeFiles/listener.dir/DependInfo.cmake --color= | |
make[2]: Leaving directory '/home/tsbertalan/newcatkin_ws/build' | |
make -f beginner_tutorials/CMakeFiles/listener.dir/build.make beginner_tutorials/CMakeFiles/listener.dir/build | |
make[2]: Entering directory '/home/tsbertalan/newcatkin_ws/build' | |
[ 25%] Linking CXX executable /home/tsbertalan/newcatkin_ws/devel/lib/beginner_tutorials/listener | |
cd /home/tsbertalan/newcatkin_ws/build/beginner_tutorials && /usr/bin/cmake -E cmake_link_script CMakeFiles/listener.dir/link.txt --verbose=1 | |
/usr/bin/c++ CMakeFiles/listener.dir/src/listener.cpp.o -o /home/tsbertalan/newcatkin_ws/devel/lib/beginner_tutorials/listener -rdynamic /opt/ros/kinetic/lib/libroscpp.so -lboost_signals -lboost_filesystem /opt/ros/kinetic/lib/librosconsole.so /opt/ros/kinetic/lib/librosconsole_log4cxx.so /opt/ros/kinetic/lib/librosconsole_backend_interface.so -llog4cxx -lboost_regex /opt/ros/kinetic/lib/libxmlrpcpp.so /opt/ros/kinetic/lib/libroscpp_serialization.so /opt/ros/kinetic/lib/librostime.so /opt/ros/kinetic/lib/libcpp_common.so -lboost_system -lboost_thread -lboost_chrono -lboost_date_time -lboost_atomic -lpthread -lconsole_bridge -Wl,-rpath,/opt/ros/kinetic/lib | |
CMakeFiles/listener.dir/src/listener.cpp.o: In function `chatterCallback(boost::shared_ptr<std_msgs::String_<std::allocator<void> > const> const&)': | |
listener.cpp:(.text+0x78): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)' | |
CMakeFiles/listener.dir/src/listener.cpp.o: In function `main': | |
listener.cpp:(.text+0x1dc): undefined reference to `ros::init(int&, char**, std::string const&, unsigned int)' | |
listener.cpp:(.text+0x238): undefined reference to `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&)' | |
CMakeFiles/listener.dir/src/listener.cpp.o: In function `ros::SubscriptionCallbackHelperT<boost::shared_ptr<std_msgs::String_<std::allocator<void> > const> const&, void>::deserialize(ros::SubscriptionCallbackHelperDeserializeParams const&)': | |
listener.cpp:(.text._ZN3ros27SubscriptionCallbackHelperTIRKN5boost10shared_ptrIKN8std_msgs7String_ISaIvEEEEEvE11deserializeERKNS_43SubscriptionCallbackHelperDeserializeParamsE[_ZN3ros27SubscriptionCallbackHelperTIRKN5boost10shared_ptrIKN8std_msgs7String_ISaIvEEEEEvE11deserializeERKNS_43SubscriptionCallbackHelperDeserializeParamsE]+0xba): undefined reference to `ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)' | |
collect2: error: ld returned 1 exit status | |
beginner_tutorials/CMakeFiles/listener.dir/build.make:113: recipe for target '/home/tsbertalan/newcatkin_ws/devel/lib/beginner_tutorials/listener' failed | |
make[2]: *** [/home/tsbertalan/newcatkin_ws/devel/lib/beginner_tutorials/listener] Error 1 | |
make[2]: Leaving directory '/home/tsbertalan/newcatkin_ws/build' | |
CMakeFiles/Makefile2:473: recipe for target 'beginner_tutorials/CMakeFiles/listener.dir/all' failed | |
make[1]: *** [beginner_tutorials/CMakeFiles/listener.dir/all] Error 2 | |
make[1]: Leaving directory '/home/tsbertalan/newcatkin_ws/build' | |
Makefile:138: recipe for target 'all' failed | |
make: *** [all] Error 2 | |
Base path: /home/tsbertalan/newcatkin_ws | |
Source space: /home/tsbertalan/newcatkin_ws/src | |
Build space: /home/tsbertalan/newcatkin_ws/build | |
Devel space: /home/tsbertalan/newcatkin_ws/devel | |
Install space: /home/tsbertalan/newcatkin_ws/install | |
#### | |
#### Running command: "make cmake_check_build_system" in "/home/tsbertalan/newcatkin_ws/build" | |
#### | |
#### | |
#### Running command: "make -j1 VERBOSE=1" in "/home/tsbertalan/newcatkin_ws/build" | |
#### | |
Invoking "make -j1 VERBOSE=1" failed |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# %Tag(FULLTEXT)% | |
cmake_minimum_required(VERSION 2.8.3) | |
project(beginner_tutorials) | |
## Find catkin and any catkin packages | |
find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs genmsg) | |
## Generate added messages and services | |
#generate_messages(DEPENDENCIES std_msgs) | |
## Declare a catkin package | |
catkin_package() | |
## Build talker and listener | |
include_directories(include ${catkin_INCLUDE_DIRS}) | |
add_executable(talker src/talker.cpp) | |
target_link_libraries(talker ${catkin_LIBRARIES}) | |
add_dependencies(talker beginner_tutorials_generate_messages_cpp) | |
add_executable(listener src/listener.cpp) | |
target_link_libraries(listener ${catkin_LIBRARIES}) | |
add_dependencies(listener beginner_tutorials_generate_messages_cpp) | |
# %EndTag(FULLTEXT)% |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0"?> | |
<package> | |
<name>beginner_tutorials</name> | |
<version>0.1.0</version> | |
<description>The beginner_tutorials package</description> | |
<maintainer email="[email protected]">Your Name</maintainer> | |
<license>BSD</license> | |
<url type="website">http://wiki.ros.org/beginner_tutorials</url> | |
<author email="[email protected]">Jane Doe</author> | |
<buildtool_depend>catkin</buildtool_depend> | |
<build_depend>roscpp</build_depend> | |
<build_depend>rospy</build_depend> | |
<build_depend>std_msgs</build_depend> | |
<run_depend>roscpp</run_depend> | |
<run_depend>rospy</run_depend> | |
<run_depend>std_msgs</run_depend> | |
</package> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Copyright (C) 2008, Morgan Quigley and Willow Garage, Inc. | |
* | |
* Redistribution and use in source and binary forms, with or without | |
* modification, are permitted provided that the following conditions are met: | |
* * Redistributions of source code must retain the above copyright notice, | |
* this list of conditions and the following disclaimer. | |
* * Redistributions in binary form must reproduce the above copyright | |
* notice, this list of conditions and the following disclaimer in the | |
* documentation and/or other materials provided with the distribution. | |
* * Neither the names of Stanford University or Willow Garage, Inc. nor the names of its | |
* contributors may be used to endorse or promote products derived from | |
* this software without specific prior written permission. | |
* | |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
* POSSIBILITY OF SUCH DAMAGE. | |
*/ | |
// %Tag(FULLTEXT)% | |
#include "ros/ros.h" | |
#include "std_msgs/String.h" | |
/** | |
* This tutorial demonstrates simple receipt of messages over the ROS system. | |
*/ | |
// %Tag(CALLBACK)% | |
void chatterCallback(const std_msgs::String::ConstPtr& msg) | |
{ | |
ROS_INFO("I heard: [%s]", msg->data.c_str()); | |
} | |
// %EndTag(CALLBACK)% | |
int main(int argc, char **argv) | |
{ | |
/** | |
* The ros::init() function needs to see argc and argv so that it can perform | |
* any ROS arguments and name remapping that were provided at the command line. | |
* For programmatic remappings you can use a different version of init() which takes | |
* remappings directly, but for most command-line programs, passing argc and argv is | |
* the easiest way to do it. The third argument to init() is the name of the node. | |
* | |
* You must call one of the versions of ros::init() before using any other | |
* part of the ROS system. | |
*/ | |
ros::init(argc, argv, "listener"); | |
/** | |
* NodeHandle is the main access point to communications with the ROS system. | |
* The first NodeHandle constructed will fully initialize this node, and the last | |
* NodeHandle destructed will close down the node. | |
*/ | |
ros::NodeHandle n; | |
/** | |
* The subscribe() call is how you tell ROS that you want to receive messages | |
* on a given topic. This invokes a call to the ROS | |
* master node, which keeps a registry of who is publishing and who | |
* is subscribing. Messages are passed to a callback function, here | |
* called chatterCallback. subscribe() returns a Subscriber object that you | |
* must hold on to until you want to unsubscribe. When all copies of the Subscriber | |
* object go out of scope, this callback will automatically be unsubscribed from | |
* this topic. | |
* | |
* The second parameter to the subscribe() function is the size of the message | |
* queue. If messages are arriving faster than they are being processed, this | |
* is the number of messages that will be buffered up before beginning to throw | |
* away the oldest ones. | |
*/ | |
// %Tag(SUBSCRIBER)% | |
ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback); | |
// %EndTag(SUBSCRIBER)% | |
/** | |
* ros::spin() will enter a loop, pumping callbacks. With this version, all | |
* callbacks will be called from within this thread (the main one). ros::spin() | |
* will exit when Ctrl-C is pressed, or the node is shutdown by the master. | |
*/ | |
// %Tag(SPIN)% | |
ros::spin(); | |
// %EndTag(SPIN)% | |
return 0; | |
} | |
// %EndTag(FULLTEXT)% |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "ros/ros.h" | |
#include "std_msgs/String.h" | |
#include <sstream> | |
/** | |
* This tutorial demonstrates simple sending of messages over the ROS system. | |
*/ | |
int main(int argc, char **argv) | |
{ | |
/** | |
* The ros::init() function needs to see argc and argv so that it can perform | |
* any ROS arguments and name remapping that were provided at the command line. | |
* For programmatic remappings you can use a different version of init() which takes | |
* remappings directly, but for most command-line programs, passing argc and argv is | |
* the easiest way to do it. The third argument to init() is the name of the node. | |
* | |
* You must call one of the versions of ros::init() before using any other | |
* part of the ROS system. | |
*/ | |
ros::init(argc, argv, "talker"); | |
/** | |
* NodeHandle is the main access point to communications with the ROS system. | |
* The first NodeHandle constructed will fully initialize this node, and the last | |
* NodeHandle destructed will close down the node. | |
*/ | |
ros::NodeHandle n; | |
/** | |
* The advertise() function is how you tell ROS that you want to | |
* publish on a given topic name. This invokes a call to the ROS | |
* master node, which keeps a registry of who is publishing and who | |
* is subscribing. After this advertise() call is made, the master | |
* node will notify anyone who is trying to subscribe to this topic name, | |
* and they will in turn negotiate a peer-to-peer connection with this | |
* node. advertise() returns a Publisher object which allows you to | |
* publish messages on that topic through a call to publish(). Once | |
* all copies of the returned Publisher object are destroyed, the topic | |
* will be automatically unadvertised. | |
* | |
* The second parameter to advertise() is the size of the message queue | |
* used for publishing messages. If messages are published more quickly | |
* than we can send them, the number here specifies how many messages to | |
* buffer up before throwing some away. | |
*/ | |
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000); | |
ros::Rate loop_rate(10); | |
/** | |
* A count of how many messages we have sent. This is used to create | |
* a unique string for each message. | |
*/ | |
int count = 0; | |
while (ros::ok()) | |
{ | |
/** | |
* This is a message object. You stuff it with data, and then publish it. | |
*/ | |
std_msgs::String msg; | |
std::stringstream ss; | |
ss << "hello world " << count; | |
msg.data = ss.str(); | |
ROS_INFO("%s", msg.data.c_str()); | |
/** | |
* The publish() function is how you send messages. The parameter | |
* is the message object. The type of this object must agree with the type | |
* given as a template parameter to the advertise<>() call, as was done | |
* in the constructor above. | |
*/ | |
chatter_pub.publish(msg); | |
ros::spinOnce(); | |
loop_rate.sleep(); | |
++count; | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment