2011-11-25 94 views
0

我在项目中运行CMake(实际上是rosmake)时收到错误消息。我已经安装了OpenCV,但出现以下错误:在Ubuntu中编译基于OpenCV和ROS的项目

Linking CXX shared library ../lib/libCornerHelper.so 
    /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/libCornerHelper.so] Error 1 

有没有人知道如何解决这个问题?

+1

听起来像你在安装OpenCV后没有运行'ldconfig'。或者,安装OpenCV的路径不在'ld.so.conf'中。 – mevatron

回答

2

显然,他找不到opencv来链接您的项目。你把它安装在/ usr或/ usr/local以外的其他地方吗?

如果是这样,则需要将路径添加到LD_LIBRARY_PATH变量等。 您的系统在运行时会说什么?

pkg-config --cflags --libs opencv 

如果你得到这样的东西,那么你的系统是好的。

-I/opt/opencv/include/opencv -I/opt/opencv/include -L/opt/opencv/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann 

,但如果你不这样做,你的系统是不是能够找到它和cmake的不会找到它要么:

Package opencv was not found in the pkg-config search path. Perhaps you should add the directory containing `opencv.pc' to the PKG_CONFIG_PATH environment variable No package 'opencv' found 
0

如果您在使用ROS OpenCV的,相应的链接标志和如果您已在manifest.xml文件中声明了对opencv2的依赖关系,则应该自动选择路径。

如果您仍然有问题,我建议您搜索ROS Answers,如果您没有找到任何东西,请在那里提出您的问题。这是官方ROS支持论坛,可能会让你更好地回答ROS特定的问题,而不是StackOverflow。