Добрый день.
Запускаю скомпилированную программу из среды QtCreator. Приложение ругается на отсутствие драйвера QOCI. Я в папку с проектом кидаю папку sqldrivers из /opt/Qt5.10.0/5.10.0/gcc_64/plugins. Программа запускается и тут же вылетает.
В терминале сообщение:
[console]Cannot mix incompatible Qt library (version 0x50a00) with this library (version 0x50a01)
Аварийный останов
[/console]
Ldd выдаёт следующее:
[console]linux-vdso.so.1 (0x00007fffbcdbb000)
libQtZint.so => /lib/libQtZint.so (0x00007f85ea9d5000)
libQt5PrintSupport.so.5 => /usr/lib/x86_64-linux-gnu/libQt5PrintSupport.so.5 (0x00007f85ea764000)
libQt5Widgets.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007f85e9f00000)
libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007f85e9778000)
libQt5Sql.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Sql.so.5 (0x00007f85e952f000)
libQt5Xml.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5 (0x00007f85e92f2000)
libQt5Script.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Script.so.5 (0x00007f85e8e5d000)
libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f85e8766000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007f85e84da000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f85e82bd000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f85e7f3b000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f85e7c35000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f85e7a1e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f85e767f000)
libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f85e744c000)
libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f85e71b7000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f85e6f9d000)
libicui18n.so.57 => /usr/lib/x86_64-linux-gnu/libicui18n.so.57 (0x00007f85e6b21000)
libicuuc.so.57 => /usr/lib/x86_64-linux-gnu/libicuuc.so.57 (0x00007f85e6779000)
libpcre2-16.so.0 => /usr/lib/x86_64-linux-gnu/libpcre2-16.so.0 (0x00007f85e650a000)
libdouble-conversion.so.1 => /usr/lib/x86_64-linux-gnu/libdouble-conversion.so.1 (0x00007f85e62f8000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f85e60f4000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f85e5de0000)
/lib64/ld-linux-x86-64.so.2 (0x000056acba64e000)
libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f85e5bac000)
libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f85e58f6000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f85e5647000)
libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f85e541a000)
libicudata.so.57 => /usr/lib/x86_64-linux-gnu/libicudata.so.57 (0x00007f85e399d000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f85e3728000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f85e33e8000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f85e31d6000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f85e2fad000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f85e2da9000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f85e2ba3000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f85e298c000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f85e2784000)
[/console]
Получается, что у меня приложение подтягивает динамические либы из /usr/lib.
Почитал на форумах, что надо править переменную LD_LIBRARY_PATH.
Я не очень понял как это сделать, но если я её поменяю, то другие приложения, которые идут в поставке с дистрибутивом могут же перестать работать, так как собраны под более старой версией QT?
В Windows я решил бы эту проблему путём простого копирования динамических либ рядом с исполняемым файлом. А что мне делать под Astra (он же Debian 7)?
Помогите с развёртыванием приложения. Какой самый простой выход в моей ситуации?
Спасибо.
LinuxForum.Fans
Развёртка Qt-приложения на Astra.
Автор: ivan_tiran
4 сообщений
869 просмотров
Судя по первому сообщению программа предполагает использовать свои библиотеки.
Не найдя в собственных папках нужной версии библиотек, она пытается их брать из системы.
Но так как в системе другая версия то и получается ошибка.
Схожая проблема решается примерно так:
https://askubuntu.com/questions/534415/cannot-mix-incompatible-qt-library
Запускать софтину вот так:Почитал на форумах, что надо править переменную LD_LIBRARY_PATH.
Я не очень понял как это сделать,
[console=user]LD_LIBRARY_PATH=/path/to/libs my_program[/console]
Здесь это можно решить так-же, но чтобы не разводить мусорник в файловой системе лучше таки играться с LD_LIBRARY_PATHВ Windows я решил бы эту проблему путём простого копирования динамических либ рядом с исполняемым файло
Запускать софтину вот так:[quote="ivan.tiran"]Почитал на форумах, что надо править переменную LD_LIBRARY_PATH.
Я не очень понял как это сделать,
[console=user]LD_LIBRARY_PATH=/path/to/libs my_program[/console]
Здесь это можно решить так-же, но чтобы не разводить мусорник в файловой системе лучше таки играться с LD_LIBRARY_PATH[/quote]В Windows я решил бы эту проблему путём простого копирования динамических либ рядом с исполняемым файло
Спасибо, завтра попробую на работе.
Добавлено: 06.08.2019 18:53:13
Судя по первому сообщению программа предполагает использовать свои библиотеки.
Не найдя в собственных папках нужной версии библиотек, она пытается их брать из системы.
Но так как в системе другая версия то и получается ошибка.
Схожая проблема решается примерно так:
https://askubuntu.com/questions/534415/cannot-mix-incompatible-qt-library
Интернета нет на работе. Попробую вариант коллеги.
Добавлено: 07.08.2019 12:55:51
Спасибо работает!
Войдите или зарегистрируйтесь, чтобы ответить.