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

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

Форум на CrossPlatform.RU _ Qt Разработка баз данных _ Ubuntu.qt 4.6.0 + qt Creator1.3 + mysql. собрать драйвер.

Автор: fe120 6.1.2010, 20:03

Всем доброго времени суток.
И так суть в следующем:
Был скачан http://qt.nokia.com/downloads/sdk-linux-x11-64bit-cpp, были проделаны следующие дейстивия:

chmod u+x qt-sdk-linux-x86_64-opensource-2009.05.bin
./qt-sdk-linux-x86_64-opensource-2009.05.bin

Далее был установлен в папку /home/gudron/qtsdk-2009.05
Тут все прекрасно.

Далее по советам в инете, рекомендуется пересобрать qt, с поддержкой нужного драйвера:
$ cd /home/gudron/qtsdk-2009.05/qt
./configure -qt-sql-mysql -I /usr/include/mysql -L /usr/lib/mysql
make
sudo make install

После чего qt преспокойно устанавливается себе в /usr/local/Trolltech/Qt-4.6.0

Далее настраиваю в Инструменты -> Параметры, путь до qmake: /usr/local/Trolltech/Qt-4.6.0/bin/qmake
Создаю сам проект, QtWidget... в файл *.pro выглядит следующим образом:
TARGET = pass
TEMPLATE = app
QT      +=sql


SOURCES += main.cpp\
        widget.cpp

HEADERS  += widget.h

FORMS    += widget.ui

Далее есть функция:
#include "widget.h"
#include <QtSql>
#include "ui_widget.h"
....
void  Widget::on_acept_clicked(){
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setDatabaseName("kursach");
    db.setUserName("gudron");
    db.setHostName("localhost");
    db.setPassword("123");
    if(!db.open()) ui->lineEdit->setText(db.lastError().text());
    else{
    ui->lineEdit->setText("Connected");
    ui->checkBox->setChecked(true);
}}

Срабатывает функция при нажатии кнопки, коннекты сигналов и слотов приводить не буду.
Да только консоль приложения дает следующее:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QSQLITE2 QODBC3 QODBC QPSQL7 QPSQL
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QSQLITE2 QODBC3 QODBC QPSQL7 QPSQL
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.

Делал так же что рекомендуется на http://doc.crossplatform.ru/qt/4.3.2/sql-driver.html#how-to-build-the-qmysql-plugin-on-windows

Где и как проследит собрался ли драйвер. и правильно ли я его собирал.
Заранее всем спасибо. С наступающим вот вот Рождеством. И прошедшим новым годом. =))

Автор: fe120 6.1.2010, 22:43

что действительно порадовало, это то что после ./configure make && sudo make install проекты в стали компилироваться в разы быстрее...

Автор: fe120 6.1.2010, 23:51

Или хотя бы объясните, как правильно устанавливать qt creator с нуля, и собирать драйвер...

Автор: igor_bogomolov 7.1.2010, 0:26

Цитата(fe120 @ 6.1.2010, 20:03) *
Где и как проследит собрался ли драйвер
В QTDIR/plugings/sqldrivers должен появиться libqsqlmysql.so

Автор: fe120 7.1.2010, 1:58

Цитата(igor_bogomolov @ 7.1.2010, 1:26) *
Цитата(fe120 @ 6.1.2010, 20:03) *
Где и как проследит собрался ли драйвер
В QTDIR/plugings/sqldrivers должен появиться libqsqlmysql.so


gudron@GUDRON:~/qtsdk-2009.05/qt/src/plugins/sqldrivers/mysql$ ls
main.cpp  Makefile  mysql.pro  mysql.pro.user  README


Очевидно не собрался.

у меня собственно вопрос...есть ведь реализация заголовков MySQL для чистого Си и для Си++, одна лежит в /usr/include/mysql, другая /usr/include/mysql++, какую необходимо указывать при
qmake "INCLUDEPATH+=/usr/include/????" "LIBS+=-L/usr/lib/mysql -lmysqlclient_r" mysql.pro


собственно при qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient_r" mysql.pro, получаю следующее:
gudron@GUDRON:~/qtsdk-2009.05/qt/src/plugins/sqldrivers/mysql$ qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient_r" 
mysql.proqt_config.prf:7: include(file) requires one argument.
/home/gudron/qtsdk-2009.05/qt/src/plugins/sqldrivers/mysql/mysql.pro:82: Parse Error ('first: all')
Error processing project file: mysql.pro

Автор: Litkevich Yuriy 7.1.2010, 3:06

строчка

Цитата(fe120 @ 6.1.2010, 23:03) *
./configure -qt-sql-mysql
говорит собрать драйвер как часть Qt, а не в виде плагина (т.е. в нутрь QtSql4). Если ошибок не было при сборке Qt, то значит, что собралось. Только почему не видно в списке доступных драйверов, не знаю.

Было бы лучше собрать как плагин, т.к. он относительно не зависим и его можно пересобирать не трогая Qt.

Цитата(fe120 @ 7.1.2010, 4:58) *
собственно при qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient_r" mysql.pro, получаю следующее:
всё верно, у тебя Qt не сконфигурирована для сборки плагина MySql, нужно удалить всю сборку:
make confclean
а затем конфигурировать и собирать Qt снова

Автор: fe120 7.1.2010, 14:39

Произвел следующее:

cd /home/gudron/qtsdk-2009.05/qt
make confclean
./configure -plugin-sql-mysql -I /usr/include/mysql -L /usr/lib/mysql
make
sudo make install
//жду какое-то время пока выполниться каждая из выше перечисленных команд
cd /home/gudron/qtsdk-2009.05/qt/src/plugins/sqldrivers/mysql
qmake Makefile "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient_r" mysql.pro -o
и ответом последней команды является все тоже:
gudron@GUDRON:~/qtsdk-2009.05/qt/src/plugins/sqldrivers/mysql$ qmake Makefile "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient_r" mysql.pro -o
qt_config.prf:7: include(file) requires one argument.
/home/gudron/qtsdk-2009.05/qt/src/plugins/sqldrivers/mysql/Makefile:82: Parse Error ('first: all')
Error processing project file: Makefile

Может необходимо при ./configure указывать какой либо еще параметр акромя -plugin-sql-mysql

Автор: Litkevich Yuriy 7.1.2010, 14:46

Цитата(fe120 @ 7.1.2010, 17:39) *
Может необходимо при ./configure указывать какой либо еще параметр акромя -plugin-sql-mysql
нет

fe120, покажи свой mysql.pro

Цитата(fe120 @ 7.1.2010, 17:39) *
qmake Makefile "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient_r" mysql.pro -o
эта строка меня смущает, после ключа -o пусто, а поидее там должно быть то, что ты в качестве первого аргумента записал.
Вот мой пример для Firebird'а:
cd %QTDIR%\src\plugins\sqldrivers\ibase
qmake -o Makefile "INCLUDEPATH+=F:\Firebird\Firebird_2_1\include" "LIBS+=F:\Firebird\Firebird_2_1\lib\fbclient.lib" ibase.pro

Автор: fe120 7.1.2010, 15:57

Довольно удивительно, но файл libsqlmysql.so, появляется в каталоге /usr/local/Trolltech/Qt-4.6.0/plugins/sqldrivers, после выполения sudo make install...
и без всяких запусков, qmake из каталога /home/gudron/qtsdk-2009.05/qt/src/plugins/sqldrivers/mysql/
мб, это так сказать улучшение в последней версии qt?? и все необходимое что было указано в при ./configure делается на этапах make и make install
все работает, сижу успешно играюсь, с select count(*) from ? таблиц в бд.
Надеюсь что и дальше все будет успешно. Спасибо за помощь.

Автор: Litkevich Yuriy 7.1.2010, 16:45

fe120, возможно, что обнаружив нужные библиотеки (указанные при конфигурации) configure создаст необходимые цели в make-файлах.
Покрайней мере на виндовозе плагин ODBC собирается автоматом при сборке Qt. Другие я не пробовал на этапе конфигурации подключать

Автор: igor_bogomolov 7.1.2010, 18:03

Цитата(fe120 @ 7.1.2010, 15:57) *
Довольно удивительно, но файл libsqlmysql.so, появляется в каталоге /usr/local/Trolltech/Qt-4.6.0/plugins/sqldrivers, после выполения sudo make install...
и без всяких запусков, qmake из каталога /home/gudron/qtsdk-2009.05/qt/src/plugins/sqldrivers/mysql/

Плагин вы собрали здесь
Цитата
Делал так же что рекомендуется на http://doc.crossplatform.ru/qt/4.3.2/sql-d...ugin-on-windows

Распологается плагин после сборки, как я уже и писал, в директории QTDIR/plugings/sqldrivers, где QTDIR - это путь то qt. В вашем случае это /home/gudron/qtsdk-2009.05/qt. После выполнения sudo make install, плагин был скопирован в /usr/local/Trolltech/Qt-4.6.0/plugins/sqldrivers
:)

Автор: rrmini 16.4.2010, 16:40

делаю так:

CODE

./qt-sdk-linux-x86-opensource-2010.02.bin
cd /home/roman/qtsdk-2010.02/qt
./configure -plugin-sql-mysql -I /usr/include/mysql -L /usr/lib/mysql


получаю следующее:
CODE
...
Creating qmake. Please wait...
make: Цель `first' не требует выполнения команд.
Basic XLib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/roman/qtsdk-2010.02/qt/mkspecs/linux-g++.


Подскажите пожалуйста, чего у меня не хватает ?

Автор: Litkevich Yuriy 16.4.2010, 16:46

Цитата(rrmini @ 16.4.2010, 20:40) *
./configure -plugin-sql-mysql -I /usr/include/mysql -L /usr/lib/mysql
плагин можно собрать не пересобирая Qt. Попробуй просто установить Qt, а затем собрать плагин

Автор: rrmini 16.4.2010, 17:35

Цитата(Litkevich Yuriy @ 16.4.2010, 17:46) *
Цитата(rrmini @ 16.4.2010, 20:40) *
./configure -plugin-sql-mysql -I /usr/include/mysql -L /usr/lib/mysql
плагин можно собрать не пересобирая Qt. Попробуй просто установить Qt, а затем собрать плагин


Установить Qt это не тоже самое :
./qt-sdk-linux-x86-opensource-2010.02.bin


??

Автор: Litkevich Yuriy 16.4.2010, 19:26

Цитата(rrmini @ 16.4.2010, 21:35) *
Установить Qt это не тоже самое :
./qt-sdk-linux-x86-opensource-2010.02.bin


??
видимо да, я не знаю, как сейчас выглядит процесс установки Qt в Лине. Просто после попытки конфигурирования, при том не удачной. Ты уже испортил внутренности Qt, поэтому лучше начать с чистого листа.

Автор: rrmini 17.4.2010, 17:00

Цитата(Litkevich Yuriy @ 16.4.2010, 20:26) *
Цитата(rrmini @ 16.4.2010, 21:35) *
Установить Qt это не тоже самое :
./qt-sdk-linux-x86-opensource-2010.02.bin


??
видимо да, я не знаю, как сейчас выглядит процесс установки Qt в Лине. Просто после попытки конфигурирования, при том не удачной. Ты уже испортил внутренности Qt, поэтому лучше начать с чистого листа.



я тоже об этом думал. интересно, достаточно удалить каталог /home/qtsdk-2010.02/ или нужно еще какие-то действия произвести ?

Автор: Litkevich Yuriy 17.4.2010, 20:59

Цитата(rrmini @ 17.4.2010, 21:00) *
достаточно удалить каталог /home/qtsdk-2010.02/
думаю, что в твоём случае достаточно

Автор: molchanoviv 19.4.2010, 7:26

Цитата(rrmini @ 16.4.2010, 18:35) *
./qt-sdk-linux-x86-opensource-2010.02.bin


Всю тему не читал,но рискну предложить вместо этого выполнить sudo apt-get install qt4-название-пакета. В лине редко возникает острая необходимость собирать Qt или ставить ее с тролльтеховского инсталлятора.

Автор: BRE 19.4.2010, 7:31

В ubuntu в репозитории все еще qt-4.5.x лежит.
Если нужна 4.6, то лучше самому собрать.

Автор: molchanoviv 19.4.2010, 7:42

Ну я не в курсе как в убунте ибо пользуюсь сусей, но спрошу, а что в убунте нет сторонних репозиториев?

Автор: BRE 19.4.2010, 7:45

Цитата(molchanoviv @ 19.4.2010, 8:42) *
Ну я не в курсе как в убунте ибо пользуюсь сусей, но спрошу, а что в убунте нет сторонних репозиториев?

Вот этого я не знаю, сам пользую Fedora. :)

Автор: rrmini 19.4.2010, 9:04

сделал так :

CODE
cd /home/roman/qtsdk-2010.02/bin/
./uninstall


затем установил из репов версию 4.5
собрал Sql Browser. Доступные драйвера : QSQLITE QMYSQL

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