c++ - ubuntu 12.04 中的 openCV 程序编译错误 "libopencv_core.so.2.4: cannot open shared object file: No such file or directory"

标签 c++ ubuntu opencv g++

我在 ubuntu 12.04 中编译并安装了 openCV 2.4.2。在 /usr/local/include 下我可以看到目录 /usr/local/opencv/usr/local/opencv2

这是我写的代码:

#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc,char **argv)
{
   Mat image;
   image = imread(argv[1],1);

   if(argc != 2 || !image.data)
   {
       cout << "No image data\n";
       return -1;
   }

   namedWindow("Display Image",CV_WINDOW_AUTOSIZE);
   imshow("Display Image",image);
   waitKey(0);
   return 0;
}

我使用这个命令行编译它:

g++ DisplayImage.cpp -o DisplayImage `pkg-config opencv --cflags --libs` 

没有编译时错误,但是当我尝试使用 /DisplayImage code.png 运行生成的二进制文件时,我收到以下错误消息:

./DisplayImage: error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory

最佳答案

您没有将共享库放在加载程序可以找到的位置。查看 /usr/local/opencv/usr/local/opencv2 文件夹,看看它们是否包含任何共享库(以 lib 并且通常以 .so 结尾)。当你找到它们时,创建一个名为 /etc/ld.so.conf.d/opencv.conf 的文件,并将存储库的文件夹的路径写入其中,每行一个。

例如,如果库存储在 /usr/local/opencv/libopencv_core.so.2.4 下,那么我会将其写入我的 opencv.conf 文件:

/usr/local/opencv/

然后运行

sudo ldconfig -v

如果找不到库,请尝试运行

sudo updatedb && locate libopencv_core.so.2.4

在外壳中。如果您在编译 OpenCV 后重新启动,则无需运行 updatedb

引用资料:

关于 Linux 上的共享库:http://www.eyrie.org/~eagle/notes/rpath.html

关于添加 OpenCV 共享库:http://opencv.willowgarage.com/wiki/InstallGuide_Linux

关于c++ - ubuntu 12.04 中的 openCV 程序编译错误 "libopencv_core.so.2.4: cannot open shared object file: No such file or directory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335848/

相关文章:

c - 为什么在 Ubuntu 14.10 中需要按 CTRL+D 两次才能突破 `while ((c=getchar())!=EOF)`?

php - ubuntu 16.04 上的 vtiger php 错误

opencv - 如何使用 Visual Studio 2010 编译带有 ffmpeg 支持的 OpenCV 2.3

python - 是否可以在 Python 中使用 CV_GUI_EXPANDED 标志?

c++ - Qt:按值将自定义对象存储在集合中

c++ - 延迟着色、存储位置或从深度构造它

c - svm_light 的 svm_learn 命令不起作用

C# 如何使用 OpenCV 去除验证码的噪音?

c# - 如何从我的项目中删除不必要的资源?

c++ - 如何使用自定义注册系统注册 dll 并查看导入的 dll 的可执行文件的 PE?