LINUX.ORG.RU

Линковщик не видит системной библиотеки libQtWebKit

 , , ,


0

1

Собираю Qt-программу для Qt4, которая использует QtWebKit. Система Debian 9.

В системе установлен пакет libqtwebkit4, в его составе есть файлы:

libqtwebkit4: /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4
libqtwebkit4: /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4.10
libqtwebkit4: /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4.10.4

Через файл /etc/ld.so.conf изначально прописана директория:
/usr/lib/x86_64-linux-gnu

При разбирательстве с проблемой кеш тоже обновлял, библиотека видна:
# ldconfig -p | grep QtWeb
        libQtWebKit.so.4 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4

Однако в момент сборки имеется ошибка:
g++ -m64 -Wl,-O1 -shared -Wl,-soname,liblogging_module.so.1 -o liblogging_module.so.1.0.0 
../logging_module/build/release/obj/abstract_worker.o 
../logging_module/build/release/obj/additional_filter_config.o 
...
../logging_module/build/release/obj/qrc_res.o
-L/usr/lib/x86_64-linux-gnu 
-L/usr/lib 
-lQtWebKit 
-lQtSql 
-lQtXml 
-lQtGui 
-lQtCore 
-lpthread
  
/usr/bin/ld: cannot find -lQtWebKit

Вроде бы все для сборки подготовлено, библиотека есть, до нее даже путь в команде сборки прописан -L/usr/lib/x86_64-linux-gnu, но библиотека не видна. Что еще где нужно докрутить, чтобы сборка прошла?

★★★★★

libQtWebKit.so.4

А это файл или линк? Может ссылается не туда?

Deleted ()

Для успешной линковки нужен файл libQtWebKit.so (без четвёрки). Обычно этот файл поставляется в отдельном пакете (-dev или -devel) и представляет собой симлинк на настоящий файл libQtWebKit.so.x.y.z.

d_a ★★★★★ ()
Ответ на: комментарий от d_a

Для успешной линковки нужен файл libQtWebKit.so (без четвёрки). Обычно этот файл поставляется в отдельном пакете (-dev или -devel) и представляет собой симлинк на настоящий файл libQtWebKit.so.x.y.z.

Конечно же я ставил dev-пакеты. В Debian небольшая путанница в названиях: пакет с либами называется libqtwebkit4, а dev-пакет для него libqtwebkit-dev, то есть номер версии потеряли.

Но фишка в другом. Я сам помню, что ставил dev-пакет. В истории отмечено, что dev-пакет установлен. И раньше у меня сборка с WebKit работала. А сейчас пакетная система показывает, что пакет был установлен, но установленного пакета нет:

http://i.piccy.info/i9/35d319662f523564fc80c2b8c3e03a36/1576827403/128271/135...

Поставил заново, линк появился, сборка пошла. Но как это так могло получиться непонятно совсем.

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

В Debian небольшая путанница в названиях: пакет с либами называется libqtwebkit4, а dev-пакет для него libqtwebkit-dev, то есть номер версии потеряли.

Без номера - это виртуальный пакет (или «альтернатива»), реализация которого осуществляется другим пакетом с цифрой. Более одного реального пакета могут предоставить эту библиотеку.

Но как это так могло получиться непонятно совсем.

Ты удалил тот пакет, и виртуальный потерял вместе с ним. Скорее всего игрался с версиями Qt.

LamerOk ★★★★★ ()
Ответ на: комментарий от LamerOk

Ты удалил тот пакет, и виртуальный потерял вместе с ним.

Тогда бы в истории было отмечено, что пакет удалялся, а в истории это не отмечено. Единственный пакет, который был удален - это qt4-bin-dbg, и его удаление в истории отмечено.

Точно так же должно было бы быть отмечено и удаление libqtwebkit-dev, если бы оно было.

Xintrea ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.