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

shi*_*bly 5 graphics gcc opencv image

g++ cv.cpp -o cv -I /usr/local/include/opencv
    -L /usr/local/lib  -lm -lcv -lhighgui -lcvaux
Run Code Online (Sandbox Code Playgroud)

错误:

/usr/bin/ld: cannot find -lcv
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

码:

#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;
}
Run Code Online (Sandbox Code Playgroud)

这是32位,

locate libcv
/usr/lib/libcv.so.2.1
/usr/lib/libcv.so.2.1.0
Run Code Online (Sandbox Code Playgroud)
`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
Run Code Online (Sandbox Code Playgroud)

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

ano*_*ard 6

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