ArduPilot / ardupilot_gazebo

Plugins and models for vehicle simulation in Gazebo Sim with ArduPilot SITL controllers
GNU Lesser General Public License v3.0
82 stars 78 forks source link

undefined symbol #46

Closed eppravitra closed 1 year ago

eppravitra commented 1 year ago

Bug report

Issue details

I couldn't solve this link error. The plugin at commit 5b4d5a7 compiled just fine

$ gz sim -r iris_runway.sdf
Error while loading the library [/home/ep/ardupilot_gazebo/build/libArduPilotPlugin.so]: /home/ep/ardupilot_gazebo/build/libArduPilotPlugin.so: undefined symbol: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev, version Qt_5
[Err] [SystemLoader.cc:140] Failed to load system plugin: (Reason: No plugins detected in library)
- Requested plugin name: [ArduPilotPlugin]
- Requested library name: [libArduPilotPlugin]
- Resolved library path: [/home/ep/ardupilot_gazebo/build/libArduPilotPlugin.so]

Version ardupilot_gazebo commit 5b4d5a7 Gazebo Garden Ubuntu 22.04 gcc 12.1.0

Any help would be greatly appreciated.

srmainwaring commented 1 year ago

@eppravitra what was the last commit you successfully built? (you've provided the same commit twice above).

The most recent changes have not altered the C++ code - an unused file was removed, but otherwise the changes affect the SDF model files not the plugin code.

I built a clean Ubuntu 22.04 VM hosted on macOS VMware 13.0.1. Gazebo Garden is a binary install. All packages updated and upgraded. The ardupilot plugin builds clean. The iris runway world launches and runs as expected.

```bash $ uname -a Linux ubuntu-jammy 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux ``` ```bash $ gcc --version gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE ``` ```bash $ gz sim --version Gazebo Sim, version 7.3.0 Copyright (C) 2018 Open Source Robotics Foundation. Released under the Apache 2.0 License. ``` ```bash rhys@ubuntu-jammy:~/Code/ardupilot/sim/ardupilot_gazebo/build$ cmake .. -DCMAKE_BUILD_TYPE=RelWithDebugInfo -DCMAKE_CXX_STANDARD=17 -- Looking for gz-sim7 -- found version 7.3.0 -- Searching for dependencies of gz-sim7 -- Looking for sdformat13 -- found version 13.3.0 -- Searching for dependencies of sdformat13 -- Checking for module 'tinyxml2' -- Found tinyxml2, version 9.0.0 -- Looking for gz-math7 -- found version 7.1.0 -- Searching for dependencies of gz-math7 -- Looking for gz-utils2 -- found version 2.0.0 -- Searching for dependencies of gz-utils2 -- Looking for gz-utils2 -- found version 2.0.0 -- Searching for dependencies of gz-utils2 -- Searching for component [cli] -- Looking for gz-utils2-cli -- found version 2.0.0 -- Searching for dependencies of gz-utils2-cli -- Looking for gz-plugin2 -- found version 2.0.1 -- Searching for dependencies of gz-plugin2 -- Looking for gz-utils2 -- found version 2.0.0 -- Searching for component [loader] -- Looking for gz-plugin2-loader -- found version 2.0.1 -- Searching for dependencies of gz-plugin2-loader -- Searching for component [register] -- Looking for gz-plugin2-register -- found version 2.0.1 -- Searching for dependencies of gz-plugin2-register -- Looking for gz-transport12 -- found version 12.1.0 -- Searching for dependencies of gz-transport12 -- Config-file not installed for ZeroMQ -- checking for pkg-config -- Checking for module 'libzmq >= 4' -- Found libzmq , version 4.3.4 -- Checking for module 'uuid' -- Found uuid, version 2.37.2 -- Looking for gz-utils2 -- found version 2.0.0 -- Looking for gz-msgs9 -- found version 9.3.0 -- Searching for dependencies of gz-msgs9 -- Looking for gz-math7 -- found version 7.1.0 -- Searching for component [log] -- Looking for gz-transport12-log -- found version 12.1.0 -- Searching for dependencies of gz-transport12-log -- Searching for component [parameters] -- Looking for gz-transport12-parameters -- found version 12.1.0 -- Searching for dependencies of gz-transport12-parameters -- Looking for gz-msgs9 -- found version 9.3.0 -- Looking for gz-common5 -- found version 5.3.1 -- Searching for dependencies of gz-common5 -- Looking for gz-utils2 -- found version 2.0.0 -- Looking for dlfcn.h - found -- Looking for libdl - found -- Searching for component [profiler] -- Looking for gz-common5-profiler -- found version 5.3.1 -- Searching for dependencies of gz-common5-profiler -- Searching for component [events] -- Looking for gz-common5-events -- found version 5.3.1 -- Searching for dependencies of gz-common5-events -- Looking for gz-math7 -- found version 7.1.0 -- Searching for component [av] -- Looking for gz-common5-av -- found version 5.3.1 -- Searching for dependencies of gz-common5-av -- Checking for module 'libswscale' -- Found libswscale, version 5.9.100 -- Checking for module 'libavdevice >= 56.4.100' -- Found libavdevice , version 58.13.100 -- Checking for module 'libavformat' -- Found libavformat, version 58.76.100 -- Checking for module 'libavcodec' -- Found libavcodec, version 58.134.100 -- Checking for module 'libavutil' -- Found libavutil, version 56.70.100 -- Searching for component [io] -- Looking for gz-common5-io -- found version 5.3.1 -- Searching for dependencies of gz-common5-io -- Looking for gz-fuel_tools8 -- found version 8.0.1 -- Searching for dependencies of gz-fuel_tools8 -- Checking for module 'jsoncpp' -- Found jsoncpp, version 1.9.5 -- Checking for module 'yaml-0.1' -- Found yaml-0.1, version 0.2.2 -- Checking for module 'libzip' -- Found libzip, version 1.7.3 -- Looking for gz-utils2 -- found version 2.0.0 -- Looking for gz-common5 -- found version 5.3.1 -- Looking for gz-math7 -- found version 7.1.0 -- Looking for gz-msgs9 -- found version 9.3.0 -- Looking for gz-gui7 -- found version 7.0.0 -- Searching for dependencies of gz-gui7 -- Looking for gz-utils2 -- found version 2.0.0 -- Looking for gz-math7 -- found version 7.1.0 -- Looking for gz-common5 -- found version 5.3.1 -- Looking for gz-plugin2 -- found version 2.0.1 -- Looking for gz-transport12 -- found version 12.1.0 -- Looking for gz-rendering7 -- found version 7.2.0 -- Searching for dependencies of gz-rendering7 -- Looking for gz-math7 -- found version 7.1.0 -- Searching for dependencies of gz-math7 -- Looking for gz-utils2 -- found version 2.0.0 -- Searching for component [eigen3] -- Looking for gz-math7-eigen3 -- found version 7.1.0 -- Searching for dependencies of gz-math7-eigen3 -- Looking for gz-common5 -- found version 5.3.1 -- Searching for dependencies of gz-common5 -- Looking for gz-utils2 -- found version 2.0.0 -- Looking for dlfcn.h - found -- Looking for libdl - found -- Searching for component [graphics] -- Looking for gz-common5-graphics -- found version 5.3.1 -- Searching for dependencies of gz-common5-graphics -- Looking for gz-math7 -- found version 7.1.0 -- Searching for component [events] -- Searching for component [geospatial] -- Looking for gz-common5-geospatial -- found version 5.3.1 -- Searching for dependencies of gz-common5-geospatial -- Looking for gz-math7 -- found version 7.1.0 -- Looking for gz-common5 -- found version 5.3.1 -- Looking for gz-plugin2 -- found version 2.0.1 -- Searching for dependencies of gz-plugin2 -- Looking for gz-utils2 -- found version 2.0.0 -- Searching for component [all] -- Looking for all libraries of gz-plugin2 -- found version 2.0.1 -- Looking for gz-plugin2 -- found version 2.0.1 -- Looking for gz-utils2 -- found version 2.0.0 -- Looking for gz-msgs9 -- found version 9.3.0 -- Looking for gz-physics6 -- found version 6.3.0 -- Searching for dependencies of gz-physics6 -- Looking for gz-math7 -- found version 7.1.0 -- Looking for gz-plugin2 -- found version 2.0.1 -- Looking for gz-utils2 -- found version 2.0.0 -- Searching for component [heightmap] -- Looking for gz-physics6-heightmap -- found version 6.3.0 -- Searching for dependencies of gz-physics6-heightmap -- Looking for gz-common5 -- found version 5.3.1 -- Searching for component [mesh] -- Looking for gz-physics6-mesh -- found version 6.3.0 -- Searching for dependencies of gz-physics6-mesh -- Looking for gz-common5 -- found version 5.3.1 -- Searching for component [sdf] -- Looking for gz-physics6-sdf -- found version 6.3.0 -- Searching for dependencies of gz-physics6-sdf -- Looking for sdformat13 -- found version 13.3.0 -- Looking for gz-sensors7 -- found version 7.1.0 -- Searching for dependencies of gz-sensors7 -- Looking for gz-math7 -- found version 7.1.0 -- Looking for gz-common5 -- found version 5.3.1 -- Looking for gz-transport12 -- found version 12.1.0 -- Looking for gz-rendering7 -- found version 7.2.0 -- Looking for gz-msgs9 -- found version 9.3.0 -- Looking for sdformat13 -- found version 13.3.0 -- Searching for component [air_pressure] -- Looking for gz-sensors7-air_pressure -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-air_pressure -- Searching for component [altimeter] -- Looking for gz-sensors7-altimeter -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-altimeter -- Searching for component [imu] -- Looking for gz-sensors7-imu -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-imu -- Searching for component [force_torque] -- Looking for gz-sensors7-force_torque -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-force_torque -- Searching for component [logical_camera] -- Looking for gz-sensors7-logical_camera -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-logical_camera -- Searching for component [magnetometer] -- Looking for gz-sensors7-magnetometer -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-magnetometer -- Searching for component [navsat] -- Looking for gz-sensors7-navsat -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-navsat -- Searching for component [rendering] -- Looking for gz-sensors7-rendering -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-rendering -- Searching for component [lidar] -- Looking for gz-sensors7-lidar -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-lidar -- Looking for gz-sensors7 -- found version 7.1.0 -- Searching for component [gpu_lidar] -- Looking for gz-sensors7-gpu_lidar -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-gpu_lidar -- Looking for gz-sensors7 -- found version 7.1.0 -- Searching for component [camera] -- Looking for gz-sensors7-camera -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-camera -- Looking for gz-sensors7 -- found version 7.1.0 -- Searching for component [boundingbox_camera] -- Looking for gz-sensors7-boundingbox_camera -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-boundingbox_camera -- Searching for component [segmentation_camera] -- Looking for gz-sensors7-segmentation_camera -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-segmentation_camera -- Searching for component [depth_camera] -- Looking for gz-sensors7-depth_camera -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-depth_camera -- Looking for gz-sensors7 -- found version 7.1.0 -- Searching for component [rgbd_camera] -- Looking for gz-sensors7-rgbd_camera -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-rgbd_camera -- Looking for gz-sensors7 -- found version 7.1.0 -- Searching for component [thermal_camera] -- Looking for gz-sensors7-thermal_camera -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-thermal_camera -- Looking for gz-sensors7 -- found version 7.1.0 -- Searching for component [wide_angle_camera] -- Looking for gz-sensors7-wide_angle_camera -- found version 7.1.0 -- Searching for dependencies of gz-sensors7-wide_angle_camera -- Looking for gz-rendering7 -- found version 7.2.0 -- Looking for gz-math7 -- found version 7.1.0 -- Looking for gz-utils2 -- found version 2.0.0 -- Looking for gz-sim7 - found -- RapidJSON found. Headers: /usr/include -- Configuring done -- Generating done -- Build files have been written to: /home/rhys/Code/ardupilot/sim/ardupilot_gazebo/build rhys@ubuntu-jammy:~/Code/ardupilot/sim/ardupilot_gazebo/build$ make [ 16%] Building CXX object CMakeFiles/ArduPilotPlugin.dir/src/ArduPilotPlugin.cc.o [ 33%] Building CXX object CMakeFiles/ArduPilotPlugin.dir/src/Socket.cpp.o [ 50%] Building CXX object CMakeFiles/ArduPilotPlugin.dir/src/Util.cc.o [ 66%] Linking CXX shared library libArduPilotPlugin.so [ 66%] Built target ArduPilotPlugin [ 83%] Building CXX object CMakeFiles/ParachutePlugin.dir/src/ParachutePlugin.cc.o [100%] Linking CXX shared library libParachutePlugin.so [100%] Built target ParachutePlugin rhys@ubuntu-jammy:~/Code/ardupilot/sim/ardupilot_gazebo/build$ gcc --version gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ```

The link error you are getting seems to be a problem with your std library / gcc installation. Your version of gcc is different to the one I have from a standard install - that may be causing runtime library conflicts. All I can suggest is to check that all dependent packages are updated and upgraded. AFAICT there does not appear to be a problem with the plugin on Ubuntu Jammy.

eppravitra commented 1 year ago

Hi @srmainwaring The last commit that I got it to work was 1baf84290a3af63a0ce92bc4d8af2696d5940045. It was right before the upgrade from Fotress to Garden.

Thanks for the suggestion. I'll try to hunt down what's going on with my std library and gcc.

eppravitra commented 1 year ago

Hi @srmainwaring

I got it work! Thank you!

Unfortunately, I have no idea what I did that really got it to work. I think it's because I uninstall all gcc and g++ versions and then reinstall gcc/g++12.

I can confirm that the plugin works for gcc12.

srmainwaring commented 1 year ago

@eppravitra - great to hear. It may have been some stale paths from the previous version of gcc and / or an out of sync cmake cache in the build directory. I've seen similar issues when updating Xcode on macOS - it generally requires an equivalent of sudo apt-get autoremove followed by deleting the build directory to ensure all the old cmake intermediate files are purged.