openCV程序编译错误“libopencv_core.so.2.4:无法打开共享对象文件:无此类文件或目录”在ubuntu 12.04 [英] openCV program compile error "libopencv_core.so.2.4: cannot open shared object file: No such file or directory" in ubuntu 12.04
问题描述
我在ubuntu 12.04中编译并安装了openCV 2.4.2。在 / usr / local / include
下,我可以看到 / usr / local / opencv
和 / usr / local / opencv2
。
I compiled and installed openCV 2.4.2 in ubuntu 12.04. Under /usr/local/include
I can see the directories /usr/local/opencv
and /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;
}
使用此命令行编译它:
I compiled it using this command line:
g++ DisplayImage.cpp -o DisplayImage `pkg-config opencv --cflags --libs`
没有编译时错误,但是当我尝试运行生成的二进制 / DisplayImage code.png
I得到以下错误消息:
There were no compile time errors, however when I try to run the resulting binary with /DisplayImage code.png
I get the following error message:
./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
的文件,并向其中写入存储库文件夹的路径,每行一个。然后运行
You haven't put the shared library in a location where the loader can find it. look inside the /usr/local/opencv
and /usr/local/opencv2
folders and see if either of them contains any shared libraries (files beginning in lib
and usually ending in .so
). when you find them, create a file called /etc/ld.so.conf.d/opencv.conf
and write to it the paths to the folders where the libraries are stored, one per line. Then run
sudo ldconfig -v
例如,如果库存储在 /usr/local/opencv/libopencv_core.so.2.4
下,那么我会将它写入我的 opencv.conf
档案:
for example, if the libraries were stored under /usr/local/opencv/libopencv_core.so.2.4
then I would write this to my opencv.conf
file:
/usr/local/opencv/
如果找不到库,请尝试运行
If you can't find the libraries, try running
sudo updatedb && locate libopencv_core.so.2.4
。如果您在编译OpenCV后重新启动,则不需要运行 updatedb
。
in a shell. You don't need to run updatedb
if you've rebooted since compiling OpenCV.
参考文献:
关于Linux上的共享库: http://www.eyrie .org /〜eagle / notes / rpath.html
About shared libraries on Linux: http://www.eyrie.org/~eagle/notes/rpath.html
关于添加OpenCV共享库: http://opencv.willowgarage.com/wiki/InstallGuide_Linux
About adding the OpenCV shared libraries: http://opencv.willowgarage.com/wiki/InstallGuide_Linux
这篇关于openCV程序编译错误“libopencv_core.so.2.4:无法打开共享对象文件:无此类文件或目录”在ubuntu 12.04的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!