[ros-users] Build Architecture Question

Ken Conley kwc at willowgarage.com
Tue Feb 15 04:19:29 UTC 2011

Howdy everyone,

William has agreed to be the guinea pig for our new answers.ros.org
site that Tully and Melonee put together.  It's based on an
open-source, Stack Overflow-style system.

Please follow up on this thread here:


Answer/vote/tag to your delight!


On Mon, Feb 14, 2011 at 4:47 PM, William Woodall <wjwwood at gmail.com> wrote:
> So I have been working on using IRI's segway library to implement a segway
> driver for ROS, and I have run into a situation where I don't know how to
> proceed.
> IRI is setting up a port of their stuff for ROS, so at this point it is more
> educational for me.
> So, the IRI segway library relies on some of their other libraries.
> My ROS Node depends on iri_segway_rmp200.
> iri_segway_rmp200 depends on iricomms and iriutils.
> iricomms depends on iriutils.
> All of the IRI stuff is in SVN and is LGPL licensed, my stuff can be
> considered MIT.  They are setup to build dynamically linked libraries (.so
> on linux and .dylib on osx).
> The way I see it there are a few ways to approach this setup in ROS: (Maybe
> there is a 4th, correct setup)
> Put a script in rosdep.yaml to (svn co; make; sudo make install) each of the
> libraries from IRI.
> This is good because the libraries are installed and no further
> configuration is required, but requires root access
> Also, they install Find<lib>.cmake files in the cmake shared Modules folder,
> which is nice
> Create a ROS pkg for each library and use rosmake to build them, using the
> svn_checkout.mk make script and patches to build and install them to the pkg
> dir
> This is nice because the libraries are contained in the ros pkg
> But, you need to export cpp flags to include and link directories
> How do you handle runtime dynamic linking?
> Download/Distribute and build the libraries in your ROS pkg and statically
> link your node to the libraries
> Doesn't allow multiple nodes to link to a single source for the libraries
> (build the libs for each node that uses them)
> So here are my questions:
> What is the preferred method of build architecture?
> How do you handle dynamic linking at runtime? (the .so file is in package A,
> and how does a binary in package B find it at runtime?)
> How can you handle installing and referencing Find<lib>.cmake files that
> libraries have? (use manifext.xml's <depend .../> instead, is my guess)
> What if any licensing concerns are there? (patches and static linking, etc)
> Sorry if some of these questions are silly, I am still learning these more
> complicated build systems (rosmake/cmake).
> Thanks,
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> William Woodall
> Graduate Software Engineering
> Auburn University
> w at auburn.edu
> wjwwood at gmail.com
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users

More information about the ros-users mailing list