1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Undefined Symbol bei shared library

  • baracuda
  • 4. November 2013 um 17:10
  • Unerledigt
  • baracuda
    7
    baracuda
    Mitglied
    Punkte
    410
    Beiträge
    51
    • 4. November 2013 um 17:10
    • #1

    Hallo,

    Ich und eine Kollegin schreiben ein Plugin in für den Robtersimulator Gazebo.
    Im Grunde werden dazu einfach shared libraries geladen. Die Systems Specs auf beiden Systemen shcauen so aus:


    • 3.8.0-32-generic #47~precise1-Ubuntu SMP Wed Oct 2 16:19:35 UTC 2013 x8664 x8664 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

    Beim Laden des Plugins bekomme ich den Fehler:

    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

    Kompelliert meine Kollegin die Library so funktioniert es, wenn ich sie auf meinem System verwende.

    Die Ausgabe von ldd siehr auch ok aus

    Code
    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)
    Alles anzeigen

    Die CMakeLists.txt sieht so aus

    Code
    make_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()
    
    
    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(/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} -Wl,--no-undefined")
    set_target_properties(taurob_plugin_ros PROPERTIES LINK_FLAGS "${roscpp_LDFLAGS_OTHER}")
    
    
    target_link_libraries(taurob_plugin_ros ${GAZEBO_LIBRARIES} ${roscpp_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/)
    Alles anzeigen

    Wie kann am besten solche Fehler am besten debuggen?? Bzw. Vielleicht sieht ja einer den Fehler?

    MFG

    “For God's sake, give me the young man who has brains enough to make a fool of himself”, Robert Louis Stevenson

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 4. November 2013 um 17:41
    • #2
    Zitat von baracuda

    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


    Und, ist das Symbol drin?

    Code
    nm /home/user/eclipse_ws/plugin_cmds/libtaurob_plugin_ros.so | grep initializedE
    Zitat

    Kompelliert meine Kollegin die Library so funktioniert es, wenn ich sie auf meinem System verwende.


    Wenn du bei dir kompilierst, funktioniert die Library bei dir nicht, aber wenn sie kompiliert, funktioniert sie bei dir schon? Was ist auf ihrem System?

    *plantsch*

  • baracuda
    7
    baracuda
    Mitglied
    Punkte
    410
    Beiträge
    51
    • 5. November 2013 um 10:54
    • #3

    Hey Plantschkuh!

    Vielen Dank für deine schnelle Antwort!

    Hier der output von nm bei meiner library:

    nm -a libtaurob_plugin_ros.so | grep initializedE
    [CODE]
    U _ZN3ros7console13g_initializedE
    000000000003438c W _ZN5boost6detail13sp_ms_deleterIN13geometry_msgs6Twist_ISaIvEEEE15set_initializedEv
    [\CODE]

    Der Befehl nm libtaurob_plugin_ros.so | grep initializedE | c++filt liefert das
    [CODE]
    U ros::console::g_initialized
    000000000003438c W boost::detail::sp_ms_deleter<geometry_msgs::Twist_<std::allocator<void> > >::set_initialized()
    [\CODE]

    Das Symbol ist Unidentified.

    Bei der Lib von meiner Kollegin kommt das gleiche raus !?!?!?

    nm libtaurob_plugin_ros_ceci.so | grrep initializedE
    [CODE]
    U _ZN3ros7console13g_initializedE
    0000000000034206 W _ZN5boost6detail13sp_ms_deleterIN13geometry_msgs6Twist_ISaIvEEEE15set_initializedEv
    [\CODE]

    Also ich steh auf der Leitung.

    “For God's sake, give me the young man who has brains enough to make a fool of himself”, Robert Louis Stevenson

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 5. November 2013 um 11:20
    • #4

    Hmm. Vom Namen her schauts so aus, als sollte ros::console::g_initialized aus einer ROS-Library kommen. Ich seh aber nix davon in deinem ldd-Output.

    *plantsch*

  • baracuda
    7
    baracuda
    Mitglied
    Punkte
    410
    Beiträge
    51
    • 22. November 2013 um 13:47
    • #5

    Hey habe das in CMakeLists.txt vergessen

    find_package(roscpp). Jetzt wird richtig verlinked

    taurob.llibrosconsole.so => /opt/ros/fuerte/lib/librosconsole.so (0x00007ff940ff0000)

    “For God's sake, give me the young man who has brains enough to make a fool of himself”, Robert Louis Stevenson

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Tags

  • cmake
  • error
  • shared library

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung