moveit: Errors when build moveit from souce

Description

Hello,

I try to build moveit from source, but keep getting errors.

Your environment

  • ROS Distro: [Kinetic]
  • OS Version: Ubuntu 16.04
  • Source kinetic-devel

Steps to reproduce

I followed this tutorial http://moveit.ros.org/install/source/

rosdep update sudo apt-get update sudo apt-get dist-upgrade sudo apt-get install python-wstool python-catkin-tools clang-format-3.8 mkdir -p ~/ws_moveit/src cd ~/ws_moveit/src wstool init . wstool merge https://raw.githubusercontent.com/ros-planning/moveit/kinetic-devel/moveit.rosinstall wstool update rosdep install -y --from-paths . --ignore-src --rosdistro kinetic cd … catkin config --extend /opt/ros/kinetic --cmake-args -DCMAKE_BUILD_TYPE=Release catkin build

Expected behaviour

Build success!

Actual behaviour

/opt/ros/kinetic/lib/libresource_retriever.so:_ undefined reference to `curl_easy_setopt@CURL_OPENSSL_3’

/opt/ros/kinetic/lib/libresource_retriever.so: undefined reference to `curl_easy_cleanup@CURL_OPENSSL_3’

/opt/ros/kinetic/lib/libresource_retriever.so: undefined reference to `curl_easy_init@CURL_OPENSSL_3’

/opt/ros/kinetic/lib/libresource_retriever.so: undefined reference to `curl_global_cleanup@CURL_OPENSSL_3’

/opt/ros/kinetic/lib/libresource_retriever.so: undefined reference to `curl_easy_perform@CURL_OPENSSL_3’

/opt/ros/kinetic/lib/libresource_retriever.so: undefined reference to `curl_global_init@CURL_OPENSSL_3’

collect2: error: ld returned 1 exit status make[2]: *** [devel/lib/moveit_setup_assistant/collisions_updater] Error 1 make[1]: *** [CMakeFiles/moveit_setup_assistant_updater.dir/all] Error 2 make: *** [all] Error 2

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Comments: 19 (6 by maintainers)

Commits related to this issue

Most upvoted comments

+1 same error

I had the same issue (it is a dependency issue: curl-openssl version). I solved it by removing curl-openssl that was installed inside Anaconda2.

Thanks @arrfou90! After deactivating the conda base environment it worked!

I am having a similar problem. I am building Moveit from source on Ubuntu 20.04, which has to use ROS distro Noetic. The errors I got are almost the same as the original description except that the references missing have a suffix of CURL_OPENSSL_4 instead of CURL_OPENSSL_3. A possible clue:

$ readelf -Ws /opt/ros/noetic/lib/libresource_retriever.so | grep curl_global_cleanup
5: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND curl_global_cleanup@CURL_OPENSSL_4 (3)
$ readelf -Ws /lib/x86_64-linux-gnu/libcurl.so.4 | grep curl_global_cleanup
512: 0000000000030b40    55 FUNC    GLOBAL DEFAULT   15 curl_global_cleanup@@CURL_OPENSSL_4

note how the referee and referrer are different by the number of '@'s.

I have confirmed which libcurl.so the building process is using by renaming one of the and seeing whether the compiler issues a ‘No file or directory’ error. It is using /lib/x86_64-linux-gnu/libcurl.so.4 in my environment.

I had the same issue (it is a dependency issue: curl-openssl version). I solved it by removing curl-openssl that was installed inside Anaconda2.

This is probably because some ROS packages are built under conda environment. And the required python interpreter by the ROS packages are specified to the python interpreter under conda directory. And in this case, some librarys might be misled to the libs under conda directory.

I had the same issue (it is a dependency issue: curl-openssl version). I solved it by removing curl-openssl that was installed inside Anaconda2.