我有一台可以编译代码的两台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版)。一些选项是:
现在,对您当前标记的解决方案发表评论:强烈建议不要从一个名称到另一个名称建立链接。在许多情况下,它不会编译,但即使编译,除非二进制文件完全兼容,否则您的应用程序可能会表现出任意和不稳定的行为和/或段错误。但是,如果它们兼容,则打包程序可能不会更改soname。如果这是用于学校项目,则可能没问题,但是,如果这是重要的事情,请不要这样做。
希望这可以帮助。
关于linux - OpenCV构建错误: libwebp.so not found,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34559185/