ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

compiling a project based on OpenCV in ubuntu

asked 2011-11-25 09:11:18 -0600

Belal gravatar image

I have an error when doing cmake [actually rosmake] to my project, I have already installed OpenCV but I have this error:

Linking CXX shared library ../lib/
  /usr/bin/ld: cannot find -lopencv_contrib
  /usr/bin/ld: cannot find -lopencv_legacy
  /usr/bin/ld: cannot find -lopencv_stitching
  /usr/bin/ld: cannot find -lopencv_gpu
  /usr/bin/ld: cannot find -lopencv_objdetect
  /usr/bin/ld: cannot find -lopencv_calib3d
  /usr/bin/ld: cannot find -lopencv_features2d
  /usr/bin/ld: cannot find -lopencv_video
  /usr/bin/ld: cannot find -lopencv_highgui
  /usr/bin/ld: cannot find -lopencv_ml
  /usr/bin/ld: cannot find -lopencv_imgproc
  /usr/bin/ld: cannot find -lopencv_flann
  /usr/bin/ld: cannot find -lopencv_core
  collect2: ld returned 1 exit status
  make[3]: *** [../lib/] Error 1

How to solve it?

edit retag flag offensive close merge delete


The linker cannot find the specified libraries in the linker paths. For more specifics: Your CMake file, manifest.xml, ubuntu and ROS version will help.
dornhege gravatar image dornhege  ( 2011-11-25 09:23:58 -0600 )edit
Also the actual command being executed, i.e. export VERBOSE=1
jbohren gravatar image jbohren  ( 2011-11-25 15:59:25 -0600 )edit
thanks a lot, it works
Belal gravatar image Belal  ( 2011-11-26 00:14:11 -0600 )edit

I got the same problem. How did you solve it?

Astronaut gravatar image Astronaut  ( 2016-05-15 01:44:03 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2013-01-19 23:15:13 -0600

Claudio gravatar image

I suggest you do the following in a shell

$ pkg-config --libs --cflags opencv

Then accurately check the results of the command. If there still are missing libraries (as I think it is the case) then run

$ sudo updatedb
$ locate opencv_core (or any other missing lib)

This ought to tell you where the libraries are. Supposedly though nor the linker and neither pkg-config can find them, so probably they ended up installed in a place that is not on the pkg paths.

To check against this eventuality run


This variable should contain the path to the OpenCV libs, if it is not so you have to add it OR move the libs in /usr/lib as they ought to be.

To proceed with the second solution you just have to do something like

$ sudo cp /root/user/path-to-OpenCV /usr/local/lib

For the first solution you have to edit the bash configuration file for your user

$ nano ~/.bashrc

A text editor will open, scroll to the last line. If you already have a line like

export LD_LIBRARY_PATH=something

than add the path to OpenCV to this line, otherwise create one like so

export LD_LIBRARY_PATH+=:/path/to/OpenCV

Close the shell window, reopen one (ALT+T shortcut) and retry the pkg-config, it should now be able to find your libraries.

edit flag offensive delete link more

Question Tools


Asked: 2011-11-25 09:11:18 -0600

Seen: 5,769 times

Last updated: Jan 19 '13