Отсутствие драйвера SQLite в пакете Qt 4 на Linux
Дорого времени суток, работаю на Astra-linux, возникла необходимость в SQLite, драйвер которой ,вроде как, стандартный при установке Qt. Мною были установлены пакеты qt4-default и qtcreator, и в итоге драйвера там не оказалось, но вместе с этими двумя пакетами подтянулся и пакет qt5-default в котором есть данный драйвер. Узнал при помощи QLibraryInfo что qt ищет плагины по следующему пути: usr/lib/x86_64_linux_gnu/qt4/plugins, после этого пытался закинуть туда драйвер из пакета qt5, но безуспешно, qtcreator не видит этот драйвер. Сам qt5 в котором уже есть необходимый драйвер использовать не могу в силу требований. Кто нибудь сталкивался с такой проблемой? Или может кто знает пути решения?. Что я уже перепробовал: закинуть драйвер который лежит в qt5/plugins/sqldrivers/ во все возможные другие папки (например - в корень проекта или usr/lib и т. д.), изменить путь где происходит поиск плагинов использую команды как setLibraryPath и addLibraryPath.
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.Вам це подобається? Поділіться в соціальних мережах!
- Akiv Doros
- 11 листопада 2024 р. 14:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50бали,
- Рейтинг балів-4
- molni99
- 26 жовтня 2024 р. 01:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80бали,
- Рейтинг балів4
- molni99
- 26 жовтня 2024 р. 01:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20бали,
- Рейтинг балів-10
Добрый день.
Ищите, где скачать Qt 4 отдельно.
Из репозитория никто Qt не устанавливает, постоянно какие-то проблемы вылазят вроде ваших.
Решение 1 самое правельно.
Избавится от Astra-linux (она не безопасна и не допилина).
Решение 2
https://github.com/qt/qt
Клоним и билдим с нужными плагинами.
./configure -prefix ~/myNewQt4 -opensource -confirm-license -release -nomake examples -nomake tests -ccache -plugin-sql-sqlite
make -j$nproc
make install
Опции я взял из qt5 так как сам ни разу не билдил 4 й qt. Если они не подойдут поищите на форумах опции для qt4.
Вот тут
Спасибо за ответы, буду пробовать. А от Astra-linux я бы с удовольствием избавился, но нельзя.
@Evgenij Sal'nikov как я тебя понимаю.
расскажите об этом нашим силовикам, они вот не в курсе и с интересом выслушают ваше экспертное мнение.
почему вы используете решение на qt4.x, если в астре 1.6 доступна версия 5.11?
Уже, их не интересует что под капотом.
тут есть огромная кнопка "сообщить об уязвимости", не плохо бы ей воспользоваться. тык
Да мне тоже интересно почему, но сказано qt4, стабильность, и тонна кода написана уже, не один год 4-ый qt используется. Да и астру 1.6 я буквально позавчера поставил. У большинста персонала до сих пор 1.4-1.5
там 5.3 как минимум, но раз уж так, качать отсюда сорцы, а не с гитхаба, и собирать руками.
а клинится ты как будешь ?
на гихабе прямое зерколо, гараздо удобнее.
в случае неуспеха выполнения configure выполнять git clean -xdf; git submodule foreach git clean -xdf
Потому что ее не надо в систему ставить, т.к. пользователи не будут тянуть что-то с гитхаба и устанавливать. Эту библиотеку придется поставлять вместе с прогой. Соответсвенно, эту библиотеку надо билдить и работать с ней как с собственной библиотекой.
make install
установит qt в ~/myNewQt4 так как там префикс стоит в конфигуре
затем делаем так
после этого выполняем
получаем дистрибутив со свежими только необюходимыми библиотеками qt
если боимся за рантайм то выполняем
если нужна еще инсталяшка
если проект из кучи библиотек
Внимание cqtdeployer работает только под астрой 1.6
Итак эта эпопея наконец подошла к концу после двух дней возьни. После того как вы мне подсказали возможные пути решения я пытался их применить, качая сорсы как с git так и с архива сайта qt, собирай их по разному. То у меня после использования make -j$nproc зависало все напроч и вылетало, то ./configure выдавал ошибки bash, то make install выдавал подобные ошибки :ошибка выполнения рецепта для цели obj/release/pcre_exec.o, вообщем крутил я все это как мог. Параллельно ища на просторах интренета, то что я еще не попробовал и наткнулся на следующую тему где написано что если поискать в неком synaptic по тегу qt sqlite то можно узнать о существовании пакета libqt4-sql-sqlite. Так как я пользуюсь linux-образными системами совсем немного, что такое synaptic Я не знаю, поэтому первое что я сделал это написал sudo apt install synaptic в консоле, на что получил ответ что synaptic уже установлен. Следом я загуглил что такое synaptic, и потом следуя аналогии apt написал sudo synaptic install libqt4-sql-sqlite, на что мне открылся менеджер пакетов synaptic. В нем в разределе "Средства разработки" я стал искать данный пакет(libqt4-sql-sqlite), но не нашел, зато нашел пакеты связанные с самим qt и увидел что для qt5 установлен пакет qt5-dev-tools а для qt4 такой пакет не установлен, заподозрив не ладное я стал его устанавливать и первой же строчной увидел, что сейчас будет установлен пакет libqt4-sql-sqlite, ну все думаю дело сделано. Все установилось полез проверять в usr/lib/x86_64_linux_gnu/qt4/plugins и там действительно появилась папка sqldrivers а в ней нужная мне либа. И вот запустив qtcreator и готовый наконец продолжить проект я получил по лицу и снова тот же ворох ошибок, что драйвера нету - база данных не открыта. Посидев минут 10, пересобрав проект пару раз и сделав пару перезагрузок, вспомнил о том что когда мне нужно работать с raw сокетами astra вынуждает меня запускать qtcreator через sudo и в этом случае открывается фантомный qtcreator который нужно настраивать отдельно и который создает для проектов свои файлы с настройками, и вот только после запуска через sudo очистив проект и перезапустив qmake, все наконецто заработало как надо.
Вот честно непонимаю почему до сих пор используют qt4, там же столько всего отсутствует, много фишек и возможностей нету там. То есть используя такое старье приходится много писать самому а не использовать готовое и провереное из 5 версии.
Если бы мне сказали что надо использовать на работе 4 версию не мотивировав такое решение что на такой работе будет много проблем и проще уйти от туда.