无法编译第一个opencv程序,'/ usr / bin / ld:找不到-lcv'

时间:2012-05-04 16:35:25

标签: image gcc graphics opencv

g++ cv.cpp -o cv -I /usr/local/include/opencv
    -L /usr/local/lib  -lm -lcv -lhighgui -lcvaux

错误:

/usr/bin/ld: cannot find -lcv
collect2: ld returned 1 exit status

代码:

#include <cv.h>
#include <ml.h>
#include <cxcore.h>
//#include <cxtypes.h>
#include <highgui.h>

int main(int argc, char* argv[])
{
    IplImage* img = cvLoadImage( "bal.png" );
    cvNamedWindow( "Example1", CV_WINDOW_AUTOSIZE );
    cvShowImage("Example1", img);
    cvWaitKey(0);
    cvReleaseImage( &img );
    cvDestroyWindow( "Example1" );
    return 0;
}

这是32位,

locate libcv
/usr/lib/libcv.so.2.1
/usr/lib/libcv.so.2.1.0

`pkg-config --cflags --libs opencv`

-I/usr/local/include/opencv
-I/usr/local/include  /usr/local/lib/libopencv_calib3d.so
/usr/local/lib/libopencv_contrib.so /usr/local/lib/libopencv_core.so
/usr/local/lib/libopencv_features2d.so /usr/local/lib/libopencv_flann.so
/usr/local/lib/libopencv_gpu.so /usr/local/lib/libopencv_highgui.so
/usr/local/lib/libopencv_imgproc.so /usr/local/lib/libopencv_legacy.so
/usr/local/lib/libopencv_ml.so /usr/local/lib/libopencv_nonfree.so
/usr/local/lib/libopencv_objdetect.so /usr/local/lib/libopencv_photo.so
/usr/local/lib/libopencv_stitching.so /usr/local/lib/libopencv_ts.so
/usr/local/lib/libopencv_video.so /usr/local/lib/libopencv_videostab.so

在/ usr / local中安装了OpenCV-2.4.0,我还有一个系统python-opencv。 我在哪里做错了?我该怎么办?

3 个答案:

答案 0 :(得分:6)

从OpenCV站点上发布的changelog(版本2.2)可以看出,库名称已从版本2.2开始更改,因此用于链接版本2.1的库名称不能用于编译版本2.4(即通过libcv.so链接的-lcv不是版本&gt; 2.1的有效库名称,因此如此)。您需要传递属于新版本OpenCV(已通过pkg-config命令列出)的库。您可以使用pkg-config来传递编译器&amp;链接器标记这些行上的内容:g++ cv.cpp -o cv $(pkg-config --cflags --libs opencv)
希望这有帮助!

答案 1 :(得分:1)

您在/usr/lib中有2.1版,而新安装的版本2.4在/usr/local/lib,需要修复它并确保lib ld找到的是您编译/链接的版本

答案 2 :(得分:0)

我遇到了与opencv 2.4类似的问题,这是一个兼容性问题。如果要使用最新版本,请删除以前版本的opencv,以避免在编译时出现此问题或lib位置的问题。