exception = libconsole_bridge.so.0.2: cannot open shared object file: No such file or directory

asked 2021-06-23 04:04:09 -0500

BadrMt gravatar image

I'm trying to migrat a robot's ROS packages from ubuntu 16.04 to ubuntu 18.04. The packages are not available in ROS Melodic yet but i need to run them on ROS Melodic. Most of the packages work and i'm even able t run a simulation of the robot in Gazebo but there is one library that fails and it gives me the following error.

Failed to load library /opt/ros/melodic/lib//lib_controllers.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = libconsole_bridge.so.0.2: cannot openshared object file: No such file or directory)

I need this library for control of specific parameters of the robot. Since it's a .so library i cannot change the lib dependencies inside that library. I've had this issue with the libboost_system and i've been able to install a downgraded version of that from source and add it to the LD_LIBRARY_PATH and that solved the problem. But i couldn't do that wiht libconsol_bridge. Does anyone have an idea on how to mitigate this issue.

Thanks in advance!

edit retag flag offensive close merge delete

Comments

1

So you're trying to use binaries compiled for Ubuntu 16.04 and ROS Kinetic on a newer version of Ubuntu and with a newer version of ROS?

migrate is typically used to mean: update the code.

I've had this issue with the libboost_system and i've been able to install a downgraded version of that from source and add it to the LD_LIBRARY_PATH and that solved the problem.

you're probably already aware, but this is really nasty, and at best a work-around.

Would running the nodes in Docker containers (which then are still Xenial+Kinetic) not be an option? Much less work, much more portable and less hacky.

gvdhoorn gravatar image gvdhoorn  ( 2021-06-23 05:23:39 -0500 )edit

@gvdhoorn Yes migrate is not the correct word to use here but more like port a robot software for kinetic to melodic. The software that hasn't been updated from kinetic to melodic and i need to port it because my essential workspace is in melodic and i need this robot in it. I'm experimenting all of this in a VM so as to not break anything in my main system. I've been able to downgrad libconsole_bridge to 0.2 but i ended up with this error : Poco exception = /opt/ros/melodic/lib/lib_controllers.so: undefined symbol: _ZN12class_loader20class_loader_private30getCurrentlyLoadingLibraryNameB5cxx11Ev

I don't know where to go from here.. I don't know what you mean with running the nodes in Docker containers, never explored this will look into it. Does this mean i can run a specific package in kinetic on a container and have it communicate with the ...(more)

BadrMt gravatar image BadrMt  ( 2021-06-23 10:15:08 -0500 )edit

Yes migrate is not the correct word to use here but more like port a robot software for kinetic to melodic.

Not sure port is the right word to use either, as that is typically used to describe updating software to compile on different environments.

Does this mean i can run a specific package in kinetic on a container and have it communicate with the rest of the software ?

yes, with a few constraints, but that's basically the idea, yes.

gvdhoorn gravatar image gvdhoorn  ( 2021-06-29 02:50:16 -0500 )edit