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

Posted

技术标签:

【中文标题】无法编译第一个 opencv 程序,\'/usr/bin/ld: 找不到 -lcv\'【英文标题】:Can't compile first opencv program, '/usr/bin/ld: cannot find -lcv'无法编译第一个 opencv 程序,'/usr/bin/ld: 找不到 -lcv' 【发布时间】:2012-05-04 16:35:25 【问题描述】:
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。 我在哪里做错了?我该怎么办?

【问题讨论】:

如果你在 64 位系统上,你应该使用-L /usr/local/lib64。无论如何,尝试locate libcv.so 它是 32 位的,locate libcv = /usr/lib/libcv.so.2.1 /usr/lib/libcv.so.2.1.0 OpenCV on ubuntu 11.10的可能重复 【参考方案1】:

从OpenCV网站上发布的changelog可以看出(对于2.2版),从2.2版开始库名已经发生了变化,所以用于链接2.1版的库名不能与2.4版一起编译(即通过-lcv 链接的libcv.so 不是版本> 2.1 的有效库名称,依此类推)。您需要传递属于新版本 OpenCV 的库(已通过 pkg-config 命令列出)。您可以使用pkg-config 在这些行上传递编译器和链接器标志:g++ cv.cpp -o cv $(pkg-config --cflags --libs opencv)。 希望这会有所帮助!

【讨论】:

【参考方案2】:

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

【讨论】:

如何确保 ld 找到新的?【参考方案3】:

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

【讨论】:

以上是关于无法编译第一个 opencv 程序,'/usr/bin/ld: 找不到 -lcv'的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Vue + 电子应用程序中编译 opencv4nodejs

OpenCV VS 2010 C++ CMake

VS(Visual Studio 2012)编译生成OpenCV-64位程序时提示:无法打开包括文件:“opencv2/core/core.hpp”

CMake+MinGW编译OpenCV2.1以后为啥Bin和Lib文件夹是空的

OpenCV 程序无法在 Visual Studio 2010 上编译

我无法在 vista 上使用 VS2010 编译 opencv 示例