Вопрос или проблема
В настоящее время я пытаюсь начать проект в Qt на недавно установленном ноутбуке с Ubuntu и получаю много ошибок, связанных с одной конкретной библиотекой под названием PLY (формат файла многоугольника).
Интересно, что у меня уже были установлены два файла .so в /usr/lib/x86_64-linux-gnu под названиями libply.so.5 и libply.so.5.0.0.
Проблема возникает, как я понимаю, из-за того, что компоновщик не находит базовый файл libply.so.
Я попробовал сгенерировать его, вызвав
sudo ln -s /usr/lib/x86_64-linux-gnu/libply.so.5 /usr/lib/x86_64-linux-gnu/libply.so
и установив ссылку на libply.so на libply.so.5 .
К сожалению, это не разрешило 167 возникающих ошибок, все из которых звучат очень похоже:
“FilePLY.cpp: undefined reference to ply_something
“
Ах, добавление библиотеки в .pro файл осуществляется добавлением пути к ней через команду LIBS += и добавлением этой библиотеки как -lply.
Кто-нибудь из вас знает, как я мог бы установить его каким-либо образом? Я искал довольно долго, даже спрашивал у ChatGPT, который предложил только клонировать устаревшие репозитории git…
Я благодарен за любые советы! Спасибо!
Ответ или решение
Для решения вашей проблемы, связанной с библиотекой PLY при работе над проектом в Qt на Linux Mint 22, давайте рассмотрим ваши действия и выявим возможные пути решения.
Теория
Проблема, которая у вас возникает, связана с находящимися в системе динамическими библиотеками. В частности, ваша система не может найти и связать библиотеку libply.so
, несмотря на то, что вы создали символическую ссылку. Это может происходить по ряду причин:
-
Отсутствие требуемых символов: Даже при наличии
libply.so.5
на вашей системе, возможно, она не содержит ожидаемых символов, таких какply_something
, которые вам требуются. -
Ошибочное создание символической ссылки: Создание символической ссылки на версию библиотеки не всегда решает проблему, поскольку она должна обеспечивать не только наличие библиотеки, но и правильную версию API, которая поддерживает все необходимые функции.
Пример
Ваша текущая команда создает символическую ссылку, чего, как оказалось, недостаточно для решения проблемы. Попробуем найти более устойчивый подход:
sudo ln -s /usr/lib/x86_64-linux-gnu/libply.so.5 /usr/lib/x86_64-linux-gnu/libply.so
Применение
-
Перепроверьте библиотеку: Убедитесь, что версия
libply.so.5
действительно содержит все необходимые вам символы. Выполните командуnm -D /usr/lib/x86_64-linux-gnu/libply.so.5 | grep ply_something
для проверки наличия символов. -
Установите нужный пакет: Проверьте, что у вас установлен правильный пакет. Обычно, библиотеки в формате
lib<name>.so
устанавливаются с dev-пакетами. Попробуйте установить dev-пакет:sudo apt-get install libplymouth-dev
Примечание: Название пакета может различаться в зависимости от конкретной реализации PLY в вашей системе. Используйте
apt-cache search ply
для поиска возможных пакетов. -
Проверьте путь библиотеки: Убедитесь, что в вашей
.pro
-файле правильно указан путь и имя библиотеки. Правильная строка может выглядеть так:LIBS += -L/usr/lib/x86_64-linux-gnu -lply
-
Добавление директории библиотеки в путь: Если после установки dev-пакета проблема сохраняется, добавьте путь к библиотеке в
LD_LIBRARY_PATH
:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu
Эти шаги помогут диагностировать и, возможно, устранить причину вашей проблемы. Если после выполнения всех рекомендаций проблема не решится, стоит пересмотреть совместимость версии вашего проекта с текущей версией библиотеки или рассмотреть возможность использования альтернативных решений или обновлений.