首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ubuntu12.04中openCV程序编译错误"libopencv_core.so.2.4:无法打开共享目标文件:没有这样的文件或目录“

Ubuntu12.04中openCV程序编译错误"libopencv_core.so.2.4:无法打开共享目标文件:没有这样的文件或目录“
EN

Stack Overflow用户
提问于 2012-09-09 09:30:16
回答 5查看 136.1K关注 0票数 58

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

下面是我写的代码:

代码语言:javascript
复制
#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;
}

我使用以下命令行对其进行编译:

代码语言:javascript
复制
g++ DisplayImage.cpp -o DisplayImage `pkg-config opencv --cflags --libs` 

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

代码语言:javascript
复制
./DisplayImage: error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory
EN

回答 5

Stack Overflow用户

发布于 2012-09-09 09:55:26

您还没有将共享库放在加载程序可以找到它的位置。查看/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文件:

代码语言:javascript
复制
/usr/local/opencv/

然后运行

代码语言:javascript
复制
sudo ldconfig -v

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

代码语言:javascript
复制
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

票数 107
EN

Stack Overflow用户

发布于 2013-05-08 17:09:42

为了让它更清楚(并把它放在一起),我必须做上面提到的两件事。

1-创建一个/etc/ld.so.conf.d/opencv.conf文件,并写入你的opencv库所在文件夹的路径。

2-在LD_LIBRARY_PATH ()中包含opencv的.so文件的路径

代码语言:javascript
复制
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv/lib
票数 22
EN

Stack Overflow用户

发布于 2017-07-21 07:24:15

使用以下命令行查找包含共享库libopencv_core.so.2.4的文件夹。

代码语言:javascript
复制
sudo find / -name "libopencv_core.so.2.4*"

然后我得到了结果:

代码语言:javascript
复制
 /usr/local/lib/libopencv_core.so.2.4.

创建一个名为/etc/ld.so.conf.d/opencv.conf的文件,并在其中写入二进制文件为stored.For的文件夹的路径。例如,我将/usr/local/lib/写入我的opencv.conf文件。运行命令行,如下所示。

代码语言:javascript
复制
sudo ldconfig -v

请尝试再次运行该命令。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12335848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档