ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Hi :) last night I was effed in the mind... Simply tiiirreed.

This morning, something occurred to me: Check out what a shared library even is!

Turns out, longsotry short, they are special kinds of libraries that programs automagically install. What is interesting about them is that different libraries can use older versions of the same library. How is this possible? Through their naming system!

libtinyxml.so.5.x.x is different than libtinyxml.so.6.x.x!

So, it occured to me, there were two possibilities! EITHER: I do not have libtinyxml installed, OR: ROS wants to use a version that I do not have installed, and ROS is refusing to install the correct version.

Turns out, it was the latter.

I went into my /usr/libs directory, and searched for libtinyxml. Guess what I found? libtinyxml.so.2.5.3

Notice that ROS wants to use libtinyxml.so.2.6.2

Now I have no idea why ROS is not attempting to update the tinyxml file, but I do believe that the answer to my issues are either:

To rename libtinyxml.so.2.5.3 to libtinyxml.so.2.6.2 OR Upgrade libtinyxml.so.2.5.3 to libtinyxml.so.2.6.2

I hope this helps anyone who comes across similar issues. If you are getting a "Shared library could not be loaded" issue, go to your usr/lib directory, and use the search function to search for the name of the library (Name being the part that comes BEFORE the .so.x.x.x part).

Some .so files should appear (If they do not, you do not have what ROS wants. Skip down to the bottom for help). Check these versions against the version the version that is being showed in the error (version is seen in the so.x.x.x part). If these versions do not match, you know you have a problem.

The solution to this problem varies:

If ROS wants an OLDER version of what you have, just duplicate the oldest version you own, and rename it to what your ROS wants. Libraries are commonly backwards compatible, and WILL support deprecated operations for a while, for this reason exactly.

If ROS wants a NEWER version, seek help on updating that version. I suggest going to the website that publishes the library you wish to upgrade, and then seeing if it has an install page. If it does not have a legible method of installation, attempt to get help on either an IRC, or help system like this one.

If yo don't have what ROS wants at all... Then just install what ros wants like you normally would, and then repeat the above steps if it still does not work.