我在ubuntu12.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
发布于 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
文件:
/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
发布于 2013-05-08 17:09:42
为了让它更清楚(并把它放在一起),我必须做上面提到的两件事。
1-创建一个/etc/ld.so.conf.d/opencv.conf
文件,并写入你的opencv库所在文件夹的路径。
2-在LD_LIBRARY_PATH ()中包含opencv的.so
文件的路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv/lib
发布于 2017-07-21 07:24:15
使用以下命令行查找包含共享库libopencv_core.so.2.4的文件夹。
sudo find / -name "libopencv_core.so.2.4*"
然后我得到了结果:
/usr/local/lib/libopencv_core.so.2.4.
创建一个名为/etc/ld.so.conf.d/opencv.conf
的文件,并在其中写入二进制文件为stored.For的文件夹的路径。例如,我将/usr/local/lib/
写入我的opencv.conf
文件。运行命令行,如下所示。
sudo ldconfig -v
请尝试再次运行该命令。
https://stackoverflow.com/questions/12335848
复制相似问题