Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сборка плагина Firebird для Qt под Ubuntu 12.04
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
academ1c
С добрым.
Имею на борту Ubuntu 12.04. Собрался собрать плагин для огнептицы.
Но появились небольшие заморочки. Так как Qt в системе 4.8.1 для нее
исходников на оф.сайте нет, а есть только для версии 4.8.5.
Скачал исходники, поставил сервер огнептицы из тарбола, тоже выкачал на оф. сайте.
Из репов не стал ставить так как нужна версия 2.1.5
Начал собирать проект, вывалил ошибку.
Привожу ошибку.

root@still:/opt/qt-4.8.5/src/plugins/sqldrivers/ibase# make
g++ -c -m64 -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC -DQT_WEBKIT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtSql -I/usr/include/qt4 -I. -o main.o main.cpp
In file included from main.cpp:44:0:
../../../sql/drivers/ibase/qsql_ibase.h:47:46: фатальная ошибка: QtSql/private/qsqlcachedresult_p.h: Нет такого файла или каталога
компиляция прервана.
make: *** [main.o] Ошибка 1


уже вторые сутки бьюсь побороть не могу.
Litkevich Yuriy
Цитата(academ1c @ 8.7.2013, 3:10) *
QtSql/private/qsqlcachedresult_p.h: Нет такого файла или каталога компиляция прервана.
ну нет у тебя инклюдов нужных.
раз уж ты скачал исходники Qt, то лучше конечно Qt этой версии и собрать.
Но можно попробовать обойти эту часть.
Есть Перл-сценарий syncqt (где он лежит в Лине я не знаю) в Винде он лежит каталоге %QTDIR%/bin
Для его корректной работы нужно чтобы переменная окружения %QTDIR% указывала на каталог с Qt (Опять про Линь ничего не знаю, так как там всё валяется по разным углам, так что сам ищи).

syncqt просматривает все исходники и на основе них собирает каталог %QTDIR%/include (в винде), к которому идут все зависимости плагинов и собственных программ.
academ1c
Так плагин собрался, даже проинсталился.
Все нормально. Загружен.
Но при тестовом примере вываливает ошибку.

qmake "INCLUDEPATH+=/opt/firebird/include" "INCLUDEPATH+=/opt/qt-4.8.5/include" "LIBS+=-L/opt/firebird/lib/libfbclient.so" ./ibase.pro

 make && make install


Вообще без проблем проходит.
Создаю тестовый пример.

#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QDebug>

int main()
{

    qDebug() << QSqlDatabase::isDriverAvailable("QIBASE");

    QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE");
    db.setHostName("192.168.65.151");
    db.setDatabaseName("d:\\db_test\\PM3_SHOP7.GDB");
    db.setUserName("sysdba");
    db.setPassword("masterkey");
    db.open();
    qDebug() << db.lastError().text();

    return 1;


}


Если не подключаться к базе данных, то все чики пики.
Стоит только добавить строчку подключения, ребилд и run. И вываливается следующая ошибка в дебаге.
Может кто знает ?

Starting /home/condor/test-build-desktop-Qt_4_8_1___PATH_____________Release/test...
true
/home/condor/test-build-desktop-Qt_4_8_1___PATH_____________Release/test: symbol lookup error: /usr/lib/x86_64-linux-gnu/qt4/plugins/sqldrivers/libqsqlibase.so: undefined symbol: isc_attach_database
/home/condor/test-build-desktop-Qt_4_8_1___PATH_____________Release/test exited with code 127


В общем такая вот ситуёвина, куда дальше копать ?
Система стоит Ubuntu 12.04 - 64bit, Firebird 2.1.5 ставился из тарбола (в убунте 2.5, не совсем подходит), Qt 4.8.1 (родной), плагин компилялся в версии 4.8.5 так как нет возможности достать 4.8.1, уже старая и в архиве нет, только 4.8.5
Litkevich Yuriy
я думаю что проблема в разных инклюдах/бинарях.
Нужную тебе версию смотри тут: http://download.qt-project.org/official_releases/qt/4.8/

.zip или .tar.gz
academ1c
Цитата(Litkevich Yuriy @ 8.7.2013, 19:42) *
Нужную тебе версию смотри тут: http://download.qt-project.org/official_releases/qt/4.8/

Нет, я запарился, конечно же есть в репах убунты версия 4.8.1 сорцы.
Выкачал -
apt-get source qt4-x11
Перекомпилял заново плагин.
Но ошибка осталась та же. Прискорбно. Даже ума не приложу (.
Litkevich Yuriy
Ну я не знаю что тебе посоветовать. Разве что посмотри в инклюдах FB упоминание isc_attach_database и тоже самое в исходниках плагина, может сигнатуры не сходятся.
academ1c
В общем я так понял покопавшись, что оно не слинковано с библиотекой.
Посмотрел параметрыВсе разобрался.
Ошибка была в параметре -L
в строке
qmake "INCLUDEPATH+=/opt/firebird/include" "INCLUDEPATH+=/opt/qt-4.8.5/include" "LIBS+=-L/opt/firebird/lib/libfbclient.so" ./ibase.pro

После этого все чудненько работает ) Спасибо огромное за участие.
Убрал этот параметр и все откомпилялось чудненько и работает. Юрий спасибо за участие.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.