繁体   English   中英

OpenCV构建错误:找不到libwebp.so

[英]OpenCV build Error: libwebp.so not found

我有一台可以编译代码的两台Arch Linux机器,但是在新的一台机器上,出现以下错误:

:-1: warning: libwebp.so.5, needed by /usr/local/lib/libopencv_imgcodecs.so, not found (try using -rpath or -rpath-link)
/usr/local/lib/libopencv_imgcodecs.so:-1: error: undefined reference to `WebPEncodeBGRA'
/usr/local/lib/libopencv_imgcodecs.so:-1: error: undefined reference to `WebPDecodeBGRAInto'
/usr/local/lib/libopencv_imgcodecs.so:-1: error: undefined reference to `WebPEncodeLosslessBGR'
/usr/local/lib/libopencv_imgcodecs.so:-1: error: undefined reference to `WebPDecodeBGRInto'
/usr/local/lib/libopencv_imgcodecs.so:-1: error: undefined reference to `WebPEncodeLosslessBGRA'
/usr/local/lib/libopencv_imgcodecs.so:-1: error: undefined reference to `WebPGetFeaturesInternal'
/usr/local/lib/libopencv_imgcodecs.so:-1: error: undefined reference to `WebPEncodeBGR'
:-1: error: collect2: error: ld returned 1 exit status

我的.pro文件如下所示:

#-------------------------------------------------
#
# Project created by QtCreator 2015-11-15T16:30:56
#
#-------------------------------------------------

QT       += core gui opengl

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = ColonyCounter
TEMPLATE = app

CONFIG += c++11

INCLUDEPATH += /usr/local/include/opencv
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgcodecs -lopencv_imgproc

SOURCES += main.cpp\
        mainwindow.cpp \
    cellcounter.cpp

HEADERS  += mainwindow.h \
    cellcounter.h

FORMS    += mainwindow.ui

DISTFILES += \
    to-do.txt

我如何链接库或类似的东西,在网络上找不到任何已知信息。 我检查了我的库,发现我没有libwep.so.5,但是没有libwebp.so.6和libwebp.so和libwebp.so.2,但是我不知道如何解决它,请安装libwebp.so .5或更改.pro文件中的内容?

看起来您安装的OpenCV版本想要链接到比已安装的版本(可能是0.5.0-1版)更旧的libwebp版本(特别是包含libwebp.so.5的0.4.4版)。 一些选项是:

  1. 将libwebp降级到0.4.4,并忽略libwebp 0.5.0-1,以避免在以后的升级中恢复原状。 这可能不是最佳选择,但它很容易并且可以工作,除非您拥有其他依赖于0.5.0-1的软件包。
  2. 手动下载并构建0.4.4版本的libwebp,然后将其安装在非标准位置。 在这种情况下,您将需要修改/使用LD_LIBRARY_PATH将opencv指向此处。 这可能是您最简单的最佳选择。
  3. 下载一些最新版本的OpenCV源代码并进行构建。 如果兼容,它将找到并链接到您当前的libwep.so.6。 兼容最新版本的OpenCV(在撰写本文时为3.1.0)。 此选项是最佳选择,但编译OpenCV涉及最多,取决于您要包括的功能可能很琐碎或痛苦。

现在,对您当前标记的解决方案发表评论:强烈建议不要从一个名称到另一个名称建立链接。 在许多情况下,它不会编译,但即使编译,除非二进制文件完全兼容,否则您的应用程序可能会表现出任意和不稳定的行为和/或段错误。 但是,如果它们兼容,则打包程序可能不会更改soname。 如果这是用于学校项目,则可能没问题,但是,如果这是重要的事情,请不要这样做。

希望这可以帮助。

我用一个不太优雅的解决方案解决了这个问题:我刚刚创建了一个符号链接:

$ file libwebp.so.5
libwebp.so.5: symbolic link to libwebp.so.6.0.0

与:

ln /usr/lib/libwebp.so.6 /usr/lib/libwebp.so.5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM