无法链接到OpenCV的共享库(Linux)

线下面写的问题已经解决,但我面临一个新的相关问题。 与以前略有不同,我正在编译和链接示例OpenCV代码:

g++ facedetect.cpp -o facedetection -I /home/harsh/Downloads/OpenCV-2.0.0/include/opencv/ -L/home/harsh/Downloads/OpenCV-2.0.0/lib/ -lcv -lcxcore -lcvaux -lml -lhighgui 

这不会给出任何错误,但是当我使用运行可执行文件时

 ./facedetection 

我收到此错误:

 ./facedetection: error while loading shared libraries: libcv.so.2.0: cannot open shared object file: No such file or directory 

当我进行符号链接时,使用:

 ln -s libcv.so libcv.so.2.0 

然后错误是:

 ln: failed to create symbolic link 'libcv.so.2.0': File exists 

不知道怎么解决这个问题。

提前致谢..

IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

我正在尝试创建一个示例OpenCV程序的linux可执行文件,该程序将与.so文件动态链接,并将在安装OpenCV的机器上执行,但.so文件将出现在该linux机器上。

我已经搜索了许多关于此的post,但仍然没有成功。

我像这样编译opencv:

 cd OpenCV-2.0.0/ cmake -DBUILD_SHARED_LIBS=ON . make 

然后所有编译的库都在OpenCV-2.0.0 / lib中创建

然后,在samples / c目录中,我这样做了:

 g++ facedetect.cpp -o facedetection -I /home/harsh/Downloads/OpenCV-2.0.0/include/opencv/ -L/home/harsh/Downloads/OpenCV-2.0.0/lib/ -llibcv -llibcxcore -llibcvaux -llibml -llibhighgui 

但错误是:

 /usr/bin/ld: cannot find -llibcv /usr/bin/ld: cannot find -llibcxcore /usr/bin/ld: cannot find -llibcvaux /usr/bin/ld: cannot find -llibml /usr/bin/ld: cannot find -llibhighgui collect2: ld returned 1 exit status 

使用-lcv-lcxcore

要链接到libfoo.so ,标志是-lfoo ,没有lib部分。

如果您的库不在默认运行时库搜索路径中(如何设置/管理它取决于您的操作系统和分发),则需要通知动态链接器它们的位置。 (就像你通过添加-L标志进行编译时必须这样做。)

在Linux上,这是通过设置环境变量LD_LIBRARY_PATH来完成的,例如:

 export LD_LIBRARY_PATH=/home/harsh/Downloads/OpenCV-2.0.0/lib/:$LD_LIBRARY_PATH ./your_app