Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Разработка баз данных _ Добавить драйвер QPSQL

Автор: pwp2008 19.5.2015, 18:46

Получили системный блок с предустановленными МСВС и Qt-4.6, но в Qt нет
драйвера QPSQL, есть только QSQLITE. Можно ли его (QPSQL)туда добавить
без переустановки Qt-4.6 и, если можно, то как это сделать.
Частичная проблема еще в том, что нет дистрибутива Qt-4.6, а есть Qt-4.5.0,
но из него нужен только драйвер QPQSL.
2. Или нужно ставить Qt-4.5.0 полностью и на ней работать?

Автор: rich 20.5.2015, 21:08

Цитата(pwp2008 @ 19.5.2015, 18:46) *
Получили системный блок с предустановленными МСВС и Qt-4.6, но в Qt нет
драйвера QPSQL, есть только QSQLITE. Можно ли его (QPSQL)туда добавить
без переустановки Qt-4.6 и, если можно, то как это сделать.
Частичная проблема еще в том, что нет дистрибутива Qt-4.6, а есть Qt-4.5.0,
но из него нужен только драйвер QPQSL.
2. Или нужно ставить Qt-4.5.0 полностью и на ней работать?

<<< Можно ли его (QPSQL)туда добавить
Можно.
<<< если можно, то как это сделать
Собрать libqsqlpsql.so и положить рядом с libqsqlite.so.
<<< Частичная проблема еще в том, что нет дистрибутива Qt-4.6, а есть Qt-4.5.0
Как нет? https://download.qt.io/archive/qt/4.6/ 4.6.*
<<< Или нужно ставить Qt-4.5.0 полностью и на ней работать?
Это спросите у тех от кого получаете задание на разработку.

Автор: pwp2008 21.5.2015, 18:58

Цитата
<<< Можно ли его (QPSQL)туда добавить
Можно.
<<< если можно, то как это сделать
Собрать libqsqlpsql.so и положить рядом с libqsqlite.so.

2rich: Видите ли, я так и сделал практически сразу, поскольку на другой ПЭВМ уже стоял Qt_4.5
и драйвер QPSQL там был и определялся. Взял оттуда libqsqlpsql.so и положил в plugin/sqldrivers
вместе с libqsqlite.so. К сожалению, среди доступных драйверов он не появляется....
Почти неделю пробовал в разных вариантах - не видит QPSQL. Может и сборку нужно делать
непосредственно в том Qt, в который я и хочу его добавить, но по причине отсутствия sql.pro
Qt-4.6 так пока не делал.

<<< Частичная проблема еще в том, что нет дистрибутива Qt-4.6, а есть Qt-4.5.0
Как нет? https://download.qt.io/archive/qt/4.6/ 4.6.*

За ссылку спасибо, видимо пригодится.

Автор: wiz29 21.5.2015, 19:54

возможно проблема в rpath той so которую вы взяли с другой машины.

Автор: rich 21.5.2015, 20:02

Цитата(pwp2008 @ 21.5.2015, 18:58) *
Может и сборку нужно делать
непосредственно в том Qt, в который я и хочу его добавить

Так и надо. libqsqlpsql.so из Qt_4.5 в Qt_4.6 не будет виден.
Ещё нужно что бы драйвер (или QT полностью) сибирались в режиме релиза либо всё в режиме отладки и программа которая будет использовать драйвер тоже собиралась в том же режиме.

Автор: pwp2008 22.5.2015, 17:51

Цитата(wiz29 @ 21.5.2015, 19:54) *
возможно проблема в rpath той so которую вы взяли с другой машины.

Пока не понял, а что разве путь может быть зашит внутри этой библиотеки с драйвером?

Цитата(rich @ 21.5.2015, 20:02) *
>>Может и сборку нужно делать
>>непосредственно в том Qt, в который я и хочу его добавить
Так и надо. libqsqlpsql.so из Qt_4.5 в Qt_4.6 не будет виден.
Ещё нужно что бы драйвер (или QT полностью) собирались в режиме релиза либо всё в режиме отладки и программа которая будет использовать драйвер тоже собиралась в том же режиме.

Про режимы - понятно. Не совсем пока въезжаю, как мне эту доустановку только драйвера сделать...
Ранее пытался сделать такой файл из полного Makefile для всего Qt, но редактирование Makefile не для простых людей..Может как то использовать Makefile из директории установки ....src/sql. Ведь там и sql.pro файл имеется.
В общем, если есть что подсказать на эту тему - уж пожалуйста.

Автор: rich 22.5.2015, 22:52

Цитата(pwp2008 @ 22.5.2015, 17:51) *
Не совсем пока въезжаю, как мне эту доустановку только драйвера сделать...

Выше же определились.

1. Качаете qt 4.6.
2. Собираете Qt 4.6 с драйвером qsqlpsql или отдельно проект qt-everywhere-opensource-src-4.6.0/src/plugins/sqldrivers/psql
3. Переносите libqsqlpsql.so на целевую ПЭВМ

Автор: pwp2008 23.5.2015, 9:51

Цитата(rich @ 22.5.2015, 22:52) *
Цитата(pwp2008 @ 22.5.2015, 17:51)
Не совсем пока въезжаю, как мне эту доустановку только драйвера сделать...
Выше же определились.

1. Качаете qt 4.6.
2. Собираете Qt 4.6 с драйвером qsqlpsql или отдельно проект qt-everywhere-opensource-src-4.6.0/src/plugins/sqldrivers/psql
3. Переносите libqsqlpsql.so на целевую ПЭВМ

Ну да, я так и делаю, только собираю Qt-4.5.0 и пытаюсь добавить к /plugins/sqldriver libqsqlpsql.so
правда для других версий : то 4, то 4.6 . Этот драйвер те системы не видят.
В понедельник попробую тоже самое с Qt 4.6
Дома собрал Qt-4.5 с драйвером psql, но добавил в ./configure опцию -no-rpath(для эксперимента).
Так библиотека драйвера в plugin появилась, а пересобранная моя программа его не видит.
В проектах, открытых в Qt начал появляться файл (или корень дерева) qtconfig.
Однако исполняемые файлы, собранные в предыдущей Qt-4.5 находят этот драйвер. Функцию -no-rpath , конечно, я еще для себя не уяснил.
И еще, можно чуть подробнее про второй вариант сборки : "или отдельно проект qt-everywhere-opensource-src-4.6.0/src/plugins/sqldrivers/psql" . Т. е. мне вытащить из полного Qt source директорию
src-4.6.0/src/plugins/sqldrivers/psql и выполнить qmake или make ?
Или таким же образом выполнить вышестоящий проект sql.pro - ведь там еще все собирается вместе с /kernel и /models.

Автор: rich 23.5.2015, 11:01

Цитата(wiz29 @ 21.5.2015, 19:54) *
возможно проблема в rpath той so которую вы взяли с другой машины.

pwp2008, в терминале наберите:
ldd libqsqlite.so > ldd-libqsqlite.so

Сделать это нужно в каталоге где находится libqsqlite.so.
Появится файл ldd-libqsqlite.so. Покажите его содержимое.

Цитата(pwp2008 @ 23.5.2015, 9:51) *
Qt-4.5.0 и пытаюсь добавить к /plugins/sqldriver libqsqlpsql.so
правда для других версий : то 4, то 4.6

Поправьте меня кто нидудь, если это не так. Вроде версия должна полностью совпадать.
Цитата(pwp2008 @ 23.5.2015, 9:51) *
И еще, можно чуть подробнее про второй вариант сборки

Не надо ничего вытаскивать пусть там и находится, переходите в src-4.6.0/src/plugins/sqldrivers/psql и выполняете qmake и make.
Цитата(pwp2008 @ 23.5.2015, 9:51) *
Функцию -no-rpath , конечно, я еще для себя не уяснил.

Цитата
# ./configure --help | grep rpath
-no-rpath .......... Do not use the library install path as a runtime
+ -rpath ............. Link Qt libraries and executables using the library

Автор: pwp2008 23.5.2015, 11:52

Цитата(rich @ 23.5.2015, 11:01) *
pwp2008, в терминале наберите:
ldd libqsqlite.so > ldd-libqsqlite.so
Сделать это нужно в каталоге где находится libqsqlite.so.
Появится файл ldd-libqsqlite.so. Покажите его содержимое.

Это после сборки всего Qt c параметром -no-rpath, архив sql_drv.rar инфо по ldd.

>>>Цитата
>>># ./configure --help | grep rpath
>>>-no-rpath .......... Do not use the library install path as a runtime
>>>+ -rpath ............. Link Qt libraries and executables using the library
Да это я читал....



 ldd_libqsqlite.txt ( 749 байт ) : 372
 ldd_libqsqlpsql.txt ( 1.02 килобайт ) : 381
 

Автор: rich 23.5.2015, 13:46

Цитата(pwp2008 @ 23.5.2015, 11:52) *
архив sql_drv.rar

Какой архив?
Сделайте ldd и на ПЭВМ куда переносите libqsqlite.so.

Автор: pwp2008 23.5.2015, 15:47

>>>Цитата(pwp2008 @ 23.5.2015, 11:52)
>>>архив sql_drv.rar
>>>Какой архив?
1. Это я пытался перенести эти файлы в архиве, а форум не позволил. Переименовал файлы в *.txt и приложил к ответу,а текст про архив не убрал.

>>Сделайте ldd и на ПЭВМ куда переносите libqsqlite.so.
2. Драйвер libqsqlite.so. там имеется, он идет по умолчанию, речь идет о Qpsql.
2.1 Той машины под руками сейчас нет, но есть на флэшке те драйвера. Прилагаю ldd к ним, сделанные сейчас.
Qsqlite - родной, QPSQL - добавленный из 4.5.0
В понедельник к вечеру положу ldd с машины с Qt-4.6
-------------------------
3. Пересобрал Qt-4.5.0 без параметра -no-rpath -> драйвера QPSQL и QPSQL7 появились.
Машина дома так себе, пересборка идет 6 часов.

 qsqlite_46_1.txt ( 2.43 килобайт ) : 266
 qpsql_46_1.txt ( 6.54 килобайт ) : 265
 

Автор: rich 23.5.2015, 16:44

Цитата(pwp2008 @ 23.5.2015, 15:47) *
>>Сделайте ldd и на ПЭВМ куда переносите libqsqlite.so.
2. Драйвер libqsqlite.so. там имеется, он идет по умолчанию, речь идет о Qpsql.

Изините, libqsqlpsql.so везде имел ввиду.

Автор: pwp2008 24.5.2015, 21:19

Цитата(rich @ 22.5.2015, 22:52) *
Цитата(pwp2008 @ 22.5.2015, 17:51)
Не совсем пока въезжаю, как мне эту доустановку только драйвера сделать...
Выше же определились.

1. Качаете qt 4.6.
2. Собираете Qt 4.6 с драйвером qsqlpsql или отдельно проект qt-everywhere-opensource-src-4.6.0/src/plugins/sqldrivers/psql
3. Переносите libqsqlpsql.so на целевую ПЭВМ


Похоже это должно пройти. Сконфигурировал Qt_4.5 без драйвера QPSQL, проверил - драйвера нет.
Добавил libqsqlpsql.so к драйверу QSQLITe - видны все драйверы.

Автор: pwp2008 25.5.2015, 19:08

Цитата(rich @ 22.5.2015, 22:52) *
Выше же определились.
1. Качаете qt 4.6.
2. Собираете Qt 4.6 с драйвером qsqlpsql или отдельно проект qt-everywhere-opensource-src-4.6.0/src/plugins/sqldrivers/psql
3. Переносите libqsqlpsql.so на целевую ПЭВМ


Поскольку Вы один мне отвечаете, может перейдем на эл.почту, чтобы не напрягать понапрасну форум.
Есть результаты по установке Qt-4.6. Адрес pwp2008@obninsk.ru

Автор: pwp2008 3.6.2015, 19:23

Цитата(rich @ 22.5.2015, 22:52) *
1. Качаете qt 4.6.
2. Собираете Qt 4.6 с драйвером qsqlpsql
3. Переносите libqsqlpsql.so на целевую ПЭВМ


Итоги : По информации от <rich>:
"Для этого нужно что бы совпали битность, версия QT, версия компилятора и
в целевой системе были необходимые библиотеки, если для драйвера они нужны."

Когда это все совпадает, то драйвер QPSQL переносится просто копированием полученного объекта
libqsqlpsql.so в .../plugins/sqldrivers той Qt, в которую он должен быть добавлен.

Думаю, вопрос закрыт.



Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)