0
$\begingroup$

Gazebo Answers logo

Hello,

Before I ask my question here my system specs:

  • 3.8.0-32-generic #47~precise1-Ubuntu SMP Wed Oct 2 16:19:35 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
  • g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
  • ldd (Ubuntu EGLIBC 2.15-0ubuntu10.5) 2.15
  • ROS Fuerte
  • Gazebo 1.9 and Gazebo 1.8.6

Me and a college are working on a gazebo Plugin.

When my college compiles the library, i can use it without any problems at runtime with the robot model. Yet when I compile the very same library i get an undefined symbol error:

Error [Plugin.hh:127] Failed to load plugin /home/user/eclipse_ws/plugin_cmds/libtaurob_plugin_ros.so: /home/user/eclipse_ws/plugin_cmds/libtaurob_plugin_ros.so: undefined symbol: _ZN3ros7console13g_initializedE

My collegue is using gazebo 1.8.6. I have tried and failed using gazebo 1.8.6 and 1.9 (using the corresponing headers and gazebo simulator versions).

It looks like a name mangeling problem. But maybe somehone has encountered a similar problem?

Doing ldd libtaurob_plugin_ros.so gives this as a result. At least every required library is found.

    linux-vdso.so.1 =>  (0x00007fffc0bf2000)
libgazebo_physics.so.1 => /usr/lib/libgazebo_physics.so.1 (0x00007f7dd5c26000)
libgazebo_sensors.so.1 => /usr/lib/libgazebo_sensors.so.1 (0x00007f7dd5991000)
libgazebo_math.so.1 => /usr/lib/libgazebo_math.so.1 (0x00007f7dd5759000)
libgazebo_common.so.1 => /usr/lib/libgazebo_common.so.1 (0x00007f7dd54a9000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f7dd51a9000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7dd4eac000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7dd4c96000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7dd48d6000)
libgazebo_util.so.1 => /usr/lib/libgazebo_util.so.1 (0x00007f7dd4658000)
libgazebo_physics_ode.so.1 => /usr/lib/libgazebo_physics_ode.so.1 (0x00007f7dd43bc000)
libgazebo_transport.so.1 => /usr/lib/libgazebo_transport.so.1 (0x00007f7dd4128000)
libgazebo_msgs.so.1 => /usr/lib/libgazebo_msgs.so.1 (0x00007f7dd3dbf000)
libprotobuf.so.7 => /usr/lib/libprotobuf.so.7 (0x00007f7dd3ad0000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7dd38cc000)
libsdformat.so.1 => /usr/lib/libsdformat.so.1 (0x00007f7dd3607000)
libboost_thread.so.1.46.1 => /usr/lib/libboost_thread.so.1.46.1 (0x00007f7dd33ee000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7dd31d1000)
libboost_system.so.1.46.1 => /usr/lib/libboost_system.so.1.46.1 (0x00007f7dd2fcc000)
libboost_regex.so.1.46.1 => /usr/lib/libboost_regex.so.1.46.1 (0x00007f7dd2cca000)
libgazebo_rendering.so.1 => /usr/lib/libgazebo_rendering.so.1 (0x00007f7dd2917000)
libboost_filesystem.so.1.46.1 => /usr/lib/libboost_filesystem.so.1.46.1 (0x00007f7dd26f8000)
libboost_iostreams.so.1.46.1 => /usr/lib/libboost_iostreams.so.1.46.1 (0x00007f7dd24df000)
libfreeimage.so.3 => /usr/lib/libfreeimage.so.3 (0x00007f7dd21e5000)
libtinyxml.so.2.6.2 => /usr/lib/libtinyxml.so.2.6.2 (0x00007f7dd1fd0000)
libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4 (0x00007f7dd1d73000)
libtar.so.0 => /usr/lib/libtar.so.0 (0x00007f7dd1b66000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f7dd195e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7dd621b000)
libgazebo_ode.so.1 => /usr/lib/libgazebo_ode.so.1 (0x00007f7dd1694000)
libtbb.so.2 => /usr/lib/libtbb.so.2 (0x00007f7dd1467000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f7dd124f000)
libicuuc.so.48 => /usr/lib/libicuuc.so.48 (0x00007f7dd0ee5000)
libicui18n.so.48 => /usr/lib/libicui18n.so.48 (0x00007f7dd0b1c000)
libgazebo_skyx.so.1 => /usr/lib/libgazebo_skyx.so.1 (0x00007f7dd08d9000)
libgazebo_selection_buffer.so.1 => /usr/lib/libgazebo_selection_buffer.so.1 (0x00007f7dd06ca000)
libOgreRTShaderSystem.so.1.7.4 => /usr/lib/x86_64-linux-gnu/libOgreRTShaderSystem.so.1.7.4 (0x00007f7dd03f2000)
libOgreMain.so.1.7.4 => /usr/lib/x86_64-linux-gnu/libOgreMain.so.1.7.4 (0x00007f7dcfc43000)
libOgreTerrain.so.1.7.4 => /usr/lib/x86_64-linux-gnu/libOgreTerrain.so.1.7.4 (0x00007f7dcf9ca000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007f7dcf769000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f7dcf434000)
libCEGUIBase-0.7.5.so => /usr/lib/libCEGUIBase-0.7.5.so (0x00007f7dcef36000)
libCEGUIOgreRenderer-0.7.5.so => /usr/lib/libCEGUIOgreRenderer-0.7.5.so (0x00007f7dced0b000)
libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f7dceafb000)
libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007f7dce8aa000)
libmng.so.1 => /usr/lib/x86_64-linux-gnu/libmng.so.1 (0x00007f7dce622000)
libopenjpeg.so.2 => /usr/lib/libopenjpeg.so.2 (0x00007f7dce402000)
libIlmImf.so.6 => /usr/lib/libIlmImf.so.6 (0x00007f7dce140000)
libHalf.so.6 => /usr/lib/libHalf.so.6 (0x00007f7dcdefd000)
libIex.so.6 => /usr/lib/libIex.so.6 (0x00007f7dcdcde000)
libraw.so.5 => /usr/lib/libraw.so.5 (0x00007f7dcda4d000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f7dcd825000)
libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f7dcd617000)
libidn.so.11 => /usr/lib/x86_64-linux-gnu/libidn.so.11 (0x00007f7dcd3e3000)
liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007f7dcd1d5000)
libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007f7dccf86000)
libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f7dccd47000)
libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f7dccae9000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f7dcc70e000)
librtmp.so.0 => /usr/lib/x86_64-linux-gnu/librtmp.so.0 (0x00007f7dcc4f3000)
libgazebo_opcode.so.1 => /usr/lib/libgazebo_opcode.so.1 (0x00007f7dcc29b000)
libgazebo_opende_ou.so.1 => /usr/lib/libgazebo_opende_ou.so.1 (0x00007f7dcc095000)
libgazebo_ccd.so.1 => /usr/lib/libgazebo_ccd.so.1 (0x00007f7dcbe89000)
libicudata.so.48 => /usr/lib/libicudata.so.48 (0x00007f7dcab19000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f7dca87c000)
libXt.so.6 => /usr/lib/x86_64-linux-gnu/libXt.so.6 (0x00007f7dca616000)
libXaw.so.7 => /usr/lib/x86_64-linux-gnu/libXaw.so.7 (0x00007f7dca3a6000)
libzzip-0.so.13 => /usr/lib/libzzip-0.so.13 (0x00007f7dca19e000)
libOgrePaging.so.1.7.4 => /usr/lib/x86_64-linux-gnu/libOgrePaging.so.1.7.4 (0x00007f7dc9f6d000)
libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0 (0x00007f7dc9d47000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f7dc9b36000)
libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f7dc9933000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f7dc972c000)
libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f7dc952a000)
libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00007f7dc9313000)
libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0 (0x00007f7dc910d000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f7dc8eef000)
libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007f7dc8cea000)
libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f7dc8ade000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f7dc88a1000)
liblcms.so.1 => /usr/lib/x86_64-linux-gnu/liblcms.so.1 (0x00007f7dc8669000)
libImath.so.6 => /usr/lib/libImath.so.6 (0x00007f7dc8463000)
libIlmThread.so.6 => /usr/lib/libIlmThread.so.6 (0x00007f7dc825c000)
libjasper.so.1 => /usr/lib/x86_64-linux-gnu/libjasper.so.1 (0x00007f7dc8004000)
liblcms2.so.2 => /usr/lib/x86_64-linux-gnu/liblcms2.so.2 (0x00007f7dc7db9000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f7dc7b9c000)
libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007f7dc7981000)
libgssapi.so.3 => /usr/lib/x86_64-linux-gnu/libgssapi.so.3 (0x00007f7dc7743000)
libgnutls.so.26 => /usr/lib/x86_64-linux-gnu/libgnutls.so.26 (0x00007f7dc7486000)
libgcrypt.so.11 => /lib/x86_64-linux-gnu/libgcrypt.so.11 (0x00007f7dc7208000)
libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f7dc6f3a000)
libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f7dc6d11000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f7dc6b0d000)
libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f7dc6905000)
libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007f7dc66fc000)
libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007f7dc64e2000)
libXmu.so.6 => /usr/lib/x86_64-linux-gnu/libXmu.so.6 (0x00007f7dc62c8000)
libXpm.so.4 => /usr/lib/x86_64-linux-gnu/libXpm.so.4 (0x00007f7dc60b7000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f7dc5eb4000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f7dc5cad000)
libheimntlm.so.0 => /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 (0x00007f7dc5aa6000)
libkrb5.so.26 => /usr/lib/x86_64-linux-gnu/libkrb5.so.26 (0x00007f7dc581f000)
libasn1.so.8 => /usr/lib/x86_64-linux-gnu/libasn1.so.8 (0x00007f7dc557f000)
libhcrypto.so.4 => /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 (0x00007f7dc534b000)
libroken.so.18 => /usr/lib/x86_64-linux-gnu/libroken.so.18 (0x00007f7dc5135000)
libtasn1.so.3 => /usr/lib/x86_64-linux-gnu/libtasn1.so.3 (0x00007f7dc4f24000)
libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f7dc4d12000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f7dc4b0d000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f7dc4909000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f7dc4703000)
libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00007f7dc44da000)
libheimbase.so.1 => /usr/lib/x86_64-linux-gnu/libheimbase.so.1 (0x00007f7dc42cb000)
libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00007f7dc4080000)
libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f7dc3ddd000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f7dc3ba4000)

EDIT:

CMakeLists.txt

    cmake_minimum_required(VERSION 2.8 FATAL_ERROR)


# find gazebo
include (FindPkgConfig)
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)

if (PKG_CONFIG_FOUND)
  pkg_check_modules(GAZEBO gazebo REQUIRED)
else()
  message(FATAL_ERROR "pkg-config is required; please install it")
endif()

#find_package(roscpp std_msgs genmsg)

include_directories(${GAZEBO_INCLUDE_DIRS})
include_directories(/opt/ros/fuerte/include/)
link_directories(${GAZEBO_LIBRARY_DIRS})
include_directories(${roscpp_INCLUDE_DIRS})
link_directories(${roscpp_LIBRARY_DIRS})
include_directories(${rosconsole_INCLUDE_DIRS})
link_directories(${rosconsole_LIBRARY_DIRS})


#include(/home/moro-ceci/taurob_animate_ros/build/CMakeFiles/rospack.cmake)

include(cmake/rospack.cmake)

#get_rospack_flags(roscpp)

# compile plugin

add_library(taurob_plugin_ros SHARED taurob_plugin_ros.cc)
set_target_properties(taurob_plugin_ros PROPERTIES COMPILE_FLAGS "${roscpp_CFLAGS_OTHER} ${rosconsole_LDFLAGS_OTHER}")
set_target_properties(taurob_plugin_ros PROPERTIES LINK_FLAGS "${roscpp_LDFLAGS_OTHER} ${rosconsole_LDFLAGS_OTHER}")

target_link_libraries(taurob_plugin_ros ${GAZEBO_LIBRARIES} ${roscpp_LIBRARIES}  ${rosconsole_LIBRARIES})
#target_link_libraries(taurob_plugin_ros ${roscpp_LIBRARIES})



set(CMAKE_INSTALL_RPATH "${roscpp_LIBRARY_DIRS}")
install (TARGETS taurob_plugin_ros DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/gazebo_plugins/)

nm output

     nm libtaurob_plugin_ros.so | grep initializedE
                 U _ZN3ros7console13g_initializedE
000000000003438c W _ZN5boost6detail13sp_ms_deleterIN13geometry_msgs6Twist_ISaIvEEEE15set_initializedEv

nm libtaurob_plugin_ros.so | grep initializedE | c++fil output

                 U ros::console::g_initialized
000000000003438c W boost::detail::sp_ms_deleter<geometry_msgs::Twist_<std::allocator<void> > >::set_initialized()

BR


Originally posted by Eisenhorn on Gazebo Answers with karma: 43 on 2013-11-04

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Gazebo Answers logo

A clue to the problem is in the name of the undefined symbol: _ZN3ros7console13g_initializedE. It appears that you are trying to call ros functions (specifically ros console functions), but you have not linked your library with the ros libraries. Can you try linking with the ROS libraries that you use?


Originally posted by scpeters with karma: 2861 on 2013-11-04

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by Eisenhorn on 2013-11-05:
Hi! Thanks for your answer. I have updated my original post with more information, including the CMakeList.txt. The CMakeList.txt is based upon the tutorial from http://gazebosim.org/wiki/Tutorials#Plugins. I am not sure where the Variables such as roscpp_LIBRARY_DIRS are specified. Also I cant run the rosbuild_init() script, as the plugin is no package. Is it sufficient to add this line in order to link the libraries target_link_libraries(taurob_plugin_ros ${GAZEBO_LIBRARIES} ... BR

Comment by Eisenhorn on 2013-11-05:
target_link_libraries(taurob_plugin_ros ${GAZEBO_LIBRARIES} ${roscpp_LIBRARIES} ${rosconsole_LIBRARIES})I tried that but nothing changed.

Comment by scpeters on 2013-11-06:
You commented out the #find_package(roscpp std_msgs genmsg), so I don't think the variables like roscpp_INCLUDE_DIRS will exist. You can test by printing them out `message(STATUS "roscpp_INCLUDE_DIRS ${roscpp_INCLUDE_DIRS}"). Since this is starting to become a question about ROS, you may consider posting at answers.ros.org as well, since I'm not currently using fuerte.

Comment by Eisenhorn on 2013-11-12:
Ahhhhhhhh thank you so much. I just included the line find_package(roscpp). Now ldd links to the corresponding library taurob.llibrosconsole.so => /opt/ros/fuerte/lib/librosconsole.so (0x00007ff940ff0000)

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.