我有两台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
我如何链接库或类似的东西,没有在网络上找到任何知道的东西。 我检查了我的libs,发现我没有libwep.so.5但libwebp.so.6和libwebp.so以及libwebp.so.2,但我不知道如何修复它,安装libwebp.so .5或更改我的.pro文件中的内容?
答案 0 :(得分:3)
看起来您安装的OpenCV版本想要链接旧版本的libwebp(特别是版本0.4.4,其中包含libwebp.so.5),而不是您安装的版本(可能是版本0.5.0-1)。一些选项是:
现在有关您当前标记的解决方案的评论:强烈建议不要将其从一个soname链接到另一个。在许多情况下,它不会编译,但即使这样,您的应用程序也可能表现出任意和不稳定的行为和/或段错误,除非二进制文件完全兼容。但如果他们兼容,打包者可能不会改变声纳。如果这是一个学校项目,你可能没问题,但如果这是重要的事情,不要这样做。
希望这有帮助。
答案 1 :(得分:2)
我用一个不太优雅的解决方案解决了这个问题: 我刚刚创建了一个符号链接:
$ 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