LINUX.ORG.RU

Qt + odbc компиляция


0

1

Добрый день!

У меня стоит xubuntu 10.4, в ней по умолчанию наверно стоял unixODBC v 2.2.11, а так же я ставил qt 4.6.2

Мне нужно подключиться к MS Sql Server'y из моего проекта

Читаю оф. документацию: http://doc.trolltech.com/4.4/sql-driver.html#qodbc-for-open-database-connecti...

Там написано всего несколько строчек:

How to Build the ODBC Plugin on Unix and Mac OS X

It is recommended that you use unixODBC. You can find the latest version and ODBC drivers at http://www.unixodbc.org. You need the unixODBC header files and shared libraries.

Tell qmake where to find the unixODBC header files and shared libraries (here it is assumed that unixODBC is installed in /usr/local/unixODBC) and run make:

 cd $QTDIR/src/plugins/sqldrivers/odbc
 qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "LIBS+=-L/usr/local/unixODBC/lib -lodbc"
 make

Сначала вроде бы нашел папку с установленным qt:

$cd /usr/share/qt4/plugins/sqldrivers
$ls
libqsqlite.so  libqsqlmysql.so

поискал, что же там такого мне убунта наустанавливала в пакете unixodbc, нашел там только несколько файликов типа

/usr/lib/libgtrtst.so.1
/usr/lib/libgtrtst.so.1.0.0
/usr/lib/libodbc.so.1
/usr/lib/libodbc.so.1.0.0
/usr/lib/libodbccr.so.1
/usr/lib/libodbccr.so.1.0.0
/usr/lib/odbc
/usr/lib/odbc/libnn.so
/usr/lib/odbc/libodbctxt.so
Естественно никаких исходников нет. Попробовал тупо скопировать файлик /usr/lib/libodbc.so.1 в /usr/share/qt4/plugins/sqldrivers, перезапустил qt, естественно ничего не изменилось, выдает ошибку что не подключен драйвер

Ну, то что ftp-шник unixodbc.org лежит, это еще пол беды, кое-как на sourceforg'e нашел исходники, скачал, распаковал в ~/tmp/unixODBC-2.3.0/

Там есть папки include, но нет папки lib

Естественно, папки /usr/share/qt4/plugins/sqldrivers/odbc у меня тоже нет, что туда класть?

Я в тупике, подскажите пожалуйста

unixodbc-dev - библиотеки ODBC для UNIX (файлы для сборки)

Попробуйте поставить этот пакет.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

Да, он у меня тоже установлен. Вроде бы в списке файлов этого пакета указаны какие-то файлы, лежащие в /usr/lib/* & /usr/include

Попробовал сделать следущее - те исходники odbc, которые я скачал с sourceforge, закинул в папку /usr/share/qt4/plugins/sqldrivers/odbc, и попытался запустить

$sudo qmake "INCLUDEPATH+=/usr/include" "LIBS+=-L/usr/lib -lodbc"
Usage: qmake [mode] [options] [files]

QMake has two modes, one mode for generating project files based on
some heuristics, and the other for generating makefiles. Normally you
shouldn't need to specify a mode, as makefile generation is the default
mode for qmake, but you may use this to test qmake on an existing project

Mode:
  -project       Put qmake into project file generation mode
                 In this mode qmake interprets files as files to
                 be built,
                 defaults to *.c; *.ui; *.y; *.l; *.ts; *.xlf; *.qrc; *.h; *.hpp; *.hh; *.hxx; *.H; *.cpp; *.cc; *.cxx; *.C
                 Note: The created .pro file probably will 
                 need to be edited. For example add the QT variable to 
                 specify what modules are required.
  -makefile      Put qmake into makefile generation mode (default)
                 In this mode qmake interprets files as project files to
                 be processed, if skipped qmake will try to find a project
                 file in your current working directory
Warnings Options:
  -Wnone         Turn off all warnings
  -Wall          Turn on all warnings
  -Wparser       Turn on parser warnings
  -Wlogic        Turn on logic warnings
Options:
.............. блаблабла

Что еще этому qmake надо указывать? Блин, «офигенный» мануал на оф.сайте, ничего не скажешь...

Общий принцип-то какой? От меня требуется скомпилить какой-нибудь файлик, называющийся libodbc.so наверно? Может его можно где-то в другом месте взять.. И как потом этот файлик к QtCreator'у подключать, нужно что-то указывать или он автоматически подхватывает? Всем спасибо за ответы, буду рад любому :)

Madaro ()
Ответ на: комментарий от proDOOMman

Ура! Большое спасибо, proDOOMman !!

Поставил этот пакет, перезапустил qtcreator, стал выдавать другую ошибку

Источник данных не найден и не указан драйвер, используемый по умолчанию QODBC3: Unable to connect
Немного погуглил, нашел прекрасный мануал по настройке и, самое главное, проверке коннекта - http://klek.blogspot.com/2008/01/kubuntu-microsoft-sql-server.html

Все настроил как там, в своем проекте прописал

    db.setHostName("192.168.0.4");
    db.setDatabaseName("SQLOnLine");
    db.setUserName("sa");
    db.setPassword("тутмойсуперпароль");
    bool connected = db.open();
    if (!connected) {
        QMessageBox::critical( // Диалог с сообщением об ошибке.
            parent,                      // Родительский виджет.
            QObject::tr("Database Error"),   // Заголовок.
            db.lastError().text());          // Текст сообщения.
    }
и все законнектилось прекрасно без ошибок.

Спасибо!

Madaro ()

В общем, напишу сюда, если вдруг еще кто-нибудь с этим столкнется:

Для того, чтобы скопилировать odbc-плагин для qt надо было скачать все исходники qt4 с оф.сайта: http://qt.nokia.com/downloads/ , затем все как описано в документации: зайти в папка_куда_распаковал_исходники/src/plugins/sqldrivers/odbc , сделать qmake с инклудами тех папок, где лежат файлы, которые установились из пакета uinixodbc-bin (у меня в xubuntu это просто папки /usr/lib и /usr/include), ну и потом скопировать получившийся файлик libqsqlodbc.so в папку где лежат библиотеки qt (у меня в xubuntu это /usr/share/qt4/plugins/sqldrivers/ )

Madaro ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.