2016-01-01 7 views
0

У меня есть две машины Arch Linux на одном я могу скомпилировать мой код, но на мой новый я получаю следующие ошибки:OpenCV Ошибка сборки: libwebp.so не найден

:-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?

ответ

2

Выглядит как версия OpenCV, которую вы установили хочешь ссылку со старой версией libwebp (в частности, версия 0.4.4, которая содержит libwebp.so.5), чем то, что вы установили (вероятно, версия 0.5.0-1). Возможны следующие варианты:

  1. Перейти на версию libwebp до 0.4.4 и игнорировать libwebp 0.5.0-1, чтобы избежать возврата с будущими обновлениями. Это, вероятно, не самый лучший выбор, но это легко и будет работать, если у вас нет других пакетов, которые зависят от 0.5.0-1.
  2. Загрузите и создайте версию libwebp версии 0.4.4 и установите ее в нестандартном месте. В этом случае вам нужно будет изменить/использовать LD_LIBRARY_PATH, чтобы указать opencv. Это, вероятно, самый простой вариант.
  3. Загрузите более новую версию источника OpenCV и создайте его. Он найдет и свяжется с вашим текущим libwep.so.6, если он совместим. Последняя версия OpenCV (на момент написания 3.1.0) совместима. Этот вариант является лучшим вариантом, но наиболее востребованным как компиляция OpenCV может быть тривиальным или болезненным в зависимости от функций, которые вы хотите включить.

Теперь комментарий о вашем отмеченном в настоящий момент решении: Сделать ссылку с одного сона на другой настоятельно не рекомендуется. Во многих случаях он не будет компилироваться, но даже если это произойдет, ваше приложение может проявлять произвольное и неустойчивое поведение и/или segfault, если только двоичные файлы полностью не совместимы. Но если они были совместимы, упаковщик, вероятно, не изменил бы имя. Если это для школьного проекта, вы можете быть в порядке, но если это важно для чего-то важного, не делайте этого.

Надеюсь, это поможет.

+0

Я обновил OpenCV, я думаю, что решил проблему :-) – Con

1

Я решил проблему с не очень элегантным решением: Я только что создал символическую ссылку:

$ 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 
+0

Phewww, 10x человек! Старался обмануть его часами! Теперь это начинается. – WindRider

Смежные вопросы