libopencv_imgcodecs.so.3.2:无法打开共享对象文件:没有那个文件或目录。

6

我知道以前有类似的问题被问过,但是那些建议都没有帮到我。

我正在尝试在Ubuntu 15.10中使用C++编译OpenCV项目。在Netbeans中,我可以正确地运行该项目。但我应该将其发送给使用命令行的某人。我可以使用以下命令行编译程序:

 g++ -ggdb -o convert *.cpp  \`pkg-config --cflags --libs opencv\`

convert是可执行文件的名称。执行这行代码后没有任何问题。但是,当我运行./convert "image1.tif" "image2.tif"时,出现以下错误:

  ./convert: error while loading shared libraries: libopencv_imgcodecs.so.3.2: cannot 
open shared object file: No such file or directory

在我的.cpp文件中,我有:

#include "/usr/local/include/opencv2/highgui/highgui.hpp"

文件libopencv_imgcodecs.so.3.2位于我的/usr/local/lib文件夹中。我试图在命令行中加入-L/usr/local/lib,但这并没有帮助。也许这个文件路径在命令行中需要按照特定的顺序?对于pkg-config --cflags --libs opencv,顺序很重要,必须在-o convert *.cpp之后。


3
我在这里找到了答案:http://answers.opencv.org/question/6732/missing-shared-library/我必须将以下内容添加到.bashrc文件中:export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib - Inquisitor
2个回答

3

为了方便起见,正如第一条评论所说,您只需要:

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib

如果你的 CMAKE_INSTALL_PREFIX=/usr/local

1

您的 libopencv_imgcodecs.so 没有正确链接。您可以通过使用 ldd 来检查:

$ ldd ./convert
/path/to/program/convert:
        ...
        libopencv_imgcodecs.so.3.2 => not found
        libopencv_imgproc.so.3.2 => not found
        libopencv_core.so.3.2 => not found
        ...

你可以找到 libopencv_imgcodecs.so 的安装位置:
$ find / -type f -name libopencv_imgcodecs.so.3.2
/usr/local/lib/libopencv_imgcodecs.so.3.2

将此目录保存到LD_LIBRARY_PATH变量中。

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接