QtCreator не может найти файл библиотеки lastfm liblastfm.so.1 в Linux

Я делаю проект на C++ для школы, в котором я решил использовать библиотеку LastFM (репозиторий на гитхабе). Я следовал инструкциям и установил его и все зависимости, но когда я поместил LIBS += -llastfm в файл .pro в Qt, как указано в разделе 'Использование liblastfm' из репозитория, Я получаю сообщение об ошибке "Файл liblastfm.so.1 не найден".

Я зашел в папку библиотеки в '/usr/include' (насколько я помню) и нашел три файла:

  1. liblastfm.so
  2. liblastfm.so.1
  3. liblastfm.so.1.0.8

Эти файлы были организованы следующим образом: liblastfm.so — это ссылка на liblastfm.so.1, а liblastfm.so.1 — на liblastfm.so.1.0.8, который на самом деле был файлом библиотеки. Я предполагаю, что они сделали это для простоты обслуживания, когда дело доходит до обновлений, но, насколько я могу судить, QtCreator не знает, как перейти по ссылке, поскольку он находит liblastfm.so, но не может достичь liblastfm.so.1.

Я попытался удалить файлы .so и .so.1, а затем переименовать файл .so.1.0.8 просто в liblastfm.so, но он по-прежнему говорит, что не может найти файл .so.1, что немного сбивает с толку.

Я также попытался добавить библиотеку вручную, щелкнув проект правой кнопкой мыши и выбрав «Добавить библиотеку», но когда я добрался до папки liblastfm, только файл liblastfm.so был распознан как файл библиотеки, и если я его добавил , возникла такая же ошибка.

Итак, любая помощь будет оценена по достоинству!


person Bogdan Raducan    schedule 09.01.2014    source источник
comment
Куда вы установили библиотеки? Не могли бы вы проверить точное местоположение?   -  person lpapp    schedule 10.01.2014
comment
Точное местоположение: /usr/local/lib/i386-linux-gnu/.   -  person Bogdan Raducan    schedule 10.01.2014
comment
Это все еще не решено спустя год??   -  person lpapp    schedule 21.12.2014
comment
Все еще. Я использовал библиотеку MusicBrainz.   -  person Bogdan Raducan    schedule 21.12.2014


Ответы (1)


Основываясь на комментарии об установленном месте, кажется, вам нужно добавить это в файл проекта qmake:

LIBS += -L/usr/local/lib/i386-linux-gnu/ -llastfm

Причина в том, что вы, кажется, установили lastfm в «выборочное» место, которое по умолчанию не находится в пути к библиотеке. Следовательно, вам нужно указать qmake, где искать библиотеки lastfm.

person lpapp    schedule 09.01.2014
comment
Я добавил и все та же ошибка: /home/bogdan/build-lastfm_api_test_v4-Desktop_Qt_5_2_0_GCC_32bit-Debug/lastfm_api_test_v4: error while loading shared libraries: liblastfm.so.1: cannot open shared object file: No such file or directory Press <RETURN> to close this window... - person Bogdan Raducan; 10.01.2014
comment
@BogdanRaducan: что такое lastfm_a‌​pi_test_v4? Можете ли вы предоставить автономный пример, чтобы воспроизвести проблему? - person lpapp; 10.01.2014
comment
lastfm_api_test_v4 — это имя моего проекта. Это стандартная ошибка, выводимая в консоль: имя_проекта: ошибка. Это просто новый проект консольного приложения Qt, в который я ТОЛЬКО пытаюсь включить библиотеку. Я не понимаю, что вы подразумеваете под «самостоятельным примером». - person Bogdan Raducan; 10.01.2014
comment
Хорошо я понял. Автономный пример очень прост. На машине с Linux Mint 16 я создаю новое консольное приложение Qt с именем lastfm_api_test_v4 и в файле .pro У меня есть содержимое файла .pro. - person Bogdan Raducan; 10.01.2014
comment
Я не могу воспроизвести вашу проблему... В любом случае устанавливайте lastfm из вашего менеджера пакетов, а не с помощью пользовательской сборки... - person lpapp; 10.01.2014
comment
давайте продолжим это обсуждение в чате - person Bogdan Raducan; 10.01.2014
comment
Я не очень понимаю, как установить библиотеку lastfm из моего менеджера пакетов. Я просто скачал архив из репозитория github и установил его с помощью cmake. Есть ли другой способ? - person Bogdan Raducan; 10.01.2014
comment
@BogdanRaducan: какой дистрибутив вы используете? - person lpapp; 10.01.2014
comment
Кроме того, зачем включать зависимости ваших зависимостей в ваше приложение? - person lpapp; 10.01.2014
comment
Потому что так сказано в репозитории GitHub. Ваша строка ссылки должна включать следующее: -llastfm -lQtCore -lQtNetwork -lQtXml. Мне нужно это сделать, потому что библиотека использует, например, QtNetwork и не может этого сделать, пока я не включу библиотеку в свой проект. Я использую Linux Mint 16 на 32 бита. - person Bogdan Raducan; 10.01.2014
comment
@BogdanRaducan: ты решил эти мельчайшие детали, которые я не могу понять? - person lpapp; 22.01.2014
comment
нет, я в конце концов подвел его; Помимо проблемы с библиотекой, я обнаружил, что библиотека была специально создана для Qt 4 и включала некоторые библиотеки Qt, которые больше не работали в Qt 5. В любом случае спасибо за помощь до сих пор. - person Bogdan Raducan; 14.02.2014