ntnu-arl / gbplanner_ros

Graph-based Exploration Planner for Subterranean Environments
BSD 3-Clause "New" or "Revised" License
667 stars 152 forks source link

protobuf issues #11

Closed griz1112 closed 2 years ago

griz1112 commented 2 years ago

Build is failing with this and other errors that are similar. error: no matching function for call to ‘google::protobuf::internal::ArenaStringPtr::GetNoArena(const string*) const’ I looked this up and it seems its a version mismatch from what I have on my machine and the version that you used to develop the software. Which version of protobuf did you use ?

MihirDharmadhikari commented 2 years ago

Hello,

The protobuf version we are using is 3.6.1. Can you tell which version do you have?

Best, Mihir

griz1112 commented 2 years ago

Same version must be something else that isn't correct. Not familiar with it is there a python binding that might be the wrong version?

MihirDharmadhikari commented 2 years ago

Hello,

Can you provide the build output log? Just the log of the package that is failing would be enough.

Best, Mihir

griz1112 commented 2 years ago

It was a mismatch between protobuf compiler and library. All good now. Running it on noetic. I'm totally impressed. Great job and Congratulations on winning the challenge. https://www.youtube.com/watch?v=t1At5Yucvz4

MihirDharmadhikari commented 2 years ago

Thank you very much! Glad to hear that the issue is solved.

jd730 commented 1 year ago

Hello, @griz1112 @MihirDharmadhikari.

I am also having trouble with using protobuf.. both compiler and librrary version seem all 3.6.1.

(base) ~/gbplanner2_ws (master ✘)✭ ᐅ dpkg -l | grep libprotoc
ii  libprotoc-dev:amd64                         3.6.1.3-2ubuntu5.2                  amd64        protocol buffers compiler library (development files)
ii  libprotoc17:amd64                           3.6.1.3-2ubuntu5.2                  amd64        protocol buffers compiler library
(base) ~/gbplanner2_ws (master ✘)✭ ᐅ dpkg -l | grep protobuf 
ii  libprotobuf-dev:amd64                       3.6.1.3-2ubuntu5.2                  amd64        protocol buffers C++ library (development files) and proto files
ii  libprotobuf-lite17:amd64                    3.6.1.3-2ubuntu5.2                  amd64        protocol buffers C++ library (lite version)
ii  libprotobuf17:amd64                         3.6.1.3-2ubuntu5.2                  amd64        protocol buffers C++ library
ii  protobuf-compiler                           3.6.1.3-2ubuntu5.2                  amd64        compiler for protocol buffer definition files
(base) ~/gbplanner2_ws (master ✘)✭ ᐅ 

The error message is below:

Errors     << rotors_gazebo_plugins:cmake /home/jdhwang/gbplanner2_ws/logs/rotors_gazebo_plugins/build.cmake.000.log     
CMake Error at /home/jdhwang/gbplanner2_ws/devel/share/yaml_cpp_catkin/cmake/yaml_cpp_catkinConfig.cmake:173 (message):
  Project 'rotors_gazebo_plugins' tried to find library 'yaml-cpp0.5'.  The
  library is neither a target nor built/installed properly.  Did you compile
  project 'yaml_cpp_catkin'? Did you find_package() it before the
  subdirectory containing its code is included?
Call Stack (most recent call first):
  CMakeLists.txt:163 (find_package)

I also thought that it is related to https://github.com/ethz-asl/rotors_simulator/issues/592 and https://github.com/ethz-asl/rotors_simulator/issues/531. However, the former does not work and the latter is using 3.0.0.

Thank you so much.

For your information, I think I have yaml-cpp

(base) ~/gbplanner2_ws (master ✘)✭ ᐅ sudo apt install ros-noetic-cmake-modules
Reading package lists... Done
Building dependency tree       
Reading state information... Done
ros-noetic-cmake-modules is already the newest version (0.5.0-1focal.20210423.224742).
The following packages were automatically installed and are no longer required:
  evolution-data-server-common fprintd gir1.2-accountsservice-1.0 gir1.2-clutter-1.0 gir1.2-clutter-gst-3.0
  gir1.2-cogl-1.0 gir1.2-coglpango-1.0 gir1.2-gck-1 gir1.2-gcr-3 gir1.2-gdm-1.0 gir1.2-geoclue-2.0
  gir1.2-gnomebluetooth-1.0 gir1.2-graphene-1.0 gir1.2-gst-plugins-base-1.0 gir1.2-gtkclutter-1.0 gir1.2-gweather-3.0
  gir1.2-json-1.0 gir1.2-mutter-6 gir1.2-nm-1.0 gir1.2-nma-1.0 gir1.2-rsvg-2.0 gir1.2-upowerglib-1.0 gnome-shell-common
  libcamel-1.2-62 libebackend-1.2-10 libecal-2.0-1 libedata-cal-2.0-1 libedataserver-1.2-24 libedataserverui-1.2-2
  libfprint-2-2 libpam-fprintd nvidia-firmware-535-server-535.54.03 python3-pymacaroons python3-rfc3339 python3-tz
  switcheroo-control xwayland
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
jd730 commented 1 year ago

It is resolved by reinstalling everything again.

SFakoorian0111 commented 10 months ago

I am in Ubuntu 18.04 and the protobuf version is (libprotoc 3.0.0), I am getting the following error when it tries to build voxblox_ros. Is there any suggestion to resolve this issue? Thanks much

/usr/bin/ld: CMakeFiles/visualize_tsdf.dir/src/visualize_tsdf.cc.o: undefined reference to symbol '_ZN6google8protobuf8internal13empty_string_B5cxx11E' //usr/lib/x86_64-linux-gnu/libprotobuf.so.10: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status make[2]: [/home/sed/gbplanner2_ws/devel/.private/voxblox_ros/lib/voxblox_ros/visualize_tsdf] Error 1 make[1]: [CMakeFiles/visualize_tsdf.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... /usr/bin/ld: CMakeFiles/voxblox_eval.dir/src/voxblox_eval.cc.o: undefined reference to symbol '_ZN6google8protobuf8internal13empty_string_B5cxx11E' //usr/lib/x86_64-linux-gnu/libprotobuf.so.10: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status

MihirDharmadhikari commented 10 months ago

Hello @SFakoorian0111 ,

This seems to be a protobuf mismatch issue. According to this issue on the original voxblox repository, can you try to clone the protobuf_catkin package in your workspace, clean the workspace and build again? Let me know if this solves the issue.

Best, Mihir

SFakoorian0111 commented 10 months ago

Thanks so much @MihirDharmadhikari I did the following steps but i ended to the following error when I catkin build voxblox_ros

  1. sudo apt remove protobuf-compiler
  2. clone protobuf_catkin into ~/my_ws/src/
  3. I changed the CMakeList.txt in the voxblox pkg based on this
  4. I did catkin clean in my ws

CMake Error at /home/sed/gbplanner2_ws/devel/share/protobuf_catkin/cmake/protobuf-generate-cpp.cmake:43 (message): Couldn't find protobuf compiler. Please ensure that protobuf_catkin is properly installed. Checked the following paths: Protobuf_PROTOC_EXECUTABLE-NOTFOUND;;/home/sed/gbplanner2_ws/devel/.private/voxblox/bin/protoc;/opt/ros/melodic/bin/protoc;/usr/include/../bin/protoc Call Stack (most recent call first): /home/sed/gbplanner2_ws/devel/share/protobuf_catkin/cmake/protobuf-generate-cpp.cmake:166 (_find_protobuf_compiler) CMakeLists.txt:20 (PROTOBUF_CATKIN_GENERATE_CPP2)

MihirDharmadhikari commented 10 months ago

Hi @SFakoorian0111 ,

You still need the protobuf compiler. You should reinstall it with sudo apt install protobuf-compiler. Keep in mind that when you uninstalled it, it would have uninstalled some other packages as well. You might need to reinstall them. You don't necessarily need to change the CMakeLists.txt but it is ok, should not be a problem. Install protobuf compiler and try recompiling.

Best, Mihir

SFakoorian0111 commented 10 months ago

@MihirDharmadhikari I reinstalled the protobuf and revert the CMakeLists.txt to the original one and I could build the voxblox_ros. Thank you very much for your help.

MihirDharmadhikari commented 10 months ago

Great to hear that!