Запустить двоичный файл с определенной версией QT - Невозможно смешать несовместимую библиотеку Qt - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь реплицировать приложение, которое в настоящее время выполняется на физическом сервере Ubuntu, с использованием компьютера с Ubuntu в Virtual Box.Это приложение QT, но на сервере мы запускаем его, используя pm2 из NPM.После установки QT и установки драйверов, необходимых для приложения, я пытался запустить его, но продолжаю сталкиваться с этой ошибкой:

Невозможно смешать несовместимую библиотеку Qt (версия 0x50701) с этой библиотекой (версия 0x50905)

Я унаследовал код от кого-то другого и не хочу менять проект на QT5.9.5, поэтому я пытаюсь запустить с 5.7.1, я следовал инструкциям по другим вопросам, чтобы изменитьверсия QT до 5.7.1, но все равно выдает ту же ошибку при запуске.

Я следовал приведенным здесь инструкциям: https://unix.stackexchange.com/questions/116254/how-do-i-change-which-version-of-qt-is-used-for-qmake

При проверке версии QT с помощью "qmake -v" вв консоль я получаю следующий вывод:

QMake версия 3.0 Использование Qt версии 5.7.1 в /home/sam/Qt5.7.1/5.7/gcc_64/lib

Так что, хотя мне это кажетсякак я использую нужную версию Qt (5.7.1), я все еще получаю проблему несовместимой библиотеки, я очень новичок во всем этом, поэтому извиняюсь, если это глупый вопрос.Если кто-нибудь может сказать мне, что делать, чтобы использовать совместимую библиотеку, это было бы здорово, спасибо.

1 Ответ

0 голосов
/ 01 февраля 2019

Я попытаюсь объяснить это поэтапно!

  1. Каждый полный набор библиотек Qt называется "распределением" Qt.Вы можете получить дистрибутивы Qt из различных источников:

    • Установлен из менеджера пакетов вашей ОС (.deb / .rpm).
    • Из загруженного zip-файла на http://qt.io
    • В качестве клонированного репозитория из git
    • и т. Д.
  2. Некоторые из доступных дистрибутивов Qt будут поставлены предварительно, а некоторые нужно будет собрать из исходников.В любом случае все они будут иметь qmake программу, специфичную для данного конкретного дистрибутива Qt.Эта программа отвечает за сборку программ так, чтобы они связывались с конкретным дистрибутивом Qt, частью которого является qmake.qmake также используется при сборке с QtCreator.

  3. Если у вас есть бинарный файл с одним qmake и вы пытаетесь запустить его на другом компьютере, он может найтинеправильные библиотеки Qt при динамическом линковании и выплевывании ошибок «несовместимой версии Qt».

Существует много решений этой проблемы;

  1. Соберите всеБиблиотеки Qt (мои находятся в /home/myusername/Qt/5.version/gcc_64/lib/*.so) в той же папке, что и исполняемый файл вашей программы.Это позволит убедиться, что они предпочтительнее любой другой версии Qt, которая может находиться в пути вашего динамического компоновщика.
  2. Удалите предоставленную ОС версию (и) Qt.Это не рекомендуется, особенно если их используют другие программы.
  3. Перестройте вашу программу из исходного кода, используя правильный qmake.
...