[ros-users] compile problem nodelet in OSX

Nicholas Butko nbutko at ucsd.edu
Fri Sep 2 18:33:43 UTC 2011


It is the same.

I can confirm that William's patch works for me, for compilation / linking.
I didn't check that it works at runtime.

--Nick

On Fri, Sep 2, 2011 at 11:18 AM, William Woodall <wjwwood at gmail.com> wrote:

> Is this not the same as this?
>
> https://code.ros.org/trac/ros-pkg/ticket/5144
>
> --
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> William Woodall
> Graduate Software Engineering
> Auburn University
> w at auburn.edu
> wjwwood at gmail.com
> williamjwoodall.com
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>
>
> On Fri, Sep 2, 2011 at 1:02 PM, Nicholas Butko <nbutko at ucsd.edu> wrote:
>
>> I looked into this again, after the discussion today.
>>
>> Going off the tip yesterday about rosconsole successfully compiling with
>> the g++ legacy compiler rather than llvm-g++ current compiler, I decided to
>> try compiling nodelet with /usr/bin/g++-4.2 (now the "legacy") compiler.
>>
>> All of the boost linking errors went away, and building was perfect. This
>> was still with "TIXML_USE_STL" defined. Remove the define, and things break
>> again.
>>
>> I'm having trouble even trying it with clang++ (experimental compiler),
>> because clang++ doesn't respect LIBRARY_PATH, so it doesn't find the
>> macports libraries (e.g. tinyxml) at all.
>>
>> --Nick
>>
>>
>> On Fri, Sep 2, 2011 at 10:37 AM, Kevin Walchko <kevin.walchko at gmail.com>wrote:
>>
>>> I don't like installing source code I can't easily remove. That is why I
>>> put up with macports.
>>>
>>>
>>>
>>>
>>> On Sep 2, 2011, at 12:49 PM, Brian Gerkey wrote:
>>>
>>> > hi Kevin,
>>> >
>>> > On Fri, Sep 2, 2011 at 8:06 AM, Kevin Walchko <kevin.walchko at gmail.com>
>>> wrote:
>>> >> I am having problems compiling nodelet.
>>> >> ROS electric, OSX Lion 10.7 using macports and default compiler
>>> >> I had to define STL use in loader.cpp, otherwise the macports of
>>> tinyXML
>>> >> didn't make certain class members available:
>>> >> #define TIXML_USE_STL
>>> >> is there a way to define this in CMakeLists.txt?
>>> >
>>> > Did the tinyxml source rosdep not work for you?  `rosdep install
>>> > nodelet` should build and install an appropriately configured version
>>> > of tinyxml from https://kforge.ros.org/rosrelease/sourcedeps/tinyxml.
>>> > I wrote that because I was having the same trouble you are (and more,
>>> > as I recall) with using the macports version of tinyxml.
>>> >
>>> >> I am getting this error, but not sure why. I am assuming I have to add
>>> >> something to CMakeLists.txt to make the headers from include/nodelet
>>> >> available, but adding include(${PROJECT_SOURCE_DIR}/include/nodelet)
>>> didn't
>>> >> help.
>>> >>
>>> >> [ 66%] Built target rosbuild_precompile
>>> >> Linking CXX shared library ../lib/libnodeletlib.dylib
>>> >> Undefined symbols for architecture x86_64:
>>> >
>>> > Not sure what's going on there.  I was just able to build nodelet on
>>> > my 10.6 machine (and I'm about to add it to the electric-devel builds
>>> > so that it keeps working).
>>> >
>>> >       brian.
>>> >
>>> >>   "nodelet::UninitializedException::~UninitializedException()",
>>> referenced
>>> >> from:
>>> >>       nodelet::Nodelet::getMTPrivateNodeHandle() constin
>>> nodelet_class.o
>>> >>       nodelet::Nodelet::getMTNodeHandle() constin nodelet_class.o
>>> >>       nodelet::Nodelet::getPrivateNodeHandle() constin nodelet_class.o
>>> >>       nodelet::Nodelet::getNodeHandle() constin nodelet_class.o
>>> >>       nodelet::Nodelet::getMTCallbackQueue() constin nodelet_class.o
>>> >>       nodelet::Nodelet::getSTCallbackQueue() constin nodelet_class.o
>>> >>       vtable for nodelet::UninitializedExceptionin nodelet_class.o
>>> >>       ...
>>> >>   "boost::shared_ptr<ros::NodeHandle>::operator*() const", referenced
>>> from:
>>> >>       nodelet::Nodelet::getMTPrivateNodeHandle() constin
>>> nodelet_class.o
>>> >>       nodelet::Nodelet::getMTNodeHandle() constin nodelet_class.o
>>> >>       nodelet::Nodelet::getPrivateNodeHandle() constin nodelet_class.o
>>> >>       nodelet::Nodelet::getNodeHandle() constin nodelet_class.o
>>> >>   "boost::shared_ptr<nodelet::detail::CallbackQueue>::operator*()
>>> const",
>>> >> referenced from:
>>> >>       nodelet::Nodelet::getMTCallbackQueue() constin nodelet_class.o
>>> >>       nodelet::Nodelet::getSTCallbackQueue() constin nodelet_class.o
>>> >>   "boost::shared_ptr<bond::Bond>::reset()", referenced from:
>>> >>       nodelet::Nodelet::~Nodelet()in nodelet_class.o
>>> >>       nodelet::Nodelet::~Nodelet()in nodelet_class.o
>>> >>   "boost::shared_ptr<bond::Bond>::~shared_ptr()", referenced from:
>>> >>       nodelet::Nodelet::~Nodelet()in nodelet_class.o
>>> >>       nodelet::Nodelet::~Nodelet()in nodelet_class.o
>>> >>   "boost::shared_ptr<ros::NodeHandle>::~shared_ptr()", referenced
>>> from:
>>> >>       nodelet::Nodelet::~Nodelet()in nodelet_class.o
>>> >>       nodelet::Nodelet::~Nodelet()in nodelet_class.o
>>> >>       nodelet::Nodelet::Nodelet()in nodelet_class.o
>>> >>   "boost::shared_ptr<nodelet::detail::CallbackQueue>::~shared_ptr()",
>>> >> referenced from:
>>> >>       nodelet::Nodelet::~Nodelet()in nodelet_class.o
>>> >>       nodelet::Nodelet::~Nodelet()in nodelet_class.o
>>> >>       nodelet::Nodelet::Nodelet()in nodelet_class.o
>>> >>
>>> >>
>>> nodelet::detail::CallbackQueue::addCallback(boost::shared_ptr<ros::CallbackInterface>
>>> >> const&, unsigned long long)in callback_queue.o
>>> >>   "boost::shared_ptr<nodelet::detail::CallbackQueue>::shared_ptr()",
>>> >> referenced from:
>>> >>       nodelet::Nodelet::Nodelet()in nodelet_class.o
>>> >>       nodelet::detail::CallbackQueueManager::QueueInfo::QueueInfo()in
>>> >> callback_queue_manager.o
>>> >>   "boost::shared_ptr<ros::NodeHandle>::shared_ptr()", referenced from:
>>> >>       nodelet::Nodelet::Nodelet()in nodelet_class.o
>>> >>   "boost::shared_ptr<bond::Bond>::shared_ptr()", referenced from:
>>> >>       nodelet::Nodelet::Nodelet()in nodelet_class.o
>>> >>
>>> >>
>>> "nodelet::MultipleInitializationException::~MultipleInitializationException()",
>>> >> referenced from:
>>> >>       nodelet::Nodelet::init(std::basic_string<char,
>>> std::char_traits<char>,
>>> >> std::allocator<char> > const&, std::map<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> >,
>>> std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> >,
>>> >> std::less<std::basic_string<char, std::char_traits<char>,
>>> >> std::allocator<char> > >,
>>> std::allocator<std::pair<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> > const,
>>> >> std::basic_string<char, std::char_traits<char>, std::allocator<char> >
>>> > > >
>>> >> const&, std::vector<std::basic_string<char, std::char_traits<char>,
>>> >> std::allocator<char> >, std::allocator<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> > > > const&,
>>> >> nodelet::detail::CallbackQueueManager*,
>>> boost::shared_ptr<bond::Bond>)in
>>> >> nodelet_class.o
>>> >>       vtable for nodelet::MultipleInitializationExceptionin
>>> nodelet_class.o
>>> >>
>>> "boost::shared_ptr<bond::Bond>::operator=(boost::shared_ptr<bond::Bond>
>>> >> const&)", referenced from:
>>> >>       nodelet::Nodelet::init(std::basic_string<char,
>>> std::char_traits<char>,
>>> >> std::allocator<char> > const&, std::map<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> >,
>>> std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> >,
>>> >> std::less<std::basic_string<char, std::char_traits<char>,
>>> >> std::allocator<char> > >,
>>> std::allocator<std::pair<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> > const,
>>> >> std::basic_string<char, std::char_traits<char>, std::allocator<char> >
>>> > > >
>>> >> const&, std::vector<std::basic_string<char, std::char_traits<char>,
>>> >> std::allocator<char> >, std::allocator<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> > > > const&,
>>> >> nodelet::detail::CallbackQueueManager*,
>>> boost::shared_ptr<bond::Bond>)in
>>> >> nodelet_class.o
>>> >>   "void
>>> >>
>>> boost::shared_ptr<nodelet::detail::CallbackQueue>::reset<nodelet::detail::CallbackQueue>(nodelet::detail::CallbackQueue*)",
>>> >> referenced from:
>>> >>       nodelet::Nodelet::init(std::basic_string<char,
>>> std::char_traits<char>,
>>> >> std::allocator<char> > const&, std::map<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> >,
>>> std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> >,
>>> >> std::less<std::basic_string<char, std::char_traits<char>,
>>> >> std::allocator<char> > >,
>>> std::allocator<std::pair<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> > const,
>>> >> std::basic_string<char, std::char_traits<char>, std::allocator<char> >
>>> > > >
>>> >> const&, std::vector<std::basic_string<char, std::char_traits<char>,
>>> >> std::allocator<char> >, std::allocator<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> > > > const&,
>>> >> nodelet::detail::CallbackQueueManager*,
>>> boost::shared_ptr<bond::Bond>)in
>>> >> nodelet_class.o
>>> >>   "void
>>> >>
>>> boost::shared_ptr<ros::NodeHandle>::reset<ros::NodeHandle>(ros::NodeHandle*)",
>>> >> referenced from:
>>> >>       nodelet::Nodelet::init(std::basic_string<char,
>>> std::char_traits<char>,
>>> >> std::allocator<char> > const&, std::map<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> >,
>>> std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> >,
>>> >> std::less<std::basic_string<char, std::char_traits<char>,
>>> >> std::allocator<char> > >,
>>> std::allocator<std::pair<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> > const,
>>> >> std::basic_string<char, std::char_traits<char>, std::allocator<char> >
>>> > > >
>>> >> const&, std::vector<std::basic_string<char, std::char_traits<char>,
>>> >> std::allocator<char> >, std::allocator<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> > > > const&,
>>> >> nodelet::detail::CallbackQueueManager*,
>>> boost::shared_ptr<bond::Bond>)in
>>> >> nodelet_class.o
>>> >>   "boost::shared_ptr<nodelet::detail::CallbackQueue>::get() const",
>>> >> referenced from:
>>> >>       nodelet::Nodelet::init(std::basic_string<char,
>>> std::char_traits<char>,
>>> >> std::allocator<char> > const&, std::map<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> >,
>>> std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> >,
>>> >> std::less<std::basic_string<char, std::char_traits<char>,
>>> >> std::allocator<char> > >,
>>> std::allocator<std::pair<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> > const,
>>> >> std::basic_string<char, std::char_traits<char>, std::allocator<char> >
>>> > > >
>>> >> const&, std::vector<std::basic_string<char, std::char_traits<char>,
>>> >> std::allocator<char> >, std::allocator<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> > > > const&,
>>> >> nodelet::detail::CallbackQueueManager*,
>>> boost::shared_ptr<bond::Bond>)in
>>> >> nodelet_class.o
>>> >>   "boost::shared_ptr<ros::NodeHandle>::operator->() const", referenced
>>> from:
>>> >>       nodelet::Nodelet::init(std::basic_string<char,
>>> std::char_traits<char>,
>>> >> std::allocator<char> > const&, std::map<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> >,
>>> std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> >,
>>> >> std::less<std::basic_string<char, std::char_traits<char>,
>>> >> std::allocator<char> > >,
>>> std::allocator<std::pair<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> > const,
>>> >> std::basic_string<char, std::char_traits<char>, std::allocator<char> >
>>> > > >
>>> >> const&, std::vector<std::basic_string<char, std::char_traits<char>,
>>> >> std::allocator<char> >, std::allocator<std::basic_string<char,
>>> >> std::char_traits<char>, std::allocator<char> > > > const&,
>>> >> nodelet::detail::CallbackQueueManager*,
>>> boost::shared_ptr<bond::Bond>)in
>>> >> nodelet_class.o
>>> >>
>>> >>
>>> "nodelet::MultipleInitializationException::~MultipleInitializationException()",
>>> >> referenced from:
>>> >>       vtable for nodelet::MultipleInitializationExceptionin
>>> nodelet_class.o
>>> >>   "nodelet::UninitializedException::~UninitializedException()",
>>> referenced
>>> >> from:
>>> >>       vtable for nodelet::UninitializedExceptionin nodelet_class.o
>>> >>   "ros::WallDuration::~WallDuration()", referenced from:
>>> >>       nodelet::detail::CallbackQueue::callOne()    in callback_queue.o
>>> >>
>>> >>
>>> "boost::enable_shared_from_this<nodelet::detail::CallbackQueue>::shared_from_this()",
>>> >> referenced from:
>>> >>
>>> >>
>>> nodelet::detail::CallbackQueue::addCallback(boost::shared_ptr<ros::CallbackInterface>
>>> >> const&, unsigned long long)in callback_queue.o
>>> >>
>>> >>
>>> "boost::enable_shared_from_this<nodelet::detail::CallbackQueue>::~enable_shared_from_this()",
>>> >> referenced from:
>>> >>       nodelet::detail::CallbackQueue::~CallbackQueue()in
>>> callback_queue.o
>>> >>       nodelet::detail::CallbackQueue::~CallbackQueue()in
>>> callback_queue.o
>>> >>
>>> >>
>>> nodelet::detail::CallbackQueue::CallbackQueue(nodelet::detail::CallbackQueueManager*)in
>>> >> callback_queue.o
>>> >>   "ros::CallbackQueueInterface::CallbackQueueInterface()", referenced
>>> from:
>>> >>
>>> >>
>>> nodelet::detail::CallbackQueue::CallbackQueue(nodelet::detail::CallbackQueueManager*)in
>>> >> callback_queue.o
>>> >>
>>> >>
>>> "boost::enable_shared_from_this<nodelet::detail::CallbackQueue>::enable_shared_from_this()",
>>> >> referenced from:
>>> >>
>>> >>
>>> nodelet::detail::CallbackQueue::CallbackQueue(nodelet::detail::CallbackQueueManager*)in
>>> >> callback_queue.o
>>> >>
>>> >>
>>> "boost::shared_ptr<boost::mutex>::shared_ptr<boost::mutex>(boost::mutex*)",
>>> >> referenced from:
>>> >>
>>> nodelet::detail::CallbackQueueManager::ThreadInfo::ThreadInfo()in
>>> >> callback_queue_manager.o
>>> >>
>>> >>
>>> "boost::shared_ptr<boost::condition_variable>::shared_ptr<boost::condition_variable>(boost::condition_variable*)",
>>> >> referenced from:
>>> >>
>>> nodelet::detail::CallbackQueueManager::ThreadInfo::ThreadInfo()in
>>> >> callback_queue_manager.o
>>> >> ld: symbol(s) not found for architecture x86_64
>>> >> collect2: ld returned 1 exit status
>>> >> make[3]: *** [../lib/libnodeletlib.dylib] Error 1
>>> >> make[2]: *** [CMakeFiles/nodeletlib.dir/all] Error 2
>>> >> make[1]: *** [all] Error 2
>>> >> make: *** [all] Error 2
>>> >> [kevin at TARDIS nodelet]$
>>> >>
>>> >> _______________________________________________
>>> >> ros-users mailing list
>>> >> ros-users at code.ros.org
>>> >> https://code.ros.org/mailman/listinfo/ros-users
>>> >>
>>> >>
>>> > _______________________________________________
>>> > ros-users mailing list
>>> > ros-users at code.ros.org
>>> > https://code.ros.org/mailman/listinfo/ros-users
>>>
>>> _______________________________________________
>>> ros-users mailing list
>>> ros-users at code.ros.org
>>> https://code.ros.org/mailman/listinfo/ros-users
>>>
>>
>>
>> _______________________________________________
>> ros-users mailing list
>> ros-users at code.ros.org
>> https://code.ros.org/mailman/listinfo/ros-users
>>
>>
>
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20110902/5cc033e5/attachment-0002.html>


More information about the ros-users mailing list